1年のこの時期になると、普通は休暇のため業界も一休みだ。にも関わらず、先日のBundle.updateから多くの出来事があったようだ。
dm ServerがEclipseへ移行
Virgoプロジェクトの提案はひょっとすると大きなニュースかもしれない。(詳細については 先週のニュース取り上げた)。ちょうど2.0.0がリリースされたが、この提案は2.1以降のリリースはEclipse傘下のプロジェクトとして開発され、配布される事を意味する。
既存のプロジェクトと新たな提案の違いのキーは、ライセンスにある。これは元々GPLの元、利用できたが、商用でより使いやすいEPLの元、利用できるようになる。移行の公開されているゴールではよりコミュニティの貢献を増やし、よりソフトウェア開発の事実上の標準になるよう後押しするとしている。
エンタープライズOSGiやdm Serverの周りには非常に強い関心と新しい技術があります。この関心がもっとも強いのは、新しいものが好きな人たちと、OSGiサービスプラットフォームの動的モジュール形式にぴったり合うものを必要とするプロジェクトです。できる限り速く、いざこざもなくエンタープライズアプリケーションを構築したい主流の開発チームにとって、現在エンタープライズOSGiの導入に関するコストは、短期間の利益よりも多くなります。エンタープライズOSGiが主流のエンタープライズアプリケーション開発にとってデファクトのアプローチになる前に、この状況に対処する必要があります。
OSGi and Equinoxの出版
今週Eclipse RT(RunTime:ランタイム)という新たなブックシリーズの最初の1冊OSGi and Equinoxがいよいよお目見えした。この本ではどのようにOSGiを使い、モジュールに分割したJavaアプリケーションを構築するのか記述されている。そしてEquinoxをベースにしているとはいえ、他のOSGiプラットフォームでも開発するための価値あるガイドであると示されるべきだ。
この本ではToastというExampleプロジェクトを一通り触る。Toastのゴールは、ブックシリーズの将来の展開とともに、生きたExampleのコードのまとまりを提供することである。(そのため、開発者は一冊読めば、他の本を読む時に簡単にコンテキストを引き出すことができる)この本は4つのパートに分かれている。第1のパートは,OSGiの概要、第2のパートはToastの構築を例にしたチュートリアル、第3のパートはOSGiの要点をより深く解説し、最後のパートはリファレンスで結んでいる。
ECF remote servicesの完成
Eclipse Communications Frameworkプロジェクトは、OSGi Remote Services仕様の実装を完了した。これは、OSGiサービスをVMを越えて、REST、WS-*、JMS、XMPP、 Skype、そしてECFの汎用実装など様々なプロトコルを使って通信することができる。
それらだけではない。ZeroConfやSLP、静的なファイルベースの探索など異なったサービスの発見メカニズムも用意されている。
The Apache FelixのOSGi Remote Servicesの実装(Apache CXF)も利用でき、OSGiの参照実装となっている。しかしながら、Apache CXFはWS-*の転送レイヤを介したアクセスの提供に焦点が当てられる一方、ECFはより転送レイヤにとらわれない。どちらの場合も、エンドユーザと開発者のAPIは同じである。これは実行時に一方から他方への交換を手助けする。
Enterprise Expert Group活動が完了に近づく
最近の投稿に, Peter KriensはOSGi Enterprise Expert Groupの活動が近く完了するアナウンスがあった。前回で言及したが,Enterprise Expert Groupのdraft 4は最近リリースされ、そしていくつかのJava EEの機能が提供されている。最終稿は今年の3月に、EclipseConと共催されるOSGi DevConの期間中にリリースできそうだと述べた。
Enterprise Expert Groupから、JNDIのようなルックアップや、JMXを使ったOSGi実行環境の管理、JTA、JPAとDataSourceを使ったデータベースアクセス、Remote Servicesと、Service Component Architectureの管理が、OSGiを有効にしたメカニズムで提供される。加えて、WebコンテナにWARをインストールするのと同じように扱える、WABという新たなWebアプリケーションのBundleの配布形式が追加される。Enterprise Expert Groupの成果が公開されたとき、InfoQで、より詳細な内容をカバーする。
WebSphere Open ApplicationのAlpha版公開
以前からOSGiを基盤にしてきた、IBMのWebSphereは最近OSGiアプリケーションのためのアルファ版を公開した。これはApache Ariesをベースにしており、OSGi Blueprint containerを含んでいる。(これはSpringSourceからEclipseのプロジェクトに提案されたEclipse Geminiに似た実装だ。)これらのプロジェクトでも、Enterprise Expret GroupからもうすぐリリースされるJNDIとJTAに注力され、いくつかの問題の解決を目的としている。
これらのコンテナは、OSGi実行環境の境界をホストとしてを複数のアプリケーションを推進している。近い将来、(WebアプリケーションサーバをWARを使って分割されるのと同じように)アプリケーションはComposite Bundleとして知られるOSGi Nested Frameworksを使って分割されるだろう。これはWebアプリケーションサーバのモデルである、WARのようにすべて区切られて、コードを共有できないという構造とは異なり、WABはOSGiランタイムを用い、非公開なBundleとサービスを用いてコードやサービスを共有し、統合できる。
Mavenを使ってOSGiアプリケーションを構築するTycho
Sonatypeは、新しいMaven 3を使ってビルドするTycho 0.6.0をリリースした。Tychoは、どちらかというとMaven POMに存在する表明された依存関係よりも、OSGiのManifest.MFにかかれた依存関係を元に推測するMavenのビルダーの集まりである。これはOSGi Bundleの作成を、POMから作り始める(Manifestファイルは自動的に生成)か、Manifestから作り始めるか、ビルドプロセスの最初に選択できる。
多くのOSGi開発者(例えばApache傘下のFelixの利用者)はMavenを使っているとはいえ、よりPOMから作り始める開発になれるだろう。加えてManifestから作り始める開発は、Eclipseのますます不正確な名前になってきたPDE(プラグイン開発環境)を使ったOSGi Bundleの開発をより簡単にできるだろう。
AntベースのPDEビルドではなく、Mavenを使っている注目すべきEclipseのプロジェクトとして,Gitのチーム開発を含んだ(http://www.eclipse.org/egit/とhttp://www.eclipse.org/jgit/)、そしてインキュベータプロジェクトのTigerstripeがある。
MavenプロジェクトのMaven 3に向けた活動の中で,Google Guiceを使うための大きなリファクタリングがあった。加えて、(Sonatypeにより管理されている)Mavenのリポジトリが成功し,これはほぼ間違いなくJava開発における複数の依存を簡単にしたことがキーとなっている。OSGi Bundleのリポジトリ(OBR SpringSourceリポジトリ)はより共有され,異なったベンダをまたいだ配布ができる。組み合わされたOSGiリポジトリの集合を提供するにはあらかじめやることがあるが、TychoであればNexusを使って利用できる。組み合わせられた実験的なリポジトリにはbundles.sonatype.orgとosgi.sonatype.orgがある。いくつもの形式(OBR, P2など)を通じての提供が近未来のゴールにあがっているため、OSGi BundleもMaven JARの利用のように簡単に出きるようになるだろう。
OSGi Bundle Resolverは、OSGi Bundleをちょっとした仕組みに加えることがより一般的になってきている。Paremusは、最近Nimbleという、OSGi Bundleをダウンロードして取得できるResolverをリリースした。
Paremusは、ParemusのOSGi ShellであるPOSHにNimble Resolverを付属している。POSHはいくつかのコマンドを使って一般的なOSGiフレームワークの初期化と管理を実現している。(したがって、FelixやEquinox、Knopflerfishなどの間のテストを簡単にしている。)Nimbleとともに利用すると、Dave Savageによって記述された様な、OSGiランタイムのブートストラップ時の本質的なマナーを実現する。下記に示す2つのコマンドは、SpringベースのOSGi Webアプリケーションのインストールと、起動を行う。:
posh -kc "repos -l springdm;add org.springframework.osgi.samples.simplewebapp@active" open http://localhost:8080/simple-web-app/
DZoneでのインタビューから、Nimbleについてより多くの情報は得られるだろう。
OSGi UK User GroupとOSGi DevCon London
OSGi UK User Groupは成長し、100名以上のメンバーとなっている。最近のプレゼンテーションは、Marcel Offermans (of Luminis)とGraham Charters(of IBM)により行われた。近い将来、ユーザグループのウェブサイトで動画と資料が公開される予定だ。
最初のパートはインキュベータプロジェクトのApache ACEの概要だ。このプロジェクトは、多くのデバイス(潜在的にはリモート)をまたいでOSGiプロビジョニングの促進を目標にしている。
再利用可能なコンポーネントを集めてソフトウェアを構築するとき、増え続ける接続デバイスにソフトウェアを配布するタスクは些細には解決できない。これはこれらのデバイスが多種多様なソフトウェアスタックを持ち異なるコンポーネントを要求することになるので大変だ。このプレゼンテーションでは、ソフトウェアコンポーネントがどのように異なるタイプのデバイスへ配布されるのか、オープンソースのApache ACEをベースに、携帯からクラウド上のノードを制御し、OSGiベースのプロビジョニングを使ったソリューションを見せた。
Apache Aceプロジェクトは、今年の早い時期にLuminiusより寄付されたソフトウェアをベースにしている。たくさんのリアルライフのためのプロジェクトのプロビジョニングにこのソフトウェアを利用できる。例えば、航行中のレーダーシステムや野外でのX線の測定、コンテンツ管理システムのためのライセンス管理やソフトウェア更新、そして飛行場の荷物取扱いシステムである。
2つ目は、OSGi 4.2で定まったOSGiのリモートサービスの概要である。そしてどのようにサービスコンポーネントアーキテクチャ(SCA)と補完するか、Apache Tuscanyとのデモがあった。
OASISではサービスコンポーネントアーキテクチャ(SCA)の仕様開発が進められています。SCAは多種多様なSOAのプログラミングモデルを提供することで、様々な実装技術(EJB, BPEL, C++, COBOL)、バインディング(Webサービス、JMS、IIOPなど)、ポリシー(WS-Policyなど)を拡張可能な形で橋渡しを行います。
このプレゼンテーションでは、OSGiリモートサービスとサービスコンポーネントアーキテクチャの技術の連携の簡単な紹介がありました。そしてOSGiアプリケーションをリモートサービスを使って様々なSCA実装技術、バインディング、ポリシーを利用し、どのように二つの技術を結びつけるか、解説されました。
もうすぐJAX Londonと同時開催される、OSGi DevCon Londonのプログラムが公開されている。早期割引は終了したが、OSGi UK User Groupのメンバーは割引を受けられる。
まとめ
OSGiを大規模なサーバシステムに適用することは、当たり前の事として、浸透し始めている。しかしながら、OSGi Bundleを様々なIDEでより簡単にビルドするためにビルドツールを使い、OSGi Bundleを共有するために使う新しいリポジトリもひょっこり現れてきたが、モジュールに分離可能なJavaアプリケーション開発は未だ簡単になったことはなかった。よって、Kirk Knoernschild氏は2010年をJavaにおけるモジュラリティの年と言っている。