OSGiに関連することをもっとやり始めると、違いは理解できると思いますが、Googleで何度か検索しただけではわからないので、質問するのは良い質問だと思いました。誰かが明確で簡潔な答えを持っているなら…</p>
2 に答える
不正確な例え:Equinoxはエンジン、Virgoは車です。
Equinoxは、Eclipseプロジェクトからのランタイムです(代替実装には、Felix(Apacheから)およびKnopflerfishが含まれます)。
VirgoはEquinoxをコアとして使用しますが、本番環境で使用する場合に必要となる多くのものを提供します。Virgoは基本的にEclipseFoundationに寄贈されたSpringSourcedmServerプロジェクトであるため、Springのすべてを強力にサポートしていることは明らかです。多くの同様の製品が存在します(Karaf(ServiceMix)および多数のJava EEアプリサーバー)。
OSGiランタイムは通常、非常に小さい(ランタイム)環境であり、OSGiフレームワークを起動/提供するのに十分です。Virgoのような製品は、一貫したテスト済みの方法で共通の本番/エンタープライズ機能を提供し、多くの場合、リモートシェルアクセス、Webアプリのサポート、セキュリティなどが含まれます。
ランタイムを直接操作して、必要に応じて各機能を追加できますが、これはリソースに制約のあるシステムには役立つ場合がありますが、通常、報酬が少ないために多大な労力を要します(もちろん教育は別として)。
技術的には、EquinoxはOSGiフレームワークであり、Virgoはコンテナーです。コンテナはフレームワークの上に乗って機能を追加します。これに競合するテクノロジーは、Apache Software Foundation OSGiフレームワーク(Felix)とコンテナー(Karaf)であるFelixとKarafです。ASFオファリングとEclipseFoundationオファリングの違いは、主にEclipseオファリングがOSGI4.2仕様のリファレンス実装であるということです。
Virgoの「サブシステム」リファレンス実装は、バンドルのセットを協調的に展開するための大きな改善です。Karafでは、「機能」展開メカニズムを使用します。「サブシステム」と「機能」のデプロイメントメカニズムの主な違いは、サブシステムでは特定のライブラリセットを分離し、定義されたサブシステムの外部でパッケージが使用されないようにすることができることです。機能により、他のライブラリで利用できるようになったすべてのパッケージがコンテナ全体で利用できるようになります。