Google Web Toolkit(GWT)とXtendについて学びます。
GWTは日本での知名度はいまいちで、日本のGooglerの中でも知らない人がいそうなくらいマイナーなJava to JavaScriptコンパイラです。
最近では開発元のGoogleが開発への投資をstep downしてコミッティーに開発のイニシアティブを移譲してしまったほどです。(そしてみなさんご存知?のDartを売出中ですね)
そんな陽の目の見ない技術に目を向けることが果たして有益なのか?
GWTerの不安は尽きません。
しかしGWTの開発を主導することになったコミッティーのメンバーはGoogle, Sencha, RedHat, JetBrainsなど、なかなかどうして有名どころの企業が集まってます。
もしかしたらどこかで大きなブレイクスルーができるかもしれません。
それに日本ではいまいちですが、海外ではそれなりに使われてるっぽい雰囲気は感じます。Google Groupの流量もありますし、GWTの実績って世界的に見るとなかなか馬鹿になりません。
日本では総スカン状態ですが今すぐ消えることはなかろうかと思います。
そんなことよりXtendですよ、Xtend。
GWTの一番ダメなところはJavaコードしか対応してないところです。JVMのバイトコードをJavaScriptにエンコードするのは至難だったのかJavaコードしか変換できないのです。
これはアホくさい。とてもアホくさい。
今時趣味でJavaのコードを書いてる話なんてそうそう聞きません。みんなScalaやGroovyでブイブイ言わせてるでしょう。
でもダメなんです。ScalaやGroovyではGWTできないんです!だってJavaのコードしかコンパイルできないのだから!ScalaやGroovyが出力するバイトコードを完全な形で.javaに逆コンパイルできれば良いのでしょうけど、そんなことにコストをかける価値は見いだせないかと思います。
そこでXtend!Xtendが他のJVM言語と一線を画するのは.javaのコードを生成するコンパイラ言語だと言うことです。
はっきり言ってXtendに言語としての魅力はそんなに感じませんが、Javaプログラミングに辟易するかなりの部分を簡潔に解決する仕組みを備えています。プロパティ、拡張メソッド、ラムダ式、それなりの型推論。まさしくBetter Javaとして備えていて欲しい要素がいろいろ詰め込まれています。
そしてEclipseで開発すると、生成される.javaもリアルタイムに見れるので、どんなふうに動くのか、確認しながら使うこともできたりします。
最近でたversion2.4ではActive Annotaionsというメタプログラミングをするための強力なツールもオープンβとして登場しました。これが荒削りながらいろいろおもしろいことができそうな可能性を秘めています。
しかしXtendもGWTと同じく日本での知名度が足りない。これでもか、というくらい足りない。なぜだ。GWTとXtendを使えばフルAjaxのWebアプリケーションを型案全型安全に簡潔に書けるというのに、もっと世の中で普及してもよいはずではないか。CoffeeScriptよりもDartよりもTypeScriptにだって引けは取らないはずではないか。
そんなことを、みんなで考える勉強会になる予定です。
※ Androidは知りません。