BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OSGiの最新状況

OSGiの最新状況

原文(投稿日:2009/10/16)へのリンク

OSGi 4.2がリリースInfoQ記事)されてから1ヶ月が経った。この間に何が起きただろうか?

今年初めにOSGi仕様ドラフトを実装したEquinox 3.5がリリースされていたが、近頃Apache Felix 2.0もOSGiに対応してリリースがされた。さらに昨日(2009年10月15日)にはKnopflerfish 3.0 betaがリリースされた。このベター版ではOSGi 4.2のコアが実装されているが、フレームワークランチャはまだ開発中の段階にある。

OSGi 4.2コアフレームワークをベースにしたApache Karaf 1.0は2週間前にリリースされた。この製品の狙いはエンジンを意識しないでもいいOSGiフレームワークを提供することで、ブループリント(以前InfoQでも取り上げた)、プロビジョニング、ログ、リモートアクセス(SSH)などいくつもの有用なバンドルがもパッケージされている。KarafはLinuxカーネルに追加の機能や管理機能を加えたLinuxディストリビューションと同じようにオールインワンなパッケージなので、OSGiを新たに使い出す人にとっては良い手始めになるだろう。

SpringSourceVMwareが買収)が最近リリースした小さなdm Kernerlをもつdm Server 2.0M5は、ブループリントサービスのOSGiリファレンス実装もされている。またネステッド(入れ子)フレームワークを利用できるようにもなっている。これはOSGi 4.2への追加が提案されていたが、将来のリリースに向けてより多くの知見を集めるために今回は見送られた機能で、OSGiフレームワークによって特定のアプリケーション用の内部フレームワーク(dm Serverの用語ではリージョンという)を作れるようにするものだ。これにより同一システム上にある他のフレームワークと分離して複数のアプリケーションをインストールできるようになる。ネステッドフレームワークに関する知識が蓄積されて次期OSGiでリリースされることは疑いがない。

近ごろ7.0がリリースされたJetty以前InfoQで取り上げた)は、スタンドアローンのJavaウェブエンジンにもなれば他のアプリケーション(OSGi対応のもの、従来のJavaアプリケーションも問わない)に組み込むこともできる。Oracleは、OSGiをベースにしたマイクロサービスアーキテクチャを含むWebLogicのロードマップを発表している。そしてGlassFishサーバを持つSunからはOSGiに基づいたGlassFishV3 Previewのダウンロードが提供されている。

OSGi Enterprise Expert GroupではJNDI解決やウェブサーブレットバインディングなどのOSGiサービスの定義に向けて作業をおこなっている。OSGiリモートサービスについては既に作業が完了して4.2の仕様に取り入れられている。このグループでは来年の早い段階での次期リリースを目指しているが、主要なアプリケーションサーバではその実行環境をOSGiをベースにしようと既に始めているようだ。

OSGiシステムを動かすだけなら簡単なことだが、ビルドにはまだ難しい面がある。Antのようなビルドシステムではフラットなクラスパスやパブリックなパッケージへの完全に透過な参照が用いられるのが一般的だが、OSGiの実行環境ではよりモジュール型のクラスパスが用いられる(実行環境で用いられるということはコンパイル時も同様である)。EclipseのPDEビルドのようなビルドシステムは特定のケース(たとえばEclipseプラグインをビルドする)では有効だが、IDEがカバーしないことやヘッドレス(GUIを持たないインターフェース)のビルドには向かない。Any/IvyをベースにしたApache SigilのようにEclipseだけでなくNetBeansでのOSGi開発もサポートすることを目指しているビルドエンジンもある。まだインキュベーションの段階ではあるが、最近セルフビルドができる状態になり、フルリリースも年内に予定されている。

Pax ConstructはMavenベースのビルドで必要不可欠なものになっていて、Felix Maven bndプラグインでも使われているbndツールと連携する。MavenのリポジトリからEclipseのコンポーネントを作るというアイディアも出ていて、これができるようになればMavenを使ってOSGiのビルドをしたりEclipseベースのバンドルを利用したりしたい人たちにとって便利なものになるだろう。最初の段階で利用可能になるのはプロジェクトの中の小さなサブセットとしてかもしれないが、それでもこのようなシステムの利点や需要を明らかにしいくことだろう。

Eclipseの方では、ビルドに焦点をあてたB3と呼ばれるプロジェクトも始まっている。これはEclipseのビルドの仕方を変えるものになるというよりは、BuckministerやHudosonベースなどのビルド/デプロイシステムと現在のPDEビルドとを組み合わせられるようにすることを目指している。

NetBeansはややOSGiからまだ外れた状態にあるが、netisgo(NetBeans向けのOSGiを提供している)の開発が続いている。一方最近リリースされたIntelliJ 9.0 Previewでは、communityエディションでもultimateエディションでもOSGiがサポートされるようになった(ただしcommunityエディションではプラグインを別にダウンロードすることになる)。

Eclipse 3.6M2は数週間前に利用可能になり、またElcipseプラットフォームの次期リリースのマイルストーンが公開された。EquinoxではOSGiプラットフォームでの非同期サポートを開発するにあたり重用されているOSGi EventAdminがサポート対象に含まれた。(以前のEquinoxではEventAdminを別のバンドルとしてダウンロードするようになっていたが、それでは利用者が少なかった。Eclipse RCPに取り込むことで標準でEventAdminが使えるようになり、それによって今後はより利用されることになるはずだ。)Equinox 3.6M2には、AspectJでバンドルの読み込み時にコードを埋め込むことで、バンドルでクラスローダウィービングをおこなえる機能も追加された。さらにEquinoxコンソールがマルチセッションに対応し、複数のユーザがリモートインスタンスに同時接続できるようになった。

ツールに関して新しいことといえばEclipse E4 1.0M1だ。Eclipse E4はウェブブラウザのようなJavaScript実行環境におけるEclipseプラットフォームで、非同期アクセスへの対応に重点を置いている。Eclipse 3.xの基本的な振る舞いの多くは同期型で、そのためユーザアクションによってユーザインタフェースがブロックされる。リモートクライアントをサポートするには、これらの振る舞いで非同期アクセスも可能にする必要があり、Eclipse 3.xでは将来この機能をマージする予定だ。これが実現することで得られるメリットのひとつは、OSGiバンドルを純粋なJavaScriptで作ることができるようになることだ。E4のWikiのJavaScriptページではJSFrameworkとJSConstantsオブジェクトを使う方法について詳細な情報が書かれている。またE4サイトにはE4 1.0M1リリースでの新機能および注目機能が書かれているページもある。

向こう6ヶ月はカンファレンスシーズンとなるが、いくつものカンファレンスでOSGiが取り上げられることになっている。一番近いのは来週のSpringOne Americaで、Burtonグループの2年目になるOSGiアンケート結果が発表される。その後には今月末のEclipseCon Summit Europe、来月のQCon SanFranciscoがある。そして来年は1月のOSGi DevCon London 2010、3月のQCon London、カリフォルニアでのEclipseCon 2010と続く。

各地域のOSGiユーザグループもよく活動している。Instil Software社のTara Simpson氏によってParemus社で開かれた会合では、ノード上でサービスを管理したり設定したりするのにOSGiを使った通信システムの実例について話がされた。その後もバーで引き続き話し合いがおこなわれたところを見ると(Luminisがスポンサーとなった)このプロジェクトへの関心は高かったようだ(ここSkillsMatterによって記録されたプレゼンテーションおよび動画も公開されている)。このようなプロジェクトでよく話になるのは、うわべはモジュール型のシステムをOSGiへと移行させると、どのパッケージがリークしているか分かるということだ。JettyもEclipseに移行する際同じような発見があった。さらに、一度OSGiに移行するとOSGiなしで複雑なシステムを作り上げることが想像できないというのもよく語られることだ。

OSGiとJigsawの間に共通の基盤を提供することを目指すSimple Module Systemの方はどうなっているかというと、当初は期待されていたにもかかわらず、実行環境でフラットなクラスパス(今のJavaのタイプ)あるいは入れ子クラスパス(OSGiやコンパイルパスのタイプ)のどちらを使うかについての意見が分かれている。専門家たちを集めて協議することは問題解決に役立つと思われるが、今のところそのような動きは見られない。2週間後にNeil Bartlett氏が"モジュール性:観客の立場から見て"という題で現在の作業状況などについて語ることになっている。

InfoQではJavaのモジュール性についての連載をおこなっている。来週このシリーズの次の記事が掲載される。

この記事に星をつける

おすすめ度
スタイル

BT