EclipseやSpringで使われている基盤技術OSGiとは
【特集】Java本来の実力を引出すOSGi徹底解説
日立ソフトウェアエンジニアリング株式会社 一瀬成広
株式会社日立製作所 中央研究所 中野正樹
2009/5/12
■ OSGiの粒、「バンドル」とは?
OSGiでは、Javaモジュールを「バンドル」と呼び、このバンドルの実行基盤を「OSGiフレームワーク」と呼びます。このバンドルが、Eclipseのプラグインに当たります。Eclipseは、OSGiフレームワーク上で動作するように設計されており、プラグインだけでなくEclipseの実行環境もバンドルとして実装されています。
「バンドル」は、複数のクラスファイルとリソースファイルをアーカイブとして1つにまとめたJARファイルです。通常のJARファイルとの違いは、マニフェストファイルにOSGiの仕様特有の属性を加える点です。
図2 バンドルの中身 |
代表的な属性は、下記のとおりです。
表1 代表的な属性 | ||||||||||||
|
■ バンドルはBundleActivatorインターフェイスを実装する必要がある
また通常、バンドルには「org.osgi.framework.BundleActivator」インターフェイスを実装したクラスを含みます。マニフェストファイルの「Bundle-Activator」属性に定義したクラスのコードが、バンドルが起動する際に呼び出されます。
サンプルコードimport org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class LogServiceActivator implements BundleActivator {
public void start(BundleContext context) throws Exception {
// バンドル起動時、最初に呼び出される
}
public void stop(BundleContext context) throws Exception {
// バンドル停止前に呼び出される
}
}
バンドル起動時に「start()」メソッドが呼び出され、停止時に「stop()」メソッドが呼び出されるというシンプルな構造です。
ここからは、OSGiの代表的な特徴を3つ説明します。
【特徴1】幅広い環境でソフトウェアの部品化を実現
OSGiには、Javaモジュールを動的追加する仕組みに加えて、複数のJavaモジュール同士を連携させる機能やJavaモジュールを管理するための機能を備えています。これらの機能を「ソフトウェア部品化フレームワーク」として利用し、複数のJavaモジュールをソフトウェア部品として組み合わせてシステムを構築できます。
ソフトウェアの部品化は、システムの複雑度を下げ部品を再利用することによって、ソフトウェア開発生産性を向上させるのに有効な手段です。
OSGiをソフトウェア部品化フレームワークとして使用する場合、以下のような優れた特徴があります。
- 公開されているオープンな仕様のため、誰でも内容を参照可能
- 汎用性を考慮した仕様のため、特定のアプリケーションに依存しない
- 組み込み機器からサーバマシンまで、幅広い環境に適用可能
【特徴2】オープンな仕様で実装も多く、ツールもある
OSGiの仕様は、OSGi AllianceのWebページで公開されており、誰でも内容を参照可能です。そのため、企業による商用のOSGi実装に加えて、複数のオープンソースのOSGi実装が存在しています。代表的なオープンソース実装として下記があります。
表2 代表的なオープンソース実装 | ||||||||||||
|
次ページでは、OSGiバンドルの開発ツールや3つ目の特徴を解説します。OSGiは、Eclipseだけではなく、SpringやJBoss、GlassFishでも使われています。
INDEX | ||
Page1 | ||
日本企業も多数参加している「OSGi Alliance」 OSGiはEclipseでどのように利用されているのか |
||
Page2 | ||
【特徴1】幅広い環境でソフトウェアの部品化を実現 【特徴2】オープンな仕様で実装も多く、ツールもある |
||
Page3 | ||
【特徴3】バージョンや依存関係、アクセス制御の管理 もともとのターゲットである組み込み機器でも |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|