Ceylon

Ceylon（セイロン）は、レッドハット社によって開発されたプログラミング言語およびソフトウェア開発キットである。この言語はJava言語をもとに作られ、Java仮想マシンで動作する。またJavascriptにコンパイルすることができる。
この言語とソフトウェア開発キットのプロジェクトは、Java言語とJava SEソフトウェア開発キットで見られた成功と失敗を踏まえた上で、。また、レッドハット自身は否定しているものの、業界のアナリストからは同プロジェクトはJavaを抹殺するためのものだと言われている。
言語の特徴.
言語はJava言語の構文のほとんど全てを受け継いでいる。下記は プログラムの言語版である。
void hello() {
 writeLine("Hello World!");
演算子の多重定義.
言語では、プログラミング言語で一般的に混乱の原因とみなされている演算子の多重定義の仕組みを提供していない。その代わり言語には、組み込み型のメソッドの省略形であるような演算子については多相性を利用できる仕組みがある。これは演算子の多重定義よりも安全で簡素な仕組みである。
インターフェース.
インターフェースは、構成要素の定義のみがあって実装が含まれていないデータ構造である。異なる実装をもつ異なるデータ型に含まれる構成要素を定義するのに便利である。全てのインターフェースは暗黙に抽象データ型になっている。
インターフェースは予約語 codice_1 を使ってクラスとして実装する。codice_1 の後ろに、複数のインターフェースをカンマで区切って書けば、複数のインターフェースを一つのクラスで実装することができる。言語のインターフェースでは、要素の定義だけでなく、一定の制限を満たすものであれば実装コードも記述することができる。インターフェースにはデータを初期化するコードを含めることはできないが、ミクスインであれば複数含めることができる。
shared interface Comparable<in T> {
 shared formal Comparison compare(T other);
 shared Boolean largerThan(T other) {
 return compare(other)==larger;
 shared Boolean smallerThan(T other) {
 return compare(other)==smaller;
 ...
継承.
言語のクラスは、Java言語のそれと同様、最大でひとつのクラスから実装を継承することができる。継承は予約語 codice_3 を使って宣言する。予約語 codice_4 を使えば、そのクラス自身を指定することもできる。
抽象クラスとは、実装の雛形としてのみ使うことができるクラスである。抽象クラスのインスタンスを作成することはできない。抽象クラスだけが抽象メソッドを持つことが許されている。抽象メソッドには、どんな実装コードをも与えることは出来ないため、そのメソッドは抽象クラスでないサブクラスによって上書きされなければならない。