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


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

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

该提案的动机在于减少云环境中文件系统上 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%,并包含相同的模块。

更多详情可查看此处。


相關推薦

2024-07-30

Java 专业人士的反馈,探讨了 Oracle Java 用户迁移到基于 OpenJDK 的替代方案的原因、迁移过程和时间的详细信息,以及支持和技术专业知识对于 OpenJDK 发行版的重要性。 多年来 Oracle 在 Java 用户中的份额一直在下降,从 2020 年

2024-07-18

JNI 函数仍可供本地代码使用。 更多详情可查看:https://openjdk.org/jeps/472

2022-05-19

但自适应解释器的工作范围无法脱离字节码。目前 PEP 659 提案的工作基本完成,但 for 循环和二进制操作的动态优化仍有待完成。 在提速 25% 的同时,Python 3.11 仍有一些需要改善的地方,比如 Python 在 3.11 中的内存消耗与 3.10 中

2023-04-15

OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。这个提案主要是引入“灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。 提案的作者 Ron Pressler 解释:现在的 Java

2022-09-25

OpenJDK/Java 在实现不依赖 X.Org/X11 或 XWayland 来渲染 Java GUI 应用程序的原生“纯” Wayland 工具包集成方面取得了进展。 开发人员 Alexey Ushakov 本周更新了 OpenJDK Wiki,概述 Linux 上 OpenJDK 获得 Wayland 支持的最新进展,这也是对成熟的 X

2023-06-13

EP 将正式从 JDK 21 中删除。此决策只与支持 Shenandoah GC 的 OpenJDK 版本用户有关;不会影响 G1 GC、Z Garbage Collector(ZGC)或其他现代垃圾收集器。也不影响使用 G1 GC 和 ZGC 的 Java 发行版,如 Oracle OpenJDK 和 Oracle JDK。 JDK 21 的初始候选

2022-10-27

版本主要变化 将 GraalVM 社区版的 Java 组件捐赠给上游 OpenJDK Oracle 正在向 OpenJDK 贡献 GraalVM 社区版 Java 代码,使 GraalVM 与 Java 的开发更紧密地保持一致。 按照计划,GraalVM JIT 和原生镜像将成为 OpenJDK 的一部分。Oracle 会根据

2022-06-28

科技媒体 Phoronix 对从 OpenJDK 8 到 OpenJDK 19 的多个 JDK 版本进行了性能基准测试。此外,作为参考对比,还加入了两个替代实现方案:OpenJ9 和 GraalVM CE。 测试环境: 搭载 Intel Core i5 12600K CPU、运行 Ubuntu 22.04 LTS 的电脑

2023-06-17

GraalVM是一个基于OpenJDK的高性能多语言虚拟机,它可以将Java应用编译成本地可执行文件,从而提高启动速度,降低内存占用,减少云资源消耗。GraalVM还支持JavaScript,Python,Ruby,LLVM和WebAssembly等多种语言,并提供了丰富的跨语言

2022-03-01

Go 语言社区正在讨论名为「arena」的新提案。 根据提案的介绍,「Go arena」用于优化内存分配。arena 是一种从连续的内存区域分配一组内存对象的方法,其优点是从 arena 分配对象通常比一般内存分配更有效。更重要的是,a

2023-03-22

的表达范围广泛的向量计算。 更多详情可查看:https://openjdk.org/projects/jdk/20/ 下载:https://jdk.java.net/20/

2024-06-13

载效率。对 OrchardCore 解决方案的测量表明,缓存大小减少了近 50%。对用户来说,这使得打开该解决方案的时间减少了 10%。 改善基本要素 在 17.10 中,除了改进 CPU 和内存使用等基本性能外,还减少了特定场景中加载的

2023-12-04

更换被盗水表的费用;其中 36 名议员投票一致通过了该提案,并于 11 月底生效。 时至今日,市议员 Ramiro Rosário 则向美联社透露,该法案其实是由聊天机器人编写的。他实际上使用 ChatGPT 撰写了相关提案,并在没有做出任何改

2022-11-16

Emerge 是一个监测和减少应用程序大小的平台,可以持续监测并分析应用程序二进制大小,帮助开发者编写更小、更好的代码。近日 Emerge 发布了一份报告,显示最新版本的 Xcode 存在会无意中增加应用程序体积的问题。 Xcode 14 于