OpenJDK 正在制定一项“JEP 493: Linking Run-Time Images without JMODs”的提案,旨在将 JDK 的大小减少约 25%。

通过启用jlink工具,无需使用 JDK 的 JMOD 文件即可创建自定义运行时映像,从而将 JDK 的大小减少约 25%。此功能必须在 JDK 生成时启用;默认情况下不会启用,有些 JDK 供应商可能会选择不启用。

OpenJDK 新提案:将 JDK 大小减少约 25%插图

该提案的动机在于减少云环境中文件系统上 JDK 的安装大小。“在云环境中,文件系统上安装的 JDK 的大小非常重要,因为包含已安装 JDK 的容器镜像会通过网络自动且频繁地从容器注册表中复制。减小 JDK 的大小将提高这些操作的效率。”

提案解释称,完整安装的 JDK 包含两个主要组件:运行时映像(即可执行的 Java 运行时系统)和运行时映像中每个模块的一组打包模块(JMOD 格式)。在创建自定义运行时映像时,jlink工具会使用 JMOD 文件。完整 JDK 本身的运行时映像就是通过jlink从这些 JMOD 文件创建的。因此,运行时映像中的每个类文件、本地库、配置文件和其他资源也都存在于其中一个 JMOD 文件中,从而造成了大量的空间浪费。

完整 JDK 中的 JMOD 文件约占 JDK 总大小的 25%。如果能增强jlink工具以从运行时映像本身中提取类文件、本机库、配置文件和其他资源,就可以通过省略 JMOD 文件来大幅减少已安装 JDK 的大小。

因此,提案计划引入一个 JDK build-time 配置选项--enable-linkable-runtime,在构建 JDK 时,jlink可以在不使用 JDK 的 JMOD 文件的情况下创建运行时映像,并且不包含那些文件-即没有 jmods 目录。

$ configure [ ... other options ... ] --enable-linkable-runtime$ make images

生成的 JDK 将比使用默认配置构建的 JDK 小 25%,并包含相同的模块。

更多详情可查看此处

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。