スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

App Engine: Now Serving Javaを見たメモ

App Engine: Now Serving Java

  • Servlet API
    • HTTP Sessionは永続化され、どのクラスタノードからでも同じセッション内容を取得できる
  • App Engine API jar
    • パッチリリースのアップグレードは自動的に行われ、再デプロイの必要はない
  • ApiProxy
    • APIコールはApiProxyを経由して実行される
    • 個々のリクエストの情報(ThreadLocal)を保存する
    • APIコールをAOPのようにインターセプトして、その前後に追加処理を挿入できる
      • ログ記録など
    • クラスパス変更(JAR入れ替え?)だけで、APIのサービスプロバイダーを変更できる
      • unit testに便利
  • 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スタッフがデータを閲覧しないためのセキュリティポリシーはあるか?
      • 社内のポリシーがある。