为什么Sun发明了另一个模块系统,而每个人都在OSGi上实现了标准化?

Sun在以Jigsaw的形式模块化JDK方面投入了大量精力,并暗示它也应该成为其他Java开发人员的首选模块格式。唯一一个使用它的著名玩家是 NetBeans(和衍生应用程序)。

另一方面,业界已经围绕OSGi进行了标准化,所有主要的应用程序供应商都将其运行时基于模块平台,甚至是Sun自己的Glassfish。甚至还有一个 NetBeans 端口,可以使用 OSGi 作为模块系统,而不是 NetBeans 自己的模块。甚至Maven也在努力成为OSGi运行时。

这只是NIH,许可还是其他原因?


答案 1

引用 http://blogs.oracle.com/mr/entry/jigsaw

然而,OSGi根本没有与Java语言集成,它是在Java SE平台之上构建的,而不是从Java SE平台内部构建的。

最后一个问题可以解决。Sun现在计划直接与OSGi联盟合作,以便OSGi框架的未来版本可以充分利用JSR 294的功能,从而实现与该语言更紧密的集成。

(...)

如果 Java SE 平台的未来版本包含特定的模块系统,则 Sun 将提供一种将 Jigsaw 模块迁移到该标准的方法。与此同时,我们将积极寻求与其他模块系统,特别是OSGi进行互操作的方法。


答案 2

Jigsaw项目背后的基本原理以及它与OSGi的关系由Jigsaw团队在Java Posse Podcast 259中概述。

这些项目并不完全重叠,Jigsaw的引入并没有敲响OSGi的丧钟 - OSGi的范围超出了Jigsaw将尝试的任何东西。Jigsaw 比 OSGi 团队能够提供的要多得多(语言、类和 JVM 实现更改)。OSGi的设计基于当前的JVM设计 - 对JVM的更改将使每个人都受益。

至少,这是我从我所读到的内容中得到的


推荐