OSGi サービス・プラットフォームの中核部分は、 管理されたセキュアな Java™ ベースのサービス・プラットフォームを定義します。このプラットフォームは、バンドルとして知られる拡張可能でダウンロード可能なアプリケーションの デプロイメントをサポートします。 その仕様により、セキュリティー・モデル、アプリケーション・ライフサイクル管理モデル、サービス・レジストリー、実行環境、およびモジュールが定義されます。
実行環境レイヤーは、バンドルが稼働する Java 環境 (例えば、Java EE または Java SE) を指定します。WebSphere® Application Server で稼働する OSGi アプリケーションの場合は、 実行環境を指定する必要はありません。
モジュール・レイヤーは、OSGi フレームワークがバンドルのモジュラー・アスペクトを処理する場所です。OSGi フレームワーク がバンドルを処理することを可能にするメタデータは、バンドル・マニフェスト・ファイルで設定されます。
OSGi 内のバンドル・ライフサイクル管理レイヤーを使用することで、 従属クラスが見つからないためにそれらをロードできないという、Java クラスのロードや実行時のクラスが見つかりません例外に関する問題がなくなります。インストール済みバンドルがフレームワークにデプロイされるとき、 フレームワークはまずそのすべての宣言済み依存関係を解決します。未解決の依存関係がある場合、 フレームワークはそれらの依存関係を報告し、バンドルを開始しません。
アプリケーションは通常、バンドル・アクティベーターを提供する必要はありません。 ただし、バンドルの開始時または停止時に初期化が必要な場合は、バンドル・アクティベーターを作成することができます。
OSGi 内のサービス・レジストリー・レイヤーは、本質的にサービス指向アーキテクチャー (SOA) をサポートしています。バンドルはサービス・レジストリーにサービスを公開し、他のバンドルがそれらのサービスをサービス・レジストリーからディスカバーできます。
これらのサービスは、バンドル間のコラボレーションの主要な手段になります。OSGi サービスは、Plain Old Java Object (POJO) で、カスタム・プロパティー (名前と値のペア) として保管されるオプションのメタデータが設定され、1 つ以上の Java インターフェース名の下にサービス・レジストリーに公開されます。ディスカバーする側のバンドルは、インターフェース名によってサービス・レジストリーでサービスを検索し、次にカスタム・プロパティーを使用してサービスを潜在的にフィルターに掛けることができます。
サービスは完全に動的で、通常、サービスを提供するバンドルと同じライフサイクルを持ちます。