First Milestone of Ceylon and Ceylon IDE
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
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
@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.
Now that there is a release of Ceylon and a featured IDE available, what do you think of the language and its tools?
Interesting new language
Is Ceylon driven by a certain programming paradigm or philosophy? Or is it meant to just generally address weaknesses that Java has from lack of updates?