OSGiは、モジュラーアプリケーションを構築するために使用される標準です。新しいレベルのモジュール性 - バンドル(別名コンポーネント、モジュール)を追加します。各バンドルには、クラスとインタフェースが含まれており、最も重要なことはしなければならない明示的な状態です:
- 他のコンポーネントやJavaは、それは、
- とそれが他のコンポーネントによって使用されるように公開したいパッケージを使用してパッケージが。
技術的な観点からは、バンドルはビット拡張されたjarファイルですMETA-INF/MANIFEST.MF
ファイルです。上記の情報はすべてMANIFEST.MF
ファイルに保存されています。
実践的な観点から、この説明には長所と短所の両方があります。私にとって最大の利点は、標準的なアプリケーションよりも、アーキテクチャ、モジュール、およびそれらの間の相互作用について考える必要があることです。これにより、各モジュールが明確に定義されたタスクを担当し、モジュールを再利用できる優れたアーキテクチャが作成される可能性があります。デメリットについては、多くのモジュールを作成すると時々苦しいことがあります。多くのモジュールを持つのは簡単ですが、実際にたくさんある場合は、モジュール間のすべての依存関係を維持するのが難しいかもしれません(依存関係のサイクルはかなり苦しいです)。
OSGiはモジュラーアプリケーションの構築だけの標準ではありません。バンドルが存在し、実行されている環境も指定します。これはあなたが知っておくべきことです.OSGiを使用するときは、特別な環境でアプリケーションを起動する必要があります。この環境(たとえば、Eclipse Equinox)は、アプリケーションの実行を担当します。それはいくつかの可能性を提供します。たとえば、このアプリケーションを停止する必要なく、既に実行中のアプリケーションにバンドルを追加することができます。これは、アプリケーションのタイプによっては本当に重要な要素です(ただし、IMHOでは、これが本当に必要なアプリケーションは多数ありません)。
実際に重要なことは、一部のオープンソースライブラリがOSGiインフラストラクチャと完全に互換性がなく、標準のJavaアプリケーションと同じようにそのまま使用することが難しいことです(OSGiすべてがバンドルでなければなりません)。しかし、人気のあるライブラリの多くはバンドルにまとめられていました。例えば、Springでは多くの人気ライブラリ(ただしすべてではない)を含むbundles repositoryが提供されています。
OSGiは非常に複雑で、いくつかの言葉でその可能性を説明するのは難しいです。私が書いたのは、OSGiのもっとも重要な要素(IMO)です。しかし、OSGIははるかに優れています。バンドルはお互いにイベントを送ることができます、彼らはお互いにサービスを提供することができます。あなたが詳細を知りたいのであれば、チュートリアルを進めることをお勧めします。私はthis one in Java Worldをお勧めします。その後、OSGiについてはthis free e-bookをご覧になることができます(詳細はたくさんあります)。 OSGiに関するすべての詳細は公式仕様書に記載されているかもしれませんが、(少なくとも最初は)hereであることがわかります(ダウンロードする前にライセンスといくつかの法的通知を受け入れる必要があります) 。
要約すると、OSGiはモジュラーアプリケーションを構築する際に便利だと思いますが、これは無料ではありません。あなたが何かをして、あなたに何かをさせることを禁じるかもしれない重い基準です。OSGiの方法。
一部SO関連の質問:
お返事ありがとうございました:) – Izza
マイクロサービスの出現で、マイクロサービスはOSGiと比べてどのように優れていますか? – yathirigan