Xtendとは
Eclipse Xtext プロジェクトで開発されている新しい言語?
Eclipse Xtext は DSL の開発を容易にするための各種のプラットフォームを提供しており、Xtext に 簡素な DSL の文法記述を与えるだけで、文字通り数クリックで、Eclipse によるコンテント・アシスト、シンタクス・ハイライト、アウトライン・ビューを備えた エディタやコードジェネレータが作成できます。これらの機能を利用して作られているのが Xtend です。
http://www.eclipse.org/Xtext/xtend/#
Xtendの特徴は
xtend は、Java仮想マシン上で実行される静的型付けのプログラミング言語です。まぁ、簡素な文法で書けるJavaです。イメージとしてはGroovyとScalaの間に位置する感じでしょうか。
- 高度な型推論
- Javaジェネリクスのフルサポート
- クロージャがある
- 演算子オーバーロードが可能
- 暗黙のキャストと型に基づいた強力なスイッチ式
- 全てが式
- テンプレート式
- 拡張メソッド
- 簡素なプロパティアクセス
- 別名ポリモーフィックなメソッド呼び出し
- Javaコードへの変換
そして一番のポイントは、Eclipseによる強力なIDE環境が提供される点です。
Xtendのインストール
Eclipse の更新サイトからインストールするだけです。
http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/
チュートリアルは以下のような感じになっています。
コンパイルエラーが出ていたら、プロジェクトのクリーンを実施。
xtend-genフォルダ内に、生成されたプレーンなJavaファイルが出来ます。
チュートリアルの冒頭を見てみると、こんな簡易のコードがあります。
class Xtend01_HelloWorld extends TestCase { def void testHelloWorld() { Assert::assertEquals('Hello Joe!', sayHelloTo('Joe')) }
そして xtend-gen フォルダ内には xtend コードから作成された Java コードがあり、該当箇所は、以下のように生成されています。
@SuppressWarnings("all") public class Xtend01_HelloWorld extends TestCase { public void testHelloWorld() { String _sayHelloTo = this.sayHelloTo("Joe"); Assert.assertEquals("Hello Joe!", _sayHelloTo); }
つまり、xtend は Java コード生成のための DSL な訳です。と、まぁ昔からよくあるツールと言えばそれまでですが、Xtext を最大限に利用した Eclipse とのシームレスな結合により、強力な IDE サポートが得られる点がアドバンテージであり、DSL をプログラム言語と呼べるまで上手く昇華させています。
さて、文法編は次回、