OSGi包与普通.JAR文件使用之间的区别

Amr*_*rit 7 java osgi bundle jar

我最近开始学习OSGi.我读到可以bundles(which are normal java classes)通过dynamically installing/uninstalling任何捆绑创建并在另一个捆绑中使用它们.

但我似乎无法理解.JAR任何java类中的正常文件使用与使用a之间的区别bundle.

任何人都可以帮我澄清一下吗?谢谢.

Pet*_*ens 24

基本上没有区别.JAR是一个包,一个包是一个JAR,格式是相同的.但是,有用的 bundle需要在其清单中包含OSGi元数据,以便OSGi框架可以管理bundle之间的类的可见性.没有这个元数据的JAR只包含不可见的类,看不到其他包中的任何类,也不能以任何方式启动它.Import-Package清单标头告诉应该使哪些包对包可见,并且Export-Package定义包中应该对其他人可见的包.其他标头提供其他功能.

使用传统的类路径,一切都是共享的和全局的,在类路径上具有相同类两次不会在任何地方标记,只会忽略一个.与OSGi的主要区别在于JAR现在都是私有的,在清单中添加元数据使其成为可以安全地与其他捆绑共享的捆绑.OSGi确保提前检测到违规行为.

  • 是的,这是一个普通的 JAR。然而,在 JavaEE 应用程序中,它当然会充当 JAR 而不是捆绑包。 (2认同)