Earlier this week, the first milestone of Ceylon IDE was released, bringing an IDE to the Ceylon language, which saw its first milestone at the end of December.
Ceylon is a new JVM based language, chiefly sponsored by Red Hat and led by Gavin King (who was behind the well-known Java persistence layer Hibernate). It was announced at the sell-out QCon Beijing in April last year, with more details on the language at the time being revealed in an interview with Gavin.
The first milestone sees a release of a compiler for the language, which now has an official specification. Code can be compiled from Ceylon into bytecode and executed on a JVM. The roadmap gives a full overview of what is supported in the first release, with the second milestone aiming for Java interoperability.
Unlike many other JVM based languages, Ceylon aims for immutability by default. If a variable assignment is needed, the variable
keyword needs to be used to declare that the value may change; in addition, assignment for variables is done with :=
(to distinguish it from value assignment with =
). The goal is to more clearly highlight the difference between an immutable and mutable variable. The keywords are words (rather than symbolic) so as not to confuse those new to the language, although Ceylon uses satisfies
instead of implements
.
As with Scala, Ceylon provides an Option (also known as a Maybe) type, which permits a nullable type value. This type can be denoted with the short-hand T?
; otherwise, a type of T
denotes that there is a non-null value contained within. (This helps to use the type checker to guarantee that values are not null; a problem which Java has had and is starting to address with @NotNullable
and @Nullable
annotations. The introduction of null
. This has led to null
being described by Tony Hoare as the Billion Dollar Mistake).
Nowadays, however, no new language is complete without a corresponding IDE to go with it. Like the recently-released Scala IDE, Ceylon now has its own Ceylon IDE, also an Eclipse plugin. It comes with a compiler built-in, though code compiled with Eclipse can also be run with a standalone Ceylon compiler/runtime (and vice versa).
A full list of the features are shown at the IDE documentation page, including a separate page with many screenshots. The IDE can both run and debug Ceylon code in place, without needing any extra toolchains installed. A number of standard features are also available (such as TODO and outline views) as well as some Ceylon specific ones (such as Ceylon specific refactorings and quick fixes).
As it is an Eclipse-based plugin, existing tools such as EGit and Subclipse/Subversive give immediate hooks with existing developer toolchains. Although the code can be compiled from the ceylon toolset, plugins for existing build systems such as Ant and Maven are not yet available.
Finally, the code is available at GitHub Ceylon project as well as ready-made downloads at the download page.
Now that there is a release of Ceylon and a featured IDE available, what do you think of the language and its tools?