| OSGi | |
|---|---|
![]() OSGiアライアンスロゴ | |
| 年が始まった | 1999 |
| 最新バージョン | 8.0 2020年10月[ 1 ] (2020年10月) |
| 組織 | OSGiアライアンス |
| ドメイン | ジャワ |
| ライセンス | OSGi 仕様ライセンス、バージョン 2.0 |
| Webサイト | www.osgi.org |
OSGiはEclipse Foundationの傘下にあるオープン仕様かつオープンソースのプロジェクトです。[ 2 ]
これは、1999年3月に設立されたソフトウェアのオープン標準化団体であるOSGiアライアンス(旧称:Open Services Gateway initiative )の活動の継続です。同財団は当初、 OSGi標準の仕様策定と保守を行っていました。同アライアンスは2020年末にその活動をEclipse Foundationに移管しました。[ 3 ]
OSGi仕様は、Javaプログラミング言語用のモジュール式システムとサービスプラットフォームを規定しています。このプラットフォームは、スタンドアロンのJava環境やVM環境には存在しない、完全かつ動的なコンポーネントモデルを実装します。OSGiは、拡張Javaクラスファイルアーカイブ(JAR(ファイル形式) )として実装されたマイクロサービスに基づくサービス指向アーキテクチャを備えています。
OSGiはサービス指向アーキテクチャに基づいて構築されています。 アプリケーションまたはコンポーネントは、デプロイメント用のバンドル形式で提供され、再起動することなくリモートからインストール、起動、停止、更新、アンインストールできます。Javaパッケージ/クラスの管理は詳細に規定されています。アプリケーションのライフサイクル管理は、管理ポリシーのリモートダウンロードを可能にするAPIを介して実装されています。サービスレジストリにより、バンドルは新しいサービスの追加やサービスの削除を検出し、それに応じて適応することができます。
OSGi仕様は、当初のサービスゲートウェイへの重点を超えて進化し、現在では携帯電話からオープンソースのEclipse IDEに至るまで、幅広いアプリケーションで使用されています。その他の応用分野としては、自動車、産業オートメーション、ビルオートメーション、PDA、グリッドコンピューティング、エンターテインメント、フリート管理、アプリケーションサーバーなどが挙げられます。
2020年10月、OSGiアライアンスは標準化の取り組みをEclipse Foundationに移行し、その後閉鎖することを発表しました。[ 4 ] すべての成果物はEclipse Foundationに移管され、「OSGiワーキンググループ」が仕様の維持と進化を続けています。
OSGi仕様は、メンバーによってオープンなプロセスで開発され、OSGi仕様ライセンスに基づいて無料で公開されています。[ 5 ] OSGiアライアンスは、メンバー限定のコンプライアンスプログラムを提供しています。2010年11月現在、7つの認定OSGiフレームワーク実装があります。[ 6 ]認定済みと非認定の両方のOSGi仕様実装が別のページにリストされており、OSGiフレームワークやその他のOSGi仕様が含まれています。

OSGiは、モジュール型のソフトウェアプログラムとライブラリを開発および展開するためのJavaフレームワークです。各バンドルは、外部依存関係(存在する場合)を明示的に宣言した、クラス、jar、および設定ファイルの密結合された動的ロード可能なコレクションです。
フレームワークは概念的に次の領域に分かれています。

バンドルとは、Java クラスと追加リソースのグループであり、MANIFEST.MFそのすべての内容に関する詳細なマニフェスト ファイルと、含まれている Java クラス グループにさらに高度な動作を与えるために必要な追加サービスを備えており、その集合体全体をコンポーネントとみなすほどです。
MANIFEST.MF以下は、 OSGi ヘッダーを含む 一般的なファイルの例です。
バンドル名: Hello Worldバンドルシンボル名: org.wikipedia.helloworldバンドルの説明: Hello World バンドルバンドルマニフェストバージョン: 2バンドルバージョン: 1.0.0バンドルアクティベーター: org.wikipedia.Activatorエクスポートパッケージ: org.wikipedia.helloworld;version="1.0.0"インポートパッケージ: org.osgi.framework;version="1.3.0"例文の内容の意味は以下のとおりです。[ 7 ]

ライフサイクルレイヤーは、動的にインストール、起動、停止、更新、アンインストールできるバンドルを追加します。バンドルはクラスのロードをモジュールレイヤーに依存しますが、実行時にモジュールを管理するためのAPIを追加します。ライフサイクルレイヤーは、通常はアプリケーションには含まれないダイナミクスを導入します。環境の正しい動作を保証するために、広範な依存関係メカニズムが使用されます。ライフサイクル操作は、セキュリティアーキテクチャによって完全に保護されています。
| バンドル状態 | 説明 |
|---|---|
| インストール済み | バンドルは正常にインストールされました。 |
| 解決済み | バンドルに必要なすべてのJavaクラスが利用可能です。この状態は、バンドルが起動準備ができているか、停止していることを示します。 |
| 起動 | バンドルは開始中です。BundleActivator.startメソッドは呼び出されましたが、開始メソッドはまだ返されていません。バンドルにアクティベーションポリシーが設定されている場合、バンドルはアクティベーションポリシーに従ってアクティベートされるまで、STARTING状態のままになります。 |
| アクティブ | バンドルは正常にアクティブ化され、実行されています。Bundle Activator の開始メソッドが呼び出され、返されました。 |
| 停止 | バンドルを停止しています。BundleActivator.stopメソッドは呼び出されましたが、stopメソッドがまだ返されていません。 |
| アンインストール済み | バンドルはアンインストールされました。別の状態に移行することはできません。 |
以下は、インターフェースを実装する一般的な Java クラスの例ですBundleActivator。
パッケージorg.wikipedia ;org.osgi.framework.BundleActivatorをインポートします。org.osgi.framework.BundleContextをインポートします。パブリッククラスActivator はBundleActivatorを実装します{プライベートBundleContext context ;@Override public void start ( BundleContext context ) throws Exception { System.out.println ( " Starting : Hello World " ) ; this.context = context ; }@Override public void stop ( BundleContext context ) throws Exception { System.out.println ( " Stopping : Goodbye Cruel World " ) ; this.context = null ; } }OSGiアライアンスは多くのサービスを規定しています。サービスはJavaインターフェースによって規定されます。バンドルはこのインターフェースを実装し、サービスをサービスレジストリに登録できます。サービスのクライアントは、レジストリ内でサービスを見つけたり、サービスが出現または消滅したときに反応したりすることができます。
以下の表はOSGiシステムサービスの説明を示しています。[ 8 ]
| システムサービス | 説明 |
|---|---|
| ログ記録 | 情報、警告、デバッグ情報、またはエラーのログ記録は、ログサービスによって処理されます。ログサービスはログエントリを受信し、その情報をサブスクライブしている他のバンドルにこれらのエントリを送信します。 |
| 構成管理者 | このサービスにより、オペレーターはデプロイされたバンドルの構成情報を設定および取得できます。 |
| デバイスアクセス | 既存デバイスの自動検出と接続の調整を容易にします。これはプラグアンドプレイのシナリオで使用されます。 |
| ユーザー管理者 | このサービスは、認証および承認の目的でユーザー情報 (プライベートおよびパブリック) を含むデータベースを使用します。 |
| IOコネクタ | IOコネクタサービスは、CDC / CLDCjavax.microedition.ioパッケージをサービスとして実装します。このサービスにより、バンドルは新しい代替プロトコルスキームを提供できるようになります。 |
| 設定 | 設定を保存するためにJava のデフォルトを使用する代わりに、より OSGi に適した代替メカニズムを提供しますProperties。 |
| コンポーネントランタイム | サービスは動的な性質を持ち、いつでも追加・削除される可能性があるため、ソフトウェアの開発は困難です。コンポーネントランタイム仕様では、XMLベースの依存関係宣言を提供することで、こうした動的な側面の処理を簡素化できます。 |
| 展開管理者 | 管理エージェントの一部の責任へのアクセスを標準化します。 |
| イベント管理者 | パブリッシュ アンド サブスクライブ モデルに基づくバンドル間通信メカニズムを提供します。 |
| アプリケーション管理者 | 同時に利用可能なさまざまな種類のアプリケーションを含む環境の管理を簡素化します。 |
以下の表は、OSGi プロトコル サービスの説明を示しています。
| プロトコルサービス | 説明 |
|---|---|
| HTTP サービス | HTTPを使用して OSGi から情報を送受信できるようにします。 |
| UPnP デバイス サービス | ユニバーサル プラグ アンド プレイ(UPnP) デバイスと相互運用できるように OSGi バンドルを開発する方法を指定します。 |
| DMT管理者 | Open Mobile Alliance (OMA) デバイス管理仕様の概念を使用してデバイスを管理するための API を定義します。 |
以下の表は、OSGi のその他のサービスの説明を示しています。
| その他のサービス | 説明 |
|---|---|
| ワイヤー管理者 | プロデューサー サービスとコンシューマー サービス間の接続を許可します。 |
| XMLパーサー | XML パーサー サービスを使用すると、バンドルは必要なプロパティとJAXPとの互換性を備えたパーサーを見つけることができます。 |
| 測定と状態 | 測定および状態サービスにより、OSGi サービス プラットフォームでの測定の正しい処理が可能になり、簡素化されます。 |
OSGi Allianceは、 1999年3月にエリクソン、IBM、モトローラ、サン・マイクロシステムズなどによって設立されました。非営利法人として法人化される前は、Connected Allianceと呼ばれていました。
会員には(2015年2月現在) 、 Adobe Systems、Deutsche Telekom、Hitachi、IBM、Liferay、Makewave、NEC、NTT、Oracle、Orange SA、ProSyst、Salesforce、Siemens、Software AG、TIBCO Softwareなど、非常に多様な事業分野の35社以上が含まれています。[ 9 ]
アライアンスには、組織全体のガバナンスを担う理事会が設置されています。OSGi役員は、アライアンスを支える上で様々な役割と責任を担っています。技術的な作業は、理事会によって設立された専門家グループ(EG)で行われ、非技術的な作業は様々なワーキンググループや委員会で行われています。専門家グループで行われる技術的な作業には、仕様の策定、リファレンス実装、コンプライアンステストなどが含まれます。これらの専門家グループは、OSGi仕様の5つのメジャーリリース(2012年現在)を発行しています。
エンタープライズ、モバイル、車両、コア プラットフォームの各分野には専用の専門家グループが存在します。
エンタープライズ・エキスパート・グループ(EEG)は最新のEGであり、エンタープライズ/サーバーサイドアプリケーションを扱っています。2007年11月には、レジデンシャル・エキスパート・グループ(REG)が、レジデンシャル/ホームゲートウェイのリモート管理に関する仕様策定に着手しました。2003年10月には、ノキア、モトローラ、IBM、プロシストなどのOSGiメンバーがモバイル・エキスパート・グループ(MEG)を設立し、次世代スマート携帯電話向けのMIDPベースのサービスプラットフォームの仕様策定を進めています。このプラットフォームは、 CLDCが対応できないニーズ( CDCを除く)の一部に対応します。MEGはR4と同様にOSGiの一部となりました。
| 名前 | ライセンス |
|---|---|
| アパッチ・フェリックス | オープンソース |
| アパッチカラフ | オープンソース |
| コンシェルジュ OSGi | オープンソース |
| エクイノックス OSGi | オープンソース |
| 双子座日食 | オープンソース |
| ノップラーフィッシュ | オープンソース |
{{cite web}}:|last=一般的な名前があります(ヘルプ)