EclipseやSpringで使われている基盤技術OSGiとは

EclipseやSpringで使われている基盤技術OSGiとは


【特集】Java本来の実力を引出すOSGi徹底解説

日立ソフトウェアエンジニアリング株式会社 一瀬成広
株式会社日立製作所 中央研究所 中野正樹
2009/5/12


OSGiの粒、「バンドル」とは?

 OSGiでは、Javaモジュールを「バンドル」と呼び、このバンドルの実行基盤を「OSGiフレームワーク」と呼びます。このバンドルが、Eclipseのプラグインに当たります。Eclipseは、OSGiフレームワーク上で動作するように設計されており、プラグインだけでなくEclipseの実行環境もバンドルとして実装されています。

 「バンドル」は、複数のクラスファイルとリソースファイルをアーカイブとして1つにまとめたJARファイルです。通常のJARファイルとの違いは、マニフェストファイルにOSGiの仕様特有の属性を加える点です。

図2 バンドルの中身
図2 バンドルの中身

 代表的な属性は、下記のとおりです。

表1 代表的な属性
属性名 概要
Bundle-SymbolicName バンドルを一意に特定する文字列
Bundle-Version バンドルのバージョン
Bundle-Activator バンドル起動時、最初に呼び出されるorg.osgi.framework.BundleActivatorを実装したクラス
Export-Package ほかのバンドルへ公開するパッケージ
Import-Package 使用するほかのバンドルの公開パッケージ

バンドルは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 代表的なオープンソース実装
名称 開発元 ライセンス
Equinox Eclipse Foundation Eclipse Public License
Apache Felix Apache Software Foundation Apache License 2.0
Knopflerfish Makewave BSD Style License


 次ページでは、OSGiバンドルの開発ツールや3つ目の特徴を解説します。OSGiは、Eclipseだけではなく、SpringやJBoss、GlassFishでも使われています。

1-2-3

 INDEX
  Page1
  日本企業も多数参加している「OSGi Alliance」
OSGiはEclipseでどのように利用されているのか
Page2
  【特徴1】幅広い環境でソフトウェアの部品化を実現
【特徴2】オープンな仕様で実装も多く、ツールもある
  Page3
  【特徴3】バージョンや依存関係、アクセス制御の管理
もともとのターゲットである組み込み機器でも

Java Solution全記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間