Manningが今日、OSGi in Actionを出版した。著者は、Richard S Hall, Karl Pauls, Stuart McCulloch、David Savageの各氏である。Apache Felix ランタイム上における長年のOSGiユーザとコミッターによって書かれており、本の中は、深い知識が微妙なことと特別な情報とが一緒になっている。 本の目次 が見れる。
本の最初のパートは、OSGi のモジュール化モデル、そのライフサイクル、サービスによる通信を紹介している。OSGi revealed というサンプル章がこの本のスタイルを表しており、OSGiのモジュール化を他のアプローチ(現在と将来の両方)とどのように違うかを紹介している。
モジュール化のパートもバンドル間の繋ぎの違いを詳しく述べており、その中には Require-Bundle
と Import-Package
の違いも含まれている。フラグメントを介してエントリを入手できるように、どちらかを選ばなければならない。サービスが動いているときのOSGiの動的な性質と考察に多くの配慮がなされている。後半のパートは、コンポーネント モデルを扱っているが、これを直接扱うことを避けてもよかったかもしれない、と注記している。 DynamicImport-Package
とそれを使うべき状況に特別な配慮がされている。
2番目のパートは、OSGiの実用面を取り上げている。ここでは、著者たちの OGSiの経験が輝いている。単にいくつかの一般的なパターン(エクステンダーやホワイトボード パターンのような)を並べるのではなく、間違った実装が問題に繋がった特殊なケースに立ち入ったり、なぜそのような問題が起きたを説明し、いかに修正したかを論じている。Moving towards Bundles 章からの引用では、モノリシックなJavaアプリケーションが反復プロセスを使って、より小さなモジュールに再帰的に分解できる方法を記述している。
また実際のユースケースもあり、その例として、開発時OSGi バンドルをいかにテストし、デバッグするか、アプリケーションをどう設定するか( ConfigAdmin, Metatype、Preferences サービスを使って)、またアプリケーションをバンドル セットとして、ランタイムにインストール際の微妙なことについても含んでいる。
最後のパートは、高度な OSGiのトピックを扱っており、例えば、宣言的サービス、ブループリント サービス、Apache FelixのiPOJOを含んだコンポーネント モジュールだ。これら全てが OSGiサービスのベースラインに作用するので、自由に混ぜあわせ、調和させることができる。1サイズで全部に合わせる式のモデルを実装する必要がないのである。
既存のJavaアプリケーションにOSGi を組み込む方法、セキュリティ モデルを使ってランタイムの動きを制限する方法、webバンドルを使って、OSGiランタイム内にサーブレット指向アプリケーションをホストする方法を説明している章がある。
本には、役に立つ情報がたくさんある。 ClassNotFoundException
と NoClassDefFoundError
の差の説明から、なぜ Class.forName()
が悪いのか、動的なリスタート中に、クラスローダーのリークによって、どのようにメモリリークが起きるかの説明まで( ThreadLocal
ストレージの使用における微妙なことを含んで)非常に多くの情報が載っている。 OSGiプラットフォームに経験のあるユーザーでさえ、学ぶことが多いし、初心者は、役に立つコードサンプル(オンラインで入手できる)によってステップバイステップ形式で、 OSGiを勉強し始めることができ、気をつけるべき落とし穴についても学ぶことができる。
OSGi in Actionは、本の小売店(ISBN 1933988916) から入手できる他、Manningの本のページサイトからPDF形式のeBookでも入手できる。今日だけ、コード"dotd0406" を使えば、本を半額で買うことができる。