Ceylonは、
レッドハット社によって開発された
プログラミング言語であり、
ソフトウェア開発キットです。この言語は
Java言語をベースとしており、
Java仮想マシン(JVM)上で動作します。また、
JavaScriptにコンパイルすることも可能です。
このプロジェクトは、
Java言語と
Java SE
ソフトウェア開発キットの成功と失敗を踏まえ、もし現代においてそれらを設計するとしたら、商用コンピューティング向けの言語と開発キットがどのようなものになるかを示すことを目指しています。
レッドハット自身は否定していますが、業界アナリストからは
Javaを置き換えるためのプロジェクトだと見られることもあります。
言語の特徴
Ceylon言語は、
Java言語の構文の大部分を受け継いでいます。以下に、
Hello World|Hello_worldプログラムのCeylon言語版を示します。
ceylon
void hello() {
print("Hello, World!");
}
演算子の多重定義
Ceylon言語では、
プログラミング言語で混乱の原因となりがちな演算子の多重定義の仕組みは提供されていません。その代わりに、組み込み型のメソッドの省略形であるような演算子については、多相性を利用できる仕組みがあります。これは、演算子の多重定義よりも安全で簡素なアプローチです。
インターフェースは、構成要素の定義のみを持ち、実装を含まないデータ構造です。異なる実装を持つ異なるデータ型に含まれる共通の構成要素を定義するのに役立ちます。全ての
インターフェースは暗黙的に
抽象データ型として扱われます。
インターフェースは`satisfies`キーワードを使ってクラスとして実装されます。複数の
インターフェースを一つのクラスで実装する場合は、`satisfies`の後ろにカンマ区切りで
インターフェースを列挙します。Ceylon言語の
インターフェースでは、要素の定義だけでなく、一定の制約を満たすものであれば実装コードも記述できます。ただし、
インターフェースにはデータを初期化するコードを含めることはできません。ミクスインを使用すれば、複数の初期化コードを含めることができます。
継承
Ceylon言語のクラスは、
Javaと同様に、最大で一つのクラスから実装を継承できます。継承は`extends`キーワードを使って宣言します。`this`キーワードは、そのクラス自身を指します。
抽象クラスは、実装の雛形としてのみ使用できるクラスです。抽象クラスの
インスタンスを作成することはできません。抽象メソッドを持つことができるのは抽象クラスのみです。抽象メソッドは実装コードを持つことができないため、抽象クラスでないサブクラスで上書きする必要があります。
リリース
- - 2011年12月20日:コンパイラの公開
- - 2013年11月12日:初のプロダクションリリースとなる1.0.0を公開
出典