【ハウツー】
本企画では、巨大になったSpringの主要プロダクトを順に取り上げ、その役割や使い方を簡単に紹介している。
第1回目となる前回はSpringの歴史を追いながら、どのようなプロダクトがあるのかを概観した。そして今回からはいよいよ、各プロダクトの紹介に入っていく。
最初に取り上げるのは「Spring Dynamic Modules」。名前を聞いただけでは想像しづらいプロダクトだが、本稿をご覧になれば、その意義をご理解いただけるはずだ。
SpringFrameworkなどのDIコンテナは、アプリケーションの開発スタイルに進化をもたらした。モジュールごとの実装・テストを容易にし、シンプルで俊敏なアプリケーションの開発が容易になった。しかし、アプリケーションのデプロイのスタイルは依然進化していない。
アプリケーションサーバにJavaアプリケーションをデプロイする場合、warファイルやearファイルの形式で複数のモジュールを1つにまとめてデプロイする。1つのモジュールに変更があった場合はアプリケーション全体を再度デプロイする必要があり、変更のない他のモジュールを停止させなければならない。
Spring Dynamic Modules(以降、SpringDM)は、モジュール単位のデプロイを可能にするプロダクトだ。これにより、依存しない他のモジュールを止めずに機能の追加・変更ができるようになるため、システムの円滑な成長をサポートするプラットフォームと言える。
SpringDMの核となる技術はOSGiである。次の章でOSGiを説明する。
OSGiは、動的※1にモジュールを追加・変更できるJavaのプラットフォームの仕様である。2000年に初版が作成され、現在も改版を続けている。最新版はRelease 4のVersion 4.2※2である。
※1 本稿では、プログラムを止めずに追加・更新できるモジュールを動的なモジュールと表現する。
※2 http://www.osgi.org/Release4/Downloadからダウンロードできる。
OSGiを実装した代表的な製品を以下に示す。
それぞれについての説明は割愛するが、興味のある読者は、上記のリンクをたどって各プロダクトのWebサイトをご覧になってほしい。
OSGiのモジュールの単位をBundle(バンドル)と呼ぶ。Bundleは、クラスファイル・リソースファイル(設定ファイル・画像ファイルなど)・マニフェストファイル※3で構成されたjarファイルである。アプリケーションの開発者はBundleを作成してOSGiのプラットフォームにデプロイする。複数のBundleが連携し合ってアプリケーションを形成する。
※3 jarファイルに関する情報を記述するテキストファイル。jarファイルの仕様で書式が規定されている。
Bundle間の連携は、具体的には以下の2つである。
1.は、クラスライブラリの使用と同じなので特に説明は必要ないだろう。2.は、サービスレジストリという概念が用いられる。サービスレジストリは、Bundle間で共有するオブジェクトの入れ物である。サービスレジストリに登録されたオブジェクトをサービスと呼ぶ。あるBundleが登録したサービスを他のBundleが利用する※4(図1)。
※4 サービスレジストリへのサービスの登録や取得はOSGiが規定したAPIを使用して行う。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
[観月ありさ]濃姫役で戦国時代劇初挑戦 信長役は城田優 SPドラマ「濃姫」 [05:00 2/11] エンタメ |
|
【レポート】秋葉原アイテム巡り - 『幻想水滸伝』シリーズ最新作や『GRAVITY DAZE』が発売! 冬アニメ注目のOP・EDテーマも続々リリース [05:00 2/11] ホビー |
|
激シブ!もう一度ゴルフ Ⅱ の魅力を味わってみませんか?【大阪オートメッセ2012】 [03:06 2/11] キャリア |
|
『ヘタリア』キャラソン、新シリーズが配信決定! [03:05 2/11] キャリア |
|
全国の温泉を擬人化したドラマCD、第1弾「草津」は櫻井孝宏さん! [03:05 2/11] キャリア |