App Engine: Now Serving Java
- App Engine API jar
- パッチリリースのアップグレードは自動的に行われ、再デプロイの必要はない
- ApiProxy
- APIコールはApiProxyを経由して実行される
- 個々のリクエストの情報(ThreadLocal)を保存する
- APIコールをAOPのようにインターセプトして、その前後に追加処理を挿入できる
- クラスパス変更(JAR入れ替え?)だけで、APIのサービスプロバイダーを変更できる
- Flexible Sandboxing
- きめ細かなサンドボックス制御で、安全性を確保しつつ、できるだけ多くの既存コードを動かせる環境を提供する
- app engineで使える既存ライブラリ
Dependency Injection Frameworks
- Guice, Spring, etc.
Aspect Oriented Programming
- AspectJ, Spring AOP, etc.
Web frameworks
- Google Web Toolkit, Tapestry, BlazeDS (Flex), etc.
- Grails (Just Announced!)
Alternate JVM languages
- Scala, Rhino, JRuby, Jython, Clojure, Groovy, PHP, etc.
- DevAppServer
- ローカル環境で各APIをエミュレート
- ローカルディスクでDatastore
- Memcache
- URL fetch
- 近日リリース予定
- Async API
- Task queues
- 全文検索
- メール受信
- XMPP
- 大規模ファイルのアップロードとダウンロード
- Datastoreのエクスポートツール
- Questions
- (高負荷時などに)アプリが新しいノードにデプロイされたときの遅延は?
- アプリが使うライブラリ規模にもよるが、数100ms〜数秒程度。
- Java版とPython版の性能の違いは?
- きちんとした比較はしていない。使い方によって異なるが、あまり大きな違いはない。GAE以外の環境で両者を比べた場合と同じ程度。
- Cometサポートは?
- 現状ではレスポンスのストリーム送信に対応しないため、Cometは使えない。現状、Cometサポートはロードマップにはないが、XMPPはサポート予定なので、プッシュ通信は実装できるようになる。
- どんなJVMを使っている?
- サンの1.6版JVMをそのまま使っている。アプリのロードを速くするため(Server VMではなく)HotSpot Client VMを使っている。
- googleスタッフがデータを閲覧しないためのセキュリティポリシーはあるか?