为什么选择拼图/JPMS项目?

Java的包管理系统对我来说总是看起来简单而有效。它被JDK本身大量使用。我们一直在使用它来模仿命名空间和模块的概念。

Project Jigsaw(又名Java Platform Module System)试图填写什么?

来自官方网站:

本项目的目标是为 Java SE 平台设计和实现一个标准模块系统,并将该系统应用于平台本身和 JDK。


答案 1

Jigsaw和OSGi正试图解决同样的问题:如何允许粗粒度模块在屏蔽其内部的同时进行交互。

在Jigsaw的案例中,粗粒度模块包括Java类,包及其依赖项。

这里有一个例子:春天和冬眠。两者都依赖于第三方JAR CGLIB,但它们使用该JAR的不同,不兼容的版本。如果您依赖标准的 JDK,该怎么办?包括Spring想要的版本打破了Hibernate,反之亦然。

但是,如果你有一个像Jigsaw这样的更高级别的模型,你可以轻松地在不同的模块中管理不同版本的JAR。将它们视为更高级的包。

如果你从GitHub源代码构建Spring,你也会看到它。他们重做了框架,所以它由几个模块组成:核心,持久性等。您可以选择应用程序所需的最小模块依赖项集,而忽略其余部分。它曾经是一个单一的Spring JAR,其中包含所有.class文件。

更新:五年后 - Jigsaw可能仍然有一些问题需要解决。


答案 2

AFAIK 计划是使 JRE 更加模块化。即,具有可选的较小jar和/或您可以仅下载/升级所需的功能。

它使它不那么臃肿,并让你选择放弃可能大多数人不使用的旧模块。


推荐