「今度はホントの話です」で始まった今回の発表は、「FORTRANをサポートした」というエイプリルフールのジョークにたいして選んだ言葉。
以前からの噂であったとおり、GAEでのJavaサポートとそのほかの機能追加についてテストサポートが開始されました。とりあえず、ひととおりの機能については、Google App Engineのドキュメント「Getting StartedのJava版」をみると英語の苦手な僕でもコードがたくさんあるので分りやすかったです。
ServletとJSPでWebアプリケーションを作れるのはとても魅力的。Javaをサーバで動かして公開となると、結構な金額を払わなければできなかっただけに、このプラットフォームはJava開発者に朗報です。
ちょっと興奮気味で、まだよく読み切れていないのですが、
- Webコンテナ上で動くServletやJSPを作成可能(普通のJava Webアプリの作成と同様)
- Python版にあるようなGoogle用API群(Memcache, URL Fetch, Mail, Images, Google Accounts)は同様にAPIとして提供。
- Python版でのDataStoreみたいのは、JDOかJPAを使って利用可能。
sandboxとして、
- ファイルシステムのアクセス禁止(Datastore使え)
- ソケットの利用禁止(URLFetch使え)
- サブプロセス起動やスレッド生成ダメ
- カスタムクラスのローディングOK(JARライブラリ組込可)
とあり、Python版みたいに「フレームワークが提供され、その上で動くアプリを作る」のかと思いきや、生のServletのコードが使えるようです。(Java EEのWebコンテナというフレームワーク上で動くという意味では同じですが。)かなり自由度が高いと思います。
ファイルシステムアクセスはだめなので、テンプレートファイルを読み込むようなWebフレームワークはダメでしょう。ただクラスパス内においてリソースとして読み込むやり方ならOKです。
(Wicketはキャッシュみたいなの作ったと思うからダメ?Strutsならいける?だめかstruts-config.xmlが読めない…)
※2009/04/09追記:struts-configなどの設定リソースファイルは読み込みだけなので、appengine-web.xmlに記述を加えれば使えました。struts(1.x系)もexample程度ならば動作確認できました。
ログ出力はファイルIOがだめなんですが、java.util.loggingを使っているんであればGAE管理下でログ出力可能。
そのほかに、Eclipseのプラグインが用意されていて、プロジェクトの作成や起動を支援してくれる。あとJava版とは関係ないかもしれないが、cronの仕組みも提供されていて定期実行なども実装可能。cron機能も自前サーバーじゃないとなかなか連続した設定はできなかったので、bot作成などに
サーバサイドのエンタープライズ向けだとJavaがよく使われていますが、そういうのをGAEに乗っけるってのもすぐ出きそう。加えてされをSaaS的に提供するのも増えてきそう。
Eclipseプラグインは、ダウンロードに出遅れたせいか、なかなかダウンロード出来なかった。なんどかキャンセルしてやり直して、なんとかダウンロードできました。