2013-11-28 17 views
5

私は最近、OSGiの勉強を始めました。 bundles(which are normal java classes)を作成し、別のバンドルでdynamically installing/uninstallingバンドルで使用することができます。OSGiバンドルと通常の.JARファイルの使用の違い

しかし、通常の.JARのJavaクラスでのファイル使用とbundleの使用の違いは分かりません。

誰でも私がそれを明確にするのに役立つことができますか? ありがとうございます。

答えて

16

基本的に違いはありません。 JARはバンドルで、バンドルはJARです。形式は同じです。しかし、有用なバンドルは、OSGiフレームワークがバンドル間のクラスの可視性を管理できるように、マニフェストにOSGiメタデータを必要とします。このメタデータのないJARは、目に見えないクラスのみを含み、他のバンドルからのクラスを見ることができず、また何らかの方法で起動することもできません。 Import-Packageマニフェストヘッダーは、どのパッケージをバンドルから見えるようにするかを示し、Export-Packageはバンドル内で他の人が見えるようにするパッケージを定義します。他のヘッダーは追加の機能を提供します。

伝統的なクラスパスでは、すべてが共有され、グローバルであり、クラスパス上で同じクラスを2回置くとどこにもフラグが立てられません。ただ1つは無視されます。 OSGiとの主な違いは、JARがすべてプライベートであることです。マニフェストにメタデータを追加すると、他のバンドルと安全に共有できるバンドルになります。 OSGiは、違反が事前に検出されていることを確認します。

+0

クリア。ありがとう:) – Amrit

+0

JavaEEアプリケーションでは、jarの代わりにバンドルを使用できますか? – adbdkb

+1

はい、通常のJARです。しかし、JavaEEアプリケーションではもちろん、バンドルとしてではなくJARとして動作します。 –

関連する問題