Red Hat’s JVM language Ceylon hits first milestone

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 modules.ceylon-lang.org
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.
Leave a Reply