【问题标题】:Difference between OSGi bundle and normal .JAR files usageOSGi 包和普通 .JAR 文件使用之间的区别
【发布时间】:2013-12-14 01:16:08
【问题描述】:

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

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

谁能帮我澄清一下? 谢谢你。

【问题讨论】:

    标签: java jar osgi bundle


    【解决方案1】:

    基本没有区别。 JAR 是一个包,一个包是一个 JAR,格式是相同的。然而,有用 包需要在其清单中包含 OSGi 元数据,以便 OSGi 框架可以管理包之间类的可见性。没有此元数据的 JAR 将只包含不可见的类,看不到其他包中的任何类,也无法以任何方式启动。 Import-Package 清单标头说明哪些包应该对包可见,而 Export-Package 定义包中应该对其他人可见的包。其他标头提供附加功能。

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

    【讨论】:

    • 那么,可以在 JavaEE 应用程序中使用 bundle 代替 jar 吗?
    • 是的,它是一个普通的 JAR。但是,在 JavaEE 应用程序中,它当然会充当 JAR 而不是捆绑包。
    猜你喜欢
    • 2011-02-05
    • 2011-05-23
    • 2018-03-16
    • 1970-01-01
    • 2016-12-02
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多