uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

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時間を食ってしまうんじゃないか、とか、そういう突っ込みはまた別の話。別のときにすることにしよう・・・

*1:JRuby on RailsRubyでかいたモデルクラスにアノテーション引っ付けてJDOとしてたたけるかは不明。

*2:Groovyレイヤの話だけど[http://groovy.codehaus.org/modules/http-builder/apidocs/groovyx/net/http/HttpURLClient.html:title=HTTPBuilderもさりげなくGAE対応]してるし(cookie処理や302対応が私はうまくできず、結局低レベルAPIつかっちゃったのは内緒・・)。