Jigsaw和Penrose项目是否会优于Felix。 Karaf?

时间:2016-02-09 09:54:03

标签: osgi

我一直在阅读为Java 9排列的模块化功能 - 即Jigsaw和Penrose项目。我很想知道有没有OSGI经验的人是否认为Java 9将成为曾经使用像Felix和Karaf这样的框架的项目的事实上的运行时?

2 个答案:

答案 0 :(得分:1)

如果你仔细观察Jigsaw,你会发现在那个版本中它对应用程序没有用,因为它缺少一些基本功能来使它有用(这是它再次被延迟的一个原因)。请查看示例注释扫描支持。

此外,Jigsaw仅提供一个最小的模块系统,它不仅仅是一个额外的访问级别。 OSGi提供了许多功能,这些功能根本不在Jigsaw的范围内。

答案 1 :(得分:0)

java9中的模块化在编译时解析。 您定义模块及其依赖项。然后编译并将包绑定在一起以获得临时JVM。 使用OSGi(karaf,felix,equinoxe ......),分辨率是动态的,它是在运行时完成的。模块部署(导入)或执行模块时(动态导入)。

两者都不是矛盾的,而是互补的。 人们可以很好地想象一个以java9模块的形式编写的karaf,以获得最小的内核。 OSGi的动态添加被降级到运行时。

我认为OSGi的演变必须决定在容器中部署java9模块时要做出的解释。 模块头包含输入/导出信息,但没有版本概念。就像今天捆绑包导入包而没有指定版本一样,它是绑定的最可用版本。

A + JYT