Grailsって凄いと改めてGAE/J対応で思う
Google AppEngine/Java対応のGrails 1.1.1が先日でました。GORMが対応してないことを除くと、大きな機能制限もなくすんなり動いていて、驚かされます。驚きますよね? 驚くべきなんですよ!! GAE/Jの制約を考えると、フルスタックフレームワークであるGrailsが1月たらずですんなり動いてるということは驚くべきことです。
Serivceでの宣言的トランザクションが動いてるかどうか、とかは未検証ですが、トランザクションが効くかどうかはEntity Groupの問題なのでその範囲で動いてもおかしくない。
Grailsは、こけおどしや建前ではなく、実態としてプラグインできれいに機能が分割されているので、hibernate pluginを1コマンドではずせて、そのレイヤをJDOにして(JDOのクラスはGroovyで書いて通常のようにアノテーションすればよい*1)しまっても、破綻なくCRUDも動きアプリがかけるという。認証とかももともと別プラグインだし、今後はGoogle AppEngineの認証に対応したプラグインが出てくるでしょう。Memcache Service(JCache)用のプラグインとかも待ち焦がれます。*2
大事なことですので二度言いますが、フルスタックフレームワークであるGrailsがすんなりとGAE/Jに対応できたのは凄いことです。優れたアーキテクチャの実証といえるでしょう。JBossやGlassFishがGAE/J上で動くのでしょうかと問いたい(動いたりしてね。まああれらはJavaEEだからラインが違うともいえるけど)。
しかも、専用のバージョン(「Grails for GAE/J」とか)ではなくて、メインラインで対応してしまうという。
Grailsだと実行時間オーバーヘッドがかかって余分にCPU時間を食ってしまうんじゃないか、とか、そういう突っ込みはまた別の話。別のときにすることにしよう・・・