wco*_*alt 6 java jar java-platform-module-system java-9
这里描述了 Jigsaw 的以下好处:
作为 Project Jigsaw 的一部分,所有 Java 平台 API 都已拆分为单独的模块。将所有 Java API 拆分为模块的好处是您现在可以指定应用程序需要的 Java 平台模块。知道您的应用程序需要哪些 Java 平台模块,Java 可以打包您的应用程序,仅包括您的应用程序实际使用的 Java 平台模块。
但是,我不明白它是如何工作的,因为据我所知,Java 并没有将所需的模块直接放在 JAR 中。它只是在模块路径中寻找它们。那么,Java 是如何减少 JAR 大小的呢?
Java 可以打包您的应用程序,仅包括您的应用程序实际使用的 Java 平台模块。
从 Java 9 开始,可以使用jlink工具创建自定义运行时映像。
基本上,自定义运行时映像是一个包,它不仅包含您的第 3 方库,还包含 JVM 所需的部分。这是某种自包含的可执行映像,其中包含运行它所需的一切,而无需在您的操作系统上安装 JRE。这是一个很好的功能,因为您不必担心是否有人安装了特定的 JRE 版本来运行映像。
现在,我猜您所指的句子并不是说与 Java-9 之前的(非模块化)JAR 相比,JAR 的大小减小了。我认为作者想说的是,与包含整个 JVM 的 JAR 相比,仅打包 JVM 所需模块的能力减小了其大小。
例如,假设您正在编写一个仅使用一些基本 Java API 的应用程序,例如集合、IO 或日期和时间 API(包含在java.base模块中)。由于您没有使用像 Swing(java.desktop模块)或 JDBC(java.sql模块)这样的 API ,因此您不需要在包中包含它们。因此,您可以明确指定您的应用程序正在使用哪些 Java 模块(在module-info.java文件中),并且只有那些将与您的应用程序捆绑在一起。在这种情况下,您只需在所需模块列表中添加java.base模块。另一方面,如果需要使用 JDBC 向您的应用程序添加数据库访问,您将添加java.sql模块到模块列表。如您所见,不需要将整个 JVM 与您的应用程序捆绑在一起,因为您可以选择需要 JVM 的哪些模块。
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |