Red Hat is developing a new Java Virtual Machine-based programming language intended to overcome the limitations of Java itself. Unveiled earlier this week by lead developer Gavin King at a conference in China, the effort is known as Project Ceylon.
Early reports of King's presentation in Bejing painted Project Ceylon as a "Java killer", but King has played down the characterization. "I never billed this as a Java Killer or the next generation of the Java language," King says in a blog post. "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."
But he does say that Ceylon is intended to ease the frustrations that he and other developers have long experienced with Java. "We've been designing and building frameworks and libraries for Java for 10 years, and we know its limitations intimately. And we're frustrated," he says. "Much of our frustration is not even with the Java language itself. 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."
In his China presentation, King says that the Java SE SDK was designed in haste, that it was never "properly modernized", and that it "still has an experimental, work-in-progress feel about it".
Another priority of the Ceylon project is to create a Java-based language that defines user interfaces and structured data using a typesafe, hierarchical syntax. "Java is joined at the hip with XML, and this hurts almost every Java developer almost every day," reads King's China presentation (39-page PDF/471 KB). "There is simply no good way to define a user interface in Java, and that is a language problem."
At the moment, the project amounts to little more than a specification. A compiler has not been released. But when the language arrives, it will run in the Java Virtual Machine. According to King's presentation, it will include static typing, automatic memory management and safe referencing, first-class and high-order functions, declarative syntax for defining user interfaces and structured data, and built-in modularity.
What's more, King says, the team will strive to make the language easy to learn and understand.
Some have described the project as an effort to rewrite Java from scratch, but King says this is not the case, explaining that Red Hat intends to reuse large amounts of existing code from Java. "Just think of what's reusable from Open JDK, JBoss, and Eclipse," he writes. "It's not a requirement that the entire SDK, compiler, and IDE be implemented in Ceylon. And it's not an enormous undertaking for a company of Red Hat's size. And, of course, we don't want to do this on our own. A project like this isn't even interesting unless it's a community effort." ®