Ceylon M1 - Newton lands

Red Hat’s JVM language Ceylon hits first milestone

Chris Mayer

Release is ‘major step down the roadmap towards Ceylon 1.0’

Following November’s proper unveiling by Red Hat’s Gavin King of their new JVM language, the minds behind Ceylon have released the first part of their masterplan.

The first official release includes the Ceylon command line compiler, documentation compiler, language module, and runtime, and presents a major step down the roadmap toward Ceylon 1.0 according to King.

Ceylon has been designed to effectively cut the fat of Java and create a ‘familiar and readable syntax’ that is meant to make any developer feel at home, making it easy to pick up and use. Ceylon is meant to be as all-encompassing as possible as modules can be executed on any virtual machine (although favouring the JVM), aiming to eliminate bottlenecks, complex modularity and cumbersome  

The language has faced fierce criticism however as some don’t see its place within the JVM with Scala already there. Some have even called it ‘a Java killer’ rather than the next generation of Java as King had intended. At to that the fact that since Ceylon was announced, many competitors have emerged jostling for a similar space -  Kotlin, Go, Dart, Rust for example…

It’s been tough for King to persuade some of Ceylon’s benefits but the first release, Newton could change your mind. King states that this first official release ’has essentially all the features of Java except enumerated types, user-defined annotations, and reflection.’ But even with this close tie to Java, Newton says it does the following better :

  • JVM-level primitive types are ordinary classes in Ceylon
  • type inference and type argument inference based on analysis of principal types
  • streamlined class definitions via elimination of getters, setters, and constructors
  • optional parameters with default values
  • named arguments and the “object builder” syntax
  • intersection types, union types, and the bottom type
  • static typing of the null value and empty sequences
  • declaration-site covariance and contravariance instead of wildcard types
  • more elegant syntax for type constraints
  • top-level function and value declarations instead of static members
  • nested functions
  • richer set of operators
  • more elegant syntax for annotations
  • immutability by default

Support for the following language features is not yet available, just yet:

  • first-class and higher-order functions
  • comprehensions
  • algebraic types, enumerated types, and switch/case
  • mixin inheritance
  • member class refinement
  • reified generics
  • user-defined annotations and the type safe metamodel

In terms of the SDK, currently the only module available is the language module ceylon.language,

Several issues aimed to be resolved in the next release with Java interoperability problems being a top priority fix. This release of Ceylon includes support for local module repositories. Support for remote repositories and the shared community repository will be available in the next release. We can also expect an Eclipse-based IDE in the second milestone, where users may make use of Ceylon’s static type system to their heart’s content

You can find the code at Github whilst Ceylon’s site does an excellent job with all the documentation you need to find out more.

Inline Feedbacks
View all comments