私は最近、OSGi
の勉強を始めました。 bundles
(which are normal java classes)
を作成し、別のバンドルでdynamically installing/uninstalling
バンドルで使用することができます。OSGiバンドルと通常の.JARファイルの使用の違い
しかし、通常の.JAR
のJavaクラスでのファイル使用とbundle
の使用の違いは分かりません。
誰でも私がそれを明確にするのに役立つことができますか? ありがとうございます。
私は最近、OSGi
の勉強を始めました。 bundles
(which are normal java classes)
を作成し、別のバンドルでdynamically installing/uninstalling
バンドルで使用することができます。OSGiバンドルと通常の.JARファイルの使用の違い
しかし、通常の.JAR
のJavaクラスでのファイル使用とbundle
の使用の違いは分かりません。
誰でも私がそれを明確にするのに役立つことができますか? ありがとうございます。
基本的に違いはありません。 JARはバンドルで、バンドルはJARです。形式は同じです。しかし、有用なバンドルは、OSGiフレームワークがバンドル間のクラスの可視性を管理できるように、マニフェストにOSGiメタデータを必要とします。このメタデータのないJARは、目に見えないクラスのみを含み、他のバンドルからのクラスを見ることができず、また何らかの方法で起動することもできません。 Import-Packageマニフェストヘッダーは、どのパッケージをバンドルから見えるようにするかを示し、Export-Packageはバンドル内で他の人が見えるようにするパッケージを定義します。他のヘッダーは追加の機能を提供します。
伝統的なクラスパスでは、すべてが共有され、グローバルであり、クラスパス上で同じクラスを2回置くとどこにもフラグが立てられません。ただ1つは無視されます。 OSGiとの主な違いは、JARがすべてプライベートであることです。マニフェストにメタデータを追加すると、他のバンドルと安全に共有できるバンドルになります。 OSGiは、違反が事前に検出されていることを確認します。
クリア。ありがとう:) – Amrit
JavaEEアプリケーションでは、jarの代わりにバンドルを使用できますか? – adbdkb
はい、通常のJARです。しかし、JavaEEアプリケーションではもちろん、バンドルとしてではなくJARとして動作します。 –