【发布时间】:2014-01-05 06:21:12
【问题描述】:
带有 Project Jigsaw 的 Java 8 为 SDK 带来了一个模块系统。我认为这是一件好事,因为它是软件包的一部分(内置)。 OSGi 也提供了一个模块系统,但需要一个容器。但除此之外,它们之间的主要区别是什么。
如果我使用 OSGi,我能否使用标准 JDK 8 版本运行它?
当默认 SDK 包含此类功能时,OSGi 是否相关?我的理解是 OSGi 和 Jigsaw 都可以用来编写普通的模块化 Java 应用程序,而不仅仅是基于 ser 的应用程序(servlet 等),对吧?
对OSGi, Java Modularity and Jigsaw 问题的回答表明JRE 可能需要Jigsaw 模块系统。通过 JRE,我假设 OP 是指用 Java 编写的 Java 标准库,如 IO、CORBA、RMI,还是作为目标的类库实现?通过阅读 Jigsaw 项目页面,我认为是前者。如果是后者,它如何帮助其他编写 Java 代码的 Java 开发人员?类库是用 C/C++ 编写的。有人可以澄清一下吗?
这不是 OSGi 与 Jigsaw。我想真正了解使用哪一个。如果我要编写一个新的应用程序(无论是桌面还是服务器),我希望基于可能不会被标准实现过时的技术并放弃软件。我并不是说 OSGi 已经过时,我喜欢 OSGi。我正在看大局,OSGi 本身的未来方向是什么。
【问题讨论】:
-
如果您正在计划一个项目,请注意来自JDK 8 public review 的声明:本规范的原始请求建议包含一个模块系统,并使用该系统将平台本身。然而,该功能被推迟到未来的版本中,以便有足够的时间进行广泛的评估、审查和反馈,这是对平台进行如此深刻的改变所需要的。
-
是的。 Jigsaw 已脱离 Java 8。此外,Jigsaw 项目将重新考虑其目标和要求,mail.openjdk.java.net/pipermail/jigsaw-dev/2013-August/…,并可能成为 Java 9 的一部分。所以这意味着我们不知道 Jigsaw 将是什么,也不知道它何时会出现爪哇。所以很难与现在的 OSGi 进行比较。
-
还要注意有Penrose项目:openjdk.java.net/projects/penrose“这个项目的目标是探索和实现Jigsaw项目和OSGi之间的互操作性。”
标签: java module osgi java-platform-module-system