OSGiへのはじめの一歩 / OSGiとは

OSGiとは

一度販売してしまうとその後は機能を変更できなかったシステム……

同じメーカでも機種ごとにソフトウエアを用意してきたシステム……

このようなシステムの問題に対しての解決方法として、OSGi(Open Services Gateway initiative)技術は様々な分野で利用されています。

OSGiは、1つのJVM上で『動的な機能追加』『並列動作』を実現する環境を提供するJavaベースのサービスプラットフォームです。もともとは情報家電を取り扱うサービスゲートウェイの仕様でしたが、適応範囲が広がりJavaの開発環境であるEclipseやビル管理システム、複合機の制御システムなど幅広く応用されています。

OSGiの特徴1

OSGiの特徴1

OSGiフレームワーク自身はいくつかの基本的な機能を提供しますが、あくまでフレームワークでありそれだけでは何もできません。 OSGiフレームワーク上にバンドルという機能提供するプログラムをインストールすることで機能追加を行います。このバンドルを組み合わせてアプリケーションを構成していきます。

バンドルの実態は普通のJARファイルとほとんど変わりありません。違いはマニフェストファイルにそのバンドルの動作情報を示すOSGi特有のヘッダを記述する点と、Mainクラスの代わりにBundleActvatorインタフェースを実装したクラスが必要であることだけです。

※ OSGi仕様やAPIについての知識はある程度必要となります。

OSGiの特徴2

-動的機能追加-

OSGiの特徴2

通常のJavaアプリケーションは機能追加などを行う際にはJVMを一旦停止する必要がありますが、OSGiフレームワークはJVMを停止することなくバンドルのインストールやアップデートを行うことで、動的な機能追加や変更が可能です。 これにより、お客様に提供しているサービスの更新や機能拡張、不具合の改修などをスムーズに行うことができます。また、頻繁に再起動を行うことが良しとされないシステムにも対応できます。

OSGiの特徴3

-部品化-

OSGiの特徴3

バンドルはOSGiサービスの公開、パッケージの公開という2つのインタフェース公開手段があり、利用側バンドルはそれらを用いて機能を提供されるため、内部でどのように実装されているか意識する必要がありません。

これらのバンドルをブロックを組み立てるように組み上げていく事によりアプリケーションを構成していきます。どのブロックを使うかは作り手次第です。


例えば通信バンドルを作る場合、プロトコル依存部分を切り出しておくと様々なプロトコルに対応できる通信バンドルとなります。

また、不具合が発生した際には影響範囲を小さくすることができ、動的機能追加の特徴を利用して問題のバンドルだけ更新することができます。 これは「動的機能追加」を可能にするものであるとともに「動的機能追加」を生かす特徴でもあります。

OSGiを使用した開発事例

ジェイエスピーでは最長14年という実務経験によって得られたOSGiフレームワークや標準バンドルが提供する仕様やAPIについての知識と、標準バンドルを含む様々な『バンドル』『OSGiフレームワーク自身』『OSGi TCKで動作するテストケース』などの開発経験を駆使し、お客様の多様なニーズにお応えしています。

  • 次世代センサープラットフォーム開発
  • 太陽光発電抑制実証用出力制御ユニット開発
  • 電力計電力取得システム開発
  • ご相談・お見積もりに関するお問合せはこちらから