OSGi应用程序如何在Java9上工作?
我试图理解OSGi应用程序在Java9中是如何工作的,假设OSGi包不是JPMS模块(据我所知,仍然没有解决方案表明OSGi包可以同时作为JPMS模块用于生产)。我有几个问题:OSGi应用程序如何在Java9上工作?,java,osgi,java-9,Java,Osgi,Java 9,我试图理解OSGi应用程序在Java9中是如何工作的,假设OSGi包不是JPMS模块(据我所知,仍然没有解决方案表明OSGi包可以同时作为JPMS模块用于生产)。我有几个问题: 我是否理解所有OSGi应用程序都是一个未命名的模块 如果#1是,那么Bundle.update()如何工作?捆绑包是否重新加载到未命名模块 如果我理解错了,请解释一下主要原理。OSGi使用类装入器隔离捆绑包,并在Java 9上继续这样做。由于每个JAR都是由一个单独的类装入器装入的,因此每个JAR都会在其自己的未命名模块
Bundle.update()
如何工作?捆绑包是否重新加载到未命名模块如果我理解错了,请解释一下主要原理。OSGi使用类装入器隔离捆绑包,并在Java 9上继续这样做。由于每个JAR都是由一个单独的类装入器装入的,因此每个JAR都会在其自己的未命名模块中结束。这意味着OSGi实际上忽略了JPM,并继续像Java 9之前一样工作。Java SE 9保证了所有坚持标准Java SE库的应用程序和库的持续兼容性 OSGi只使用已发布的JavaSEAPI,因此将在Java9上保持不变。此时它不会与JPMS模块交互,这将适用于所有其他Java软件。在某个时候,OSGi专家组可能会为JPMS模块和OSGi捆绑包之间的互操作性制定一个规范,但这是为了将来 要回答您的具体问题:
仅供参考,年的JPMS提案明确承认了OSGi的价值,并表示打算让OSGi继续在Java9下工作。引用第2.5节:OSGi的生命周期和动态服务注册设施对某些复杂的应用程序很有用,但超出了上述需求的范围。那些需要这些工具的人仍然能够在JavaSE9实现之上运行OSGi。