Gavin King of Red Hat/Hibernate/Seam fame recently unveiled the top secret project that he has been working on over the past two years, a new language and SDK designed to replace Java in the enterprise. The project came out of hiding without much fanfare or publicity at QCon Beijing in a keynote titled "The Ceylon Project - the next generation of Java language?". It took a fair amount of Google translate for me to get to the relevant slide decks, (Embedded below) but once I found them, the information was all there in plain English.According to the slides, the Ceylon Project aims to create a programming language and SDK for business computing, designed with an eye to the successes and failures of the Java. It is built to run on the JVM, uses static typing, and supports high-order functions, while maintaining a strong focus on being easy learn and easy to read.
If you ask, me it sounds like just what the doctor ordered. Java is great, it is an extremely popular, open(ish), robust, readable language that as a ton of superb libraries. However it is burdened by its legacy and cant seem to evolve enough to match the levels productivity and fun seen in more recently developed languages like Groovy, Python and C#, with C# being the most apropos comparison due to its statics typing and enterprise focus.
I've been eagerly waiting on the tech media to devour the details of this controversial effort and spew forth a riveting combination of analysis and hypothesis. Up till now, there has been nothing but crickets chirping so I figured I'd get the ball rolling with a layman's blog post.
What I like
- The overall vision: learn from Java's mistakes, keep the good, ditch the bad
- The focus on readability and ease of learning/use
- Static Typing (find errors at compile time, not run time)
- No “special” types, everything is an object
- Named and Optional parameters (C# 4.0)
- Nullable types (C# 2.0)
- No need for explicit getter/setters until you are ready for them (C# 3.0)
- Type inference via the "local" keyword (C# 3.0 "var")
- Sequences (arrays) and their accompanying syntactic sugariness (C# 3.0)
- Straight-forward implementation of higher-order functions
Things that may grow on me
- The new assignment operator ":="
- The new string interpolation syntax
- The new types: Natural, Numeric, etc
- Classes, Methods and Attributes looking almost identical...can't decide if that is good or bad
Things that make me go hmmm
- All the new keywords for existing concepts: shared, satisfies, assign, variable, local
- The simplification of the public/protected/private access/visibility levels
- The Smalltalk-like syntax for inline functions as parameters
Things I didn't fully get
- The Closure and block structure examples had some things that were a little puzzling. e.g. the "name" attribute of type "Name" returns "Name(“Gavin”, “King”)"
- Some of the more intricate details of the type system..
While I am still waiting to hear some opinionated analysis from people who study theses things for a living, I am cautiously optimistic about the direction things are headed. I think the Java/Open Source/Programming world needs a language like this. Nevertheless, there are a number of factors that could affect whether or not the project gains momentum.
For one, while a lot of work has clearly gone into the language design, a production ready compiler and SDK a clearly still a ways off. That means that there is still a lot of work left to be done, especially if they plan to try and address the modularity issues that they claim Maven and OSGI have failed to solve. I would also love to see how Ceylon handles integration with existing Java code/libraries...smooth integration/compatibility is key for any pretender to the throne.
Additionally, I don't think Red Hat can do it alone, it is going to take buy in from the Java/Open Source community to really get things going. Google and Apache are two names that spring to mind, but that then immediately raises the question about where Ceylon comes into play in the ongoing power struggle between Oracle, Google and Apache over the rights to use Java without limitation. Could Ceylon become a key piece in the puzzle and spur an influx of supporters? Or will it simply raise Oracle's ire and force IBM to keep its distance?
I for one welcome our new
Update: Gavin has posted a response highlighting two reasons for not reusing one of the many existing languages targeting the JVM (1) A built in solution for "defining user interfaces and structured data using a typesafe, hierarchical syntax" i.e. less dependency on XML (2) "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."
Update 2: InfoQ has posted an article which includes a Q&A with Gavin King.
Embedded slides courtesy of devstonez
Introducing the Ceylon Project - Gavin King presentation at QCon Beijing 2011
View more presentations from devstonez
The Ceylon Type System - Gavin King presentation at QCon Beijing 2011
View more presentations from devstonez

