Red Hat released a website dedicated to its new programming language Ceylon, a Java Virtual Machine-based language that aims to deliver solutions for some of the drawbacks of Java. The website provides links to access Ceylon code through GitHub, even though the language has not been formally released to the public. Additionally, the Ceylon website contains directions for downloading Ceylon’s Integrated Development Environment (IDE), ahead of the official release expected to arrive upon completion of the Ceylon Project’s first milestone.
Red Hat developer Gavin King provided the first sustained elaboration on Ceylon in April 2011 at QCon Beijing, the Enterprise Software Development Conference. In his keynote address at QCon, King noted that Java provided an exemplary combination of virtual machine execution, automatic memory management and safe referencing, static typing, lexical scoping and readable syntax. Moreover, King described Java as easy to learn, robust and illustrative of a culture of openness with a “huge tradition of developing and sharing reusable code (frameworks, libraries).”
However, King’s keynote remarked upon the importance of an alternative to Java by noting that “after ten often-frustrating years developing frameworks for Java, we simply can’t go any further without a better solution for deﬁning structured data and user interfaces for the following reasons”:
• The interdependence of Java with XML
• The difficulty of defining a user interface in Java
• Lack of modular solutions and reliance instead on multiple platforms
• Lack of support for first class and higher-order functions
• Difficulty of meta-programming in Java
Ceylon’s syntax features attributes that differentiate it from Java such as inherent modularity and a declarative syntax for defining user interfaces, structured data and hierarchical structures. According to its website, Ceylon positions itself in relation to Java and C# as follows:
Ceylon is deeply influenced by Java. You see, we’re fans of Java, but we know its limitations inside out. Ceylon keeps the best bits of Java but improves things that in our experience are annoying, tedious, frustrating, difficult to understand, or bugprone. Furthermore, Ceylon makes it much easier to write generic code (frameworks or libraries), or to naturally describe treelike structures (especially user interfaces). Of course, Java isn’t the only language with good ideas, so Ceylon looks for inspiration in other language families, in everything from Smalltalk to ML.
Despite its differences from Java, Ceylon is intended to appeal to Java developers who can migrate to the language with speed. Ceylon is one of the most recent languages to run atop the Java Virtual Machine alongside JRuby, Scala and Ruby.