Java 的包管理系统对我来说总是简单而有效。它被 JDK 本身大量使用。我们一直在用它来模仿命名空间和模块的概念。
Project Jigsaw(又名 Java Platform Module System)试图填写什么?
来自官方网站:
The goal of this Project is to design and implement a standard module system for the Java SE Platform, and to apply that system to the Platform itself and to the JDK.
最佳答案
Jigsaw 和 OSGi 正在尝试解决相同的问题:如何允许粗粒度的模块进行交互,同时屏蔽它们的内部结构。
在 Jigsaw 的例子中,粗粒度的模块包括 Java 类、包及其依赖项。
这是一个示例:Spring 和 Hibernate。两者都依赖于第 3 方 JAR CGLIB,但它们使用不同的、不兼容的 JAR 版本。如果你依赖标准的JDK,你能做什么?包括 Spring 想要打破 Hibernate 的版本,反之亦然。
但是,如果您有像 Jigsaw 这样的高级模型,您可以轻松地在不同模块中管理 JAR 的不同版本。将它们视为更高级别的包。
如果您构建 Spring from the GitHub source你也会看到的。他们重做了框架,因此它由几个模块组成:核心、持久性等。您可以挑选应用程序所需的最小模块依赖集,而忽略其余的。它曾经是一个 Spring JAR,其中包含所有 .class 文件。
更新:五年后 - Jigsaw 可能还有一些 issues解决。
关于java - 为什么项目 Jigsaw/JPMS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844829/