On 26 February I went to the University of Bern with my colleague Arnaud Berbier to follow an introductory conference on Ceylon, a new language inspired from Java. Unfortunately not presented by Gavin King, the leading developer of Ceylon at Red Hat, the project still was well introduced by Stéphane Epardaud. He is a long-time open source user and contributor, who is now working on the Ceylon compiler:
“Because if you’re not writing a compiler you’re not doing proper programming.”
Well, the show started and in less than one minute we knew we were in an open source project: “From scratch”, “fast programming”, “more readable than Java that you don’t have to comment it”, oh wait…
After our first heart attacks he began to explain what Ceylon is and why they wanted to develop a new language. Ceylon is a language running on a JVM, on Node.js or in a web browser. It has been promoted as a “Java killer” and directly disclaimed by Gavin King:
“First, I never billed this as a Java killer or the next generation of the Java language. Not my words. Ceylon isn’t Java, it’s a new language that’s deeply influenced by Java, designed by people who are unapologetic fans of Java. Java’s not dying anytime soon, so nothing’s killing it.”
Gavin King is leading the development of Ceylon at Red Hat. He is the creator of Hibernate (persistence solution for Java) and has also contributed to the Java Community Process standards as Red Hat representative for the EJB and JPA specifications and as spec lead of the CDI specification. So Ceylon may be promoted by Red Hat and this why it may have a destiny (maybe like Sun?).
But why building a new language which is like Java? Stéphane Epardaud explained that most of the developers contributing to the Ceylon project were designing and building frameworks and libraries for java and they were frustrated by the limitations they encountered. Not only from the language itself but from the JVM, too. Ceylon is built with an eye to the strength and weaknesses of Java and with the goal to make it easy to learn, read, develop, and maintain.
Then Stéphane Epardaud displayed a first piece of code. There were instructions in the class’ body, parameters in the class signature, no getters/setters, no constructor, no overloading, and the possibility to inherit from several classes at the same time. It was totally different than Java and that was what we were looking for.
The program is structured in modules which are built of packages, then source files. Here is a sample of code:
We will not detail all available features of the syntax of this new language here. You can easily find it there: http://ceylon-lang.org. The presentation rapidly showed some of the features and brought us some misunderstanding and doubts about the readability of a huge application built upon Ceylon. But with one hour length, the conference cannot provide as much information as the website which is well done for an open source project. You can find explanations of each features and how to use them with examples. In addition, you can figure out why they did it like this.
Programs run in the JVM for the time being and they can be written in command line, thanks to an Eclipse plugin which opens a dedicated perspective or in a web browser IDE which is being developed. The project is still a “baby” and it is coming to the 0.5 version (Milestone 5). A lot of work has still to be done; a compiler is working but the syntax error explanations are still ambiguous. Lots of projects around Ceylon are started and a community is growing; open source communities are famous for fast development and this language deserves to grow. We strongly hope that Ceydevs (Ceylon’s contributors) will not just build frameworks or APIs as fastly as possible to reduce the gap with Java. But we hope they will build strong modules with clear and limpid documentations in order to lay the foundation of a strong alternative Java language.