Herokuは、Java webフレームワーク であるPlay!を公開ベータとしてリリースした、と昨日アナウンスした 。Play!は、web開発に「クリーンルーム」アプローチを取り、様々な自ら課した制約にとらわれないようにすることを決めた。制約の中には、以下のものがある。
サーブレットコンテナとの互換性、JSPのサポート、標準のJava webアプリケーション レイアウトとの互換性、意味のないJavaやOO原理への準拠
そのような訳で、Play!は Ruby on Railsの「ビルドとデプロイ」モデルに従い、これまでの「パッケージと分配」モデルには従わない。
決まり文句のクラスやXML設定は不要である。フレームワークは、パッケージング方法に新鮮なアプローチを取っており、意味があるなら静的なコードを使う。例えば、コントローラのエントリポイントは、ステートレスで、オブジェクト指向ではなくHTTP指向なので、それらは、静的なメソッドとして実装されている。
先週リリースされたばかりの" Heroku for Java" のように、Play!はコンテナ無しのPaaSモデルをベースにしている。Play!アプリケーションは、ローカルに走ることができ、またシームレスに運用にデプロイできる。このために、デプロイのワークフローが単純になり、そして環境の差に起因するあらゆる問題がなくなる。
アーキテクチャの観点から言えば、Play!は Netty を使っている。これは、非ブロッキングのI/Oプロトコルライブラリで JBossチーム によって開発された。これは、継続ベースのプログラミングモデルを使って、リクエストの非同期処理をサポートしている。Play!はまた、share-nothing モデルを実装している。これによってステートフルなセッションは不可能なので、ノードを追加するだけで、容易に水平方向にアプリケーションをスケールアウトできる。
言語戦略の観点から、Herokuは、以下のように 説明している。
Javaは、複数言語が混じり合うプラットフォームの道における一里塚で、将来はもっと言語が増えます。将来の言語パックは、古いもの(Javaのように)から最新のもの( Clojure や Node.js)、公平に中間的もの(Rubyのように)まで広範囲に及ぶでしょう。我々はできるだけ包含することを望んでいます。言語の選択は開発者次第です。
WebアプリケーションもJavaの世界もクラウド アプリケーションプラットフォームによって、 破壊的な革新 を迎える時期に来ているのではないか?とHerokuは考えている。あなたの見解はどうですか?