Red Hat can't be serious. The leading Linux vendor can't really be planning to develop a brand-new programming language and SDK to compete with Java -- can it?
Apparently it can, although it seems as though Red Hat didn't really want you to know it yet. Instead of the customary press release, Red Hat's announcement came in the form of a pair of presentations by Red Hat engineer and JBoss fellow Gavin King, delivered at the QCon enterprise software conference last week in Beijing. King's slide decks quickly went viral on the Web, however, leaving the broader software development community both intrigued and perplexed.
[ InfoWorld's Paul Krill weighs in on why Ceylon is no Java killer. | See InfoWorld's picks for the top 5 JVM scripting languages. | Keep up with the latest Java techniques with the JavaWorld Enterprise Java newsletter. ]
Intrigued, because King is no dummy. As the creator of the Hibernate Java persistence framework, he knows Java inside and out. So if he says there are fundamental problems with Java that render it inadequate for modern software development, folks tend to listen.
Perplexed, because of all the things Red Hat could be spending its time, energy, and money on, reinventing the wheel -- particularly a wheel as large and complex as Java -- seems like the least helpful, not to mention the least likely to succeed. What on earth is Red Hat thinking?
Ceylon: Java redux
The media was quick to jump on the idea that Red Hat was cooking up a "Java killer," which King was just as quick to deny. Still, the language's name, Ceylon, is itself something of a giveaway. Java and Ceylon are both islands, but while Java is well-known for its coffee, Ceylon (now Sri Lanka) is famed for its tea -- get the picture?
That's not to say the Ceylon programming language diverges completely from Java. On the contrary, it relies on the Java runtime environment. Ceylon compiles to Java bytecode, which can then be executed by the JVM of your choice.
Where the languages differ is largely in matters of syntax. Although he was obviously once a fan, King believes Java has failed to keep pace with developments introduced by more modern programming languages, such as C#. He thinks it's high time someone gave the Java language a thorough once-over, throwing out the bad and addressing long-standing failings, such as support for high-order functions and improved type handling. He's done that, and he calls the result Ceylon.
But the Ceylon project aims to do more than just revamp Java's grammar. "Much of our frustration is not even with the Java language itself," writes King. "The extremely outdated class libraries that form the Java SE SDK are riddled with problems. Developing a great SDK is a top priority of the project."
You heard that right: The Ceylon project will produce not just a new language, but a new set of class libraries written in and for that language. There will be no inconsistencies here, no dropping back into Java syntax when you need to use an item from the standard library. Ceylon programs will run on the JVM, but they will be written using 100 percent Ceylon.
Did anybody order a new programming language?
But while such dedication and thoroughness is admirable, it still doesn't answer the obvious question: Why? Or at the very least, why now?