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

OSGi は、モジュール型ソフトウェア プログラムとライブラリを開発および展開するための Java フレームワークです。各バンドルは、外部依存関係 (存在する場合) を明示的に宣言する、密に結合された動的にロード可能なクラス、jar、および構成ファイルのコレクションです。
フレームワークは概念的に次の領域に分かれています。
- バンドル
- バンドルは、追加のマニフェスト ヘッダーを持つ通常のJARコンポーネントです。
- サービス
- サービス レイヤーは、プレーン オールド Java インターフェース ( POJI ) またはプレーン オールド Java オブジェクト(POJO)の公開、検索、バインド モデルを提供することで、バンドルを動的に接続します。
- サービスレジストリ
- 管理サービス用のアプリケーション プログラミングインターフェイス。
- ライフサイクル
- バンドルのライフ サイクル管理 (インストール、開始、停止、更新、アンインストール) 用のアプリケーション プログラミング インターフェイス。
- モジュール
- 依存関係のカプセル化と宣言 (バンドルがコードをインポートおよびエクスポートする方法) を定義するレイヤー。
- 安全
- バンドル機能を事前定義された機能に制限することでセキュリティの側面を処理するレイヤー。
- 実行環境
- 特定のプラットフォームで使用できるメソッドとクラスを定義します。実行環境の固定リストはありません。Java Community Process がJava の新しいバージョンやエディションを作成すると、変更される可能性があります。ただし、現在、ほとんどの OSGi 実装では次のセットがサポートされています。
- CDC-1.0/財団-1.0
- CDC-1.1/財団-1.1
- OSGi/最小-1.0
- OSGi/最小-1.1
- JRE-1.1
- J2SE-1.2 から J2SE-1.6 まで
バンドル

バンドルとは、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]
- Bundle-Name:このバンドルの人間が判読できる名前を定義します。バンドルに短い名前を割り当てるだけです。
- Bundle-SymbolicName:唯一の必須ヘッダーです。このエントリは、逆ドメイン名規則( Java パッケージでも使用される)に基づいて、バンドルの一意の識別子を指定します。
- Bundle-Description:バンドルの機能の説明。
- Bundle-ManifestVersion:このバンドルの読み取りに使用する OSGi 仕様を示します。
- Bundle-Version:バンドルにバージョン番号を指定します。
- Bundle-Activator:バンドルがアクティブ化されたときに呼び出されるクラス名を示します。
- Export-Package:バンドルに含まれるどの Java パッケージが外部に公開されるかを表します。
- Import-Package:バンドル内で必要な依存関係を満たすために外部から必要な Java パッケージを示します。
ライフサイクル

ライフ サイクル レイヤーは、動的にインストール、開始、停止、更新、およびアンインストールできるバンドルを追加します。バンドルは、クラスの読み込みにモジュール レイヤーを使用しますが、実行時にモジュールを管理するための API を追加します。ライフ サイクル レイヤーは、通常はアプリケーションの一部ではないダイナミクスを導入します。環境の正しい操作を保証するために、広範な依存関係メカニズムが使用されます。ライフ サイクル操作は、セキュリティ アーキテクチャによって完全に保護されます。
以下は、インターフェースを実装する一般的な 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 Alliance は多くのサービスを指定しています。サービスはJava インターフェースによって指定されます。バンドルはこのインターフェースを実装し、サービスをサービス レジストリに登録できます。サービスのクライアントはレジストリでサービスを見つけたり、サービスが表示されたり消えたりしたときに反応したりできます。
以下の表は、OSGi システム サービスの説明を示しています。
以下の表は、OSGi プロトコル サービスの説明を示しています。
以下の表は、OSGi のその他のサービスについての説明を示しています。
組織
OSGi Alliance は、 1999 年 3 月にEricsson、IBM、Motorola、Sun Microsystemsなどによって設立されました。非営利法人として法人化される前は、Connected Alliance と呼ばれていました。
会員企業には(2015年2月現在)、 Adobe Systems、Deutsche Telekom、Hitachi、IBM、Liferay、Makewave 、 NEC、NTT、Oracle、Orange SA、ProSyst、Salesforce、Siemens、Software AG、TIBCO Software[update]など、非常に多様な事業分野の35社以上が含まれています。[8]
アライアンスには、組織全体のガバナンスを提供する理事会があります。OSGi 役員は、アライアンスをサポートする上でさまざまな役割と責任を担っています。技術的な作業は、理事会によって認可された専門家グループ (EG) 内で行われ、非技術的な作業はさまざまなワーキング グループと委員会で行われます。専門家グループ内で行われる技術的な作業には、仕様の開発、リファレンス実装、コンプライアンス テストなどがあります。これらの専門家グループは、OSGi 仕様の 5 つの主要なリリースを作成しました (2012 年現在[update])。
エンタープライズ、モバイル、車両、コア プラットフォームの各分野には、専用の専門家グループが存在します。
Enterprise Expert Group (EEG) は最新の EG で、エンタープライズ / サーバー側アプリケーションに取り組んでいます。2007 年 11 月、Residential Expert Group (REG) は、住宅 / ホーム ゲートウェイをリモート管理するための仕様策定に着手しました。2003 年 10 月、Nokia、Motorola、IBM、ProSystおよびその他の OSGi メンバーが Mobile Expert Group (MEG) を結成しました。このグループは、次世代のスマート モバイル フォン向けのMIDPベースのサービス プラットフォームを規定し、 CDC以外のCLDCでは対応できないニーズの一部に対応します。MEG は、R4 と同様に OSGi の一部になりました。
仕様バージョン
- OSGi リリース 1 (R1): 2000 年 5 月
- OSGi リリース 2 (R2): 2001 年 10 月
- OSGi リリース 3 (R3): 2003 年 3 月
- OSGi リリース 4 (R4): 2005 年 10 月 / 2006 年 9 月
- コア仕様 (R4 コア): 2005 年 10 月
- モバイル仕様 (R4 Mobile / JSR-232): 2006 年 9 月
- OSGi リリース 4.1 (R4.1): 2007 年 5 月 (別名 JSR-291)
- OSGi リリース 4.2 (R4.2): 2009 年 9 月
- エンタープライズ仕様 (R4.2): 2010 年 3 月
- OSGi リリース 4.3 (R4.3): 2011 年 4 月
- コア: 2011年4月
- 概要と住宅: 2012 年 5 月
- OSGi リリース 5 (R5): 2012 年 6 月
- コアとエンタープライズ: 2012 年 6 月
- OSGi リリース 6 (R6): 2015 年 6 月
- コア: 2015 年 6 月
- OSGi リリース 7 (R7): 2018 年 4 月
- コアと概要: 2018 年 4 月
- OSGiリリース8(R8):2020年12月[9]
関連規格
- MHP / OCAP
- ユニバーサル プラグ アンド プレイ(UPnP)
- DPWS
- ITU-T G.hn
- ロンワークス
- コルバ
- CEバス
- EHS ( KNX ) / CECEDチェーン
- Java 管理拡張機能
OSGi を使用したプロジェクト
- Adobe Experience Manager – エンタープライズコンテンツ管理システム[10]
- Apache Aries – OSGi Enterprise Expert Group によって定義されたアプリケーション重視の仕様の Blueprint Container 実装と拡張
- Apache Sling – JCRコンテンツ リポジトリ用の OSGi ベースのアプリケーション レイヤー
- Atlassian ConfluenceとJIRA – このエンタープライズWikiと課題追跡ツールのプラグインアーキテクチャはOSGiを使用しています
- ビジネス インテリジェンスおよびレポート ツール (BIRT) プロジェクト– オープン ソース レポート エンジン
- Cytoscape – オープンソースのバイオインフォマティクス ソフトウェア プラットフォーム (バージョン 3.0 以降)
- DataNucleus – サービス指向アーキテクチャにおけるオープンソースのデータサービスと永続性プラットフォーム
- DDF – 分散データフレームワークは、無料のオープンソースデータ統合を提供します
- Dotcms – オープンソースの Web コンテンツ管理
- EasyBeans – オープンソースの EJB 3 コンテナ
- Eclipse – オープンソース IDE およびリッチ クライアント プラットフォーム
- iDempiere – オープンソースERPブランチGlobalQSS Adempiere 361のOSGi実装であり、もともとLow Heng Sin [11]によって開始されました。
- Eclipse Virgo – OSGi バンドルと OSGi アプリケーションをサポートするオープンソースのマイクロカーネルベースのサーバー
- GlassFish (v3) – Java EE 用アプリケーション サーバー
- Fuse ESB – ServiceMix 4 の製品化およびサポートされたリリース
- 統合ゲノムブラウザ– ゲノムデータを視覚化、探索、分析するためのオープンソースのデスクトップGUI
- IntelliJ – 無料のコミュニティ エディションを備えた Java IDE およびリッチ クライアント プラットフォーム
- JOnAS 5 – オープンソースの Java EE 5 アプリケーション サーバー
- JOSSO 2 – Atricore のオープンソース標準ベースの ID およびアクセス管理プラットフォーム
- Liferay Dxp – オープンソースおよび商用エンタープライズポータルプラットフォームはバージョン7.xからOSGiを使用しています
- Lucee 5 – オープンソース CFML Web アプリケーション サーバー
- NetBeans – オープンソース IDE およびリッチ クライアント プラットフォーム
- Nuxeo – オープンソースECMサービス プラットフォーム
- Open Daylight プロジェクト–ソフトウェア定義ネットワークの導入を加速することを目的としたプロジェクト
- OpenEJB – スタンドアロンモードと組み込みモードの両方で実行できるオープンソースの OSGi 対応 EJB 3.0 コンテナ
- openHAB – オープンソースのホームオートメーションソフトウェア
- OpenWorm – 専用のGeppettoモジュラープラットフォームを介したC. elegansのオープンソースソフトウェアシミュレーション
- Akana – Akana (旧 SOA Software) の API ゲートウェイ、ポータル、分析サーバー
- Weblogic – Oracle Weblogic アプリケーション サーバー
- WebSphere – IBM Websphere JEE アプリケーション サーバー
- WebMethods – SoftwareAG WebMethods
- WildFly – Red Hat の WildFly アプリケーション サーバー (旧 JBoss)
- WSO2 Carbon – WSO2 のエンタープライズグレードのオープンソースミドルウェアスタックのベースプラットフォーム
- Pentaho -データ統合、OLAP サービス、レポート、情報ダッシュボード、データ マイニング、抽出、変換、ロード(ETL) 機能を提供するビジネス インテリジェンス(BI) ソフトウェア。
現在のフレームワーク実装
参考文献
- ^ 「OSGi Alliance | 仕様 / ホームページ」. osgi.org . 2020 . 2022年10月3日閲覧。
- ^ グループ、OSGiワーキング。「OSGiとは? | Eclipse Foundation」。OSGiワーキンググループ。 2023年11月8日閲覧。
{{cite web}}:|last=一般的な名前があります (ヘルプ) - ^ Tyson, Matthew (2020-08-13). 「OSGiとは何か?Javaのモジュール化への別のアプローチ」InfoWorld . 2023-11-08閲覧。
- ^ Hargrave, BJ「Eclipse Foundation への移行のお知らせ」。
- ^ 「OSGi仕様ライセンス」。2015年9月14日時点のオリジナルよりアーカイブ。2012年5月10日閲覧。
- ^ 「OSGi Alliance | Markets / Certified」。2008年9月25日時点のオリジナルよりアーカイブ。2017年6月23日閲覧。
- ^ Costin Leau による OSGi バンドルの作成
- ^ 「OSGi Alliance | 概要/メンバー」。
- ^ Hargrave, BJ「OSGi Core Release 8 が最終版となり、公開されました」。
- ^ 「Forrester が Web コンテンツ管理リーダーを選出」CMSWire、2018 年 11 月 16 日。2018年12 月 5 日閲覧。
- ^ 「Adempiere Branch_GlobalQSS_361」。adempiere.com /。 2014年9月27日閲覧。
さらに読む
- Cummins, Holly; Ward, Tim (2013 年 3 月 28 日)、Enterprise OSGi in Action (第 1 版)、Manning Publications、p. 376、ISBN 978-1617290138
- Alves, Alexandre de Castro (2011 年 7 月 28 日)、OSGi in Depth (第 1 版)、Manning Publications、p. 325、ISBN 978-1-935182-17-7
- McAffer, Jeff; VanderLei, Paul; Archer, Simon (2010 年 2 月 24 日)、『OSGi と Equinox: 高度にモジュール化された Java システムの作成 (第 1 版)』、Addison-Wesley Professional、p. 460、ISBN 978-0-321-58571-4
- Joseph Gédéon、Walid (2010 年 11 月 5 日)、OSGi および Apache Felix 3.0 Beginner's Guide (第 1 版)、Packt Publishing、p. 336、ISBN 978-1-84951-138-4
- Walls, Craig (2009 年 7 月)、『Modular Java with OSGi and Spring』(第 1 版)、Pragmatic Bookshelf、p. 250、ISBN 978-1-934356-40-1、2011年5月30日にオリジナルからアーカイブされ、2009年2月19日に取得
- Hall, Richard S; Pauls, Karl; McCulloch, Stuart (2009 年 9 月)、『OSGi in Action』 (第 1 版)、Manning Publications、p. 375、ISBN 978-1-933988-91-7
- Alves, Alexandre de Castro (2009 年 3 月)、OSGi アプリケーション フレームワーク(第 1 版)、Manning Publications、p. 325、ISBN 978-1-935182-17-7
- Bartlett, Neil (2009-01-10)、OSGi In Practice (PDF) (DRAFT ed.)、p. 229、2012-02-16にオリジナル(PDF)からアーカイブ、 2009-06-11取得
- McAffer, Jeff、VanderLei, Paul、Archer, Simon (2009 年 9 月 7 日)、Equinox と OSGi: The Power Behind Eclipse (第 1 版)、Addison-Wesley Professional、p. 480、ISBN 978-0-321-58571-4
- Mak, Gary (2009)、Pro SpringSource dm Server、Apress、p. 250、ISBN 978-1-4302-1640-7、2010年12月5日にオリジナルからアーカイブされ、2008年12月28日に取得
- ルビオ、ダニエル (2009-02-12)、Pro Spring Dynamic Modules for OSGi Service Platforms (初版)、Apress、pp. 392、ISBN 978-1-4302-1612-4
- OSGi Alliance (2003)、OSGi サービス プラットフォーム、リリース 3、IOS Press、p. 604、ISBN 1-58603-311-5
- OSGi サービス プラットフォーム、コア仕様、リリース 4、バージョン 4.1、OSGi Alliance、2007 年、p. 228、ISBN 978-90-79350-01-8
- OSGi サービス プラットフォーム、コア仕様、リリース 4、バージョン 4.2、OSGi Alliance、2009 年、332 ページ、ISBN 978-90-79350-04-9
- OSGi サービス プラットフォーム、サービス概要、リリース 4、バージョン 4.1、OSGi Alliance、2007 年、594 ページ、ISBN 978-90-79350-02-5
- OSGi サービス プラットフォーム、モバイル仕様、リリース 4、バージョン 4、OSGi Alliance、2007 年、p. 426、ISBN 978-90-79350-03-2
- カーク・チェン、リー・ゴン (2001)、「Java Embedded Server(TM) テクノロジーによるオープン サービス ゲートウェイのプログラミング」、Prentice Hall PTR、p. 480、ISBN 0-201-71102-8
- Kayode Odeyemi (2010)、Netbeans を使用した Maven による OSGI 宣言型サービスの構築
- BJ Hargrave (IBM) (2011)、OSGi 4.3 テクニカル アップデート: 新機能、The Eclipse Foundation、2011-06-21 にオリジナルからアーカイブ、2011-06-11に取得
外部リンク
- 公式サイト
- Oredev 2008 - アーキテクチャ - OSGi の現在と未来
- Eclipse Equinox 記事インデックス - オープンソース OSGi 実装に関する記事
