Jetty 7.0 のリリースが本日アナウンスされ、Maven リポジトリのように、新しいホームである Eclipse.org からダウンロードできるようになった。このバージョンは、Jetty 6.0 のメジャーバージョンアップであり、多くのパフォーマンス改善だけでなく重要なコードベースの再編も行われている。
InfoQ は今年のはじめに Jetty から Eclipse への移管を取り上げた。今後も Jetty 6.0 はサポートされる予定だが、新しい機能は 7.0 をターゲットとする。Jetty 6.0 と 7.0 は両方とも Servlet 2.5 API をベースにしている。実験的な Jetty 8.0 は来年完成予定の Servlet 3.0 API に追随している。
Jetty 6.0の主要な機能の一つは、(Bayeux プロトコルとしても知られる、CometDで利用されるような)長く生存するクライアント接続を可能する、Servlet 層における継続(Continuations)の導入であった。以前 InfoQ は、Jetty 6.0 リリースと(オーバヘッドに繋がる)多くのスレッドに妥協することなしに、多くの同時ユーザへスケールアップするためにどのように使われるかを示す継続のデモを取り上げた。
この技術の成功は、サーブレット 3.0 ドラフト仕様における Jetty の非同期サーブレット提案に通じた。Jetty 7.0 は、これらの継続を Servlet 3.0 実装でも変更せずに動作できる方法で実装している。Jetty でない Servlet 2.5 実装においては、(非同期でなく、ブロックへと)フォールバックする。
Eclipse へ移動してから、コードはリファクタリングされた(org.mortbay
プレフィックスは org.eclipse
に置換された)。そして一枚岩の server.jar
は、構成要素のバンドル(jetty-server.jar
、jetty-servlet.jar
、jetty-io.jar
その他)に分割された。モジュール性の副次的な利点の一つは、異なるバンドル間での関心の分離がより強調されることである。この事は、よりいっそうの埋め込みへのモジュールアプローチに繋がる。今や Jetty は、有効な OSGi バンドルのセット(と良く定義された依存性) であるが、OSGi 実行環境以外でも動作することができる。
移行ドキュメントは、パッケージの違いについて説明している。多くのクラス名が変更されたので、Jetty 7.0 の新しい名前を使用するように設定ファイルを変換することのできる自動ツールがある。今後パッケージがリネームまたはリパッケージングされることはあまりないだろうから、将来のアップグレード(例えば Jetty 8.0)は、もっとシームレスになるだろう。
古い Jetty 6.0 に基づいた、cometd-jetty プロジェクトは、Jetty 7.0 の cometd-java に基づくことになり非推奨となった。現在、cometd-java は CometD.org にある。多数の AJAX クライアントが提供する非同期な継続の利点を示すデモが利用可能である。それらはバックエンドサーバへの長時間生存している接続を作成するにもかかわらず負荷を向上しない。
最後に、Jetty のメーカである、(先月 Intalio に買収された) Webtide もまた Jetty-Hightide をアナウンスした。オープンソース提供は、以下のような多数のオープンソースのスタックを含んでいる。
- Glassfish の JSP
- atomikos からの JTA
- Maven プラグイン
- Ant 統合
- Spring 設定
- Setuid
ダウンロード可能な現在のバージョンのHightideは、今のところ Jetty 6.0 に基づいている。しかし Jetty 7.0 を付属した、改定されたバージョンは近い将来利用可能となるだろう。
Jetty は Apache ライセンス 2.0 と同じように Eclipse パブリックライセンス 1.0 を含んでいるデュアルライセンスで www.eclipse.org/jetty から利用可能である。さらに、Jetty パッケージは Linux システムのための RPM や Deb パッケージのような他プラットフォーム用に Codehaus からも利用可能である。