GlassFish V3 runs on OSGi (by Jerome Dochez 4/11/08)

覚えてる方もいらっしゃると思うのですが、昨年 <a href="http://hk2.java.net/">HK2</a> を紹介した際、HK2 は OSGi と相性がよい環境で、いずれは GlassFish v3 を OSGi ランタイム上で動かすことが可能になると説明しました。<a href="http://weblogs.java.net/blog/ss141213/">Sahoo</a> のおかげでこのビジョンはついに完成し、オープンソースコミュニティで利用可能な OSGi ランタイムのひとつ、Apache <a href="http://felix.apache.org/site/index.html">Felix</a> の上で GlassFish v3 を動かすことが出きるようになったことをご報告できることを嬉しく思います。

実は、<a href="http://www.knopflerfish.org/">KnopflerFish</a> (もちろんこの名前は魚っぽくて好きです) も試していて、こちらもうまく動いたので、どの OSGi ランタイムも最小の労力でサポートできるだろうと思っています。

さて、ここでみなさんが疑問に思うのはおそらく、GlassFish のモジュールシステムとして、OSGi に移行するのか?ということでしょう。今や、はい、そうです、と私は答えることができます。OSGi について私たちが考えを変えた、と言う方もいるかもしれませんが、そうではないです。当初から、OSGi フレンドリーでありたいと常に言ってきましたし、このビジョンを実現しました。OSGi に対して業界のサポートが大きいことは明白ですし、GlassFish がこの盛り上がりの一部となれることは重要です。最終的にどの実装を使うかということについては、まだいくつかを実験している段階のため、コミットできません。次のような条件を満たす必要があります:

  • オープンソースであること
  • GlassFish の2つのオープンソースライセンスのうちのどちらかと、あと Java EE ライセンスとにフレンドリーであること
  • よいコミュニティ (フォーラム、メーリングリスト) があり、私たちの質問に答えてもらえること
  • バグ修正を戻せるよう、コミッタの存在

どの実装を選ぶにしても、この支持によってその実装は大きく加速するでしょう。なぜなら、私たちにはバグを修正し、機能を追加できるエンジニアはもちろん、OSGi ランタイムの全体的なパフォーマンスを向上させる Sun 最高のパフォーマンス専門エンジニアがいます。

Sahoo は数日のうちに私たちが採用したソリューションの技術的な詳細をブログに書いてくれると思いますが、少しここで紹介します。GlassFish はまだ、HK2 と OSGi の両モードで動かすことが可能です。いつまで HK2 モードを保守するか私には分かりませんが、今のところ、起動時間は OSGi (2 秒) に比べて HK2 (1 秒) の方がかなり速いです。HK2 の方が速いのは驚くことではありません。HK2 は OSGi の様に汎用的なモジュールシステムを意図していなく、v3 に向けかなり最適化しているのですから!

GlassFish のコードは OSGi ライブラリに全く (もしくは極めて少ない部分しか) 依存していません。私たちはそれら依存性の箇所を HK2 内に隔離し、OSGi ランタイム、もしくはモジュール管理ランタイムを変更することを、コードの変更なしにとても簡単にできるようにしました。HK2 プロジェクトは現在のまま継続し、単なるモジュール管理以上の機能を提供します。特に、次の機能は大きく使い続けます:

  • モジュール管理の隔離レイヤ
  • リポジトリを通じたモジュール管理 (OSGi R5 に入る機能)
  • 軽量コンポーネントモデル
  • 依存性注入
  • 設定管理

GlassFish v3 の OSGi バージョンを試したい場合は、<a href="http://download.java.net/javaee5/v3/releases/preview/glassfish-v3-preview2-b09.zip">こちら</a>から最新のバイナリをダウンロードするとよいでしょう。

これは最新ビルドです。あまり奇跡を期待せず、もしバグを発見された場合には報告して下さい。

GlassFish を OSGi モードで動かすには、単純に次をインストールディレクトリでおこなって下さい。

java -DGlassFish_Platform=Felix -jar modules/glassfish-10.0-SNAPSHOT.jar

HK2 モードで動かす場合には下記です。

java -jar modules/glassfish-10.0-SNAPSHOT.jar

日本語翻訳: ogino

英文