Java 紧凑对象头正式成为产品特性
Java增强提案(JEP) 519正式将实验性特性“紧凑对象头”升级为产品特性。此特性在JDK 24中首次引入,旨在优化对象头布局,提升性能。经过在Oracle和Amazon的大规模测试验证,其稳定性和性能提升得到充分证明,因此不再需要`-XX:+UnlockExperimentalVMOptions`选项启用。未来,如果需要更多对象头位,项目Valhalla和Lilliput已预留空间和技术方案。
阅读更多
Java增强提案(JEP) 519正式将实验性特性“紧凑对象头”升级为产品特性。此特性在JDK 24中首次引入,旨在优化对象头布局,提升性能。经过在Oracle和Amazon的大规模测试验证,其稳定性和性能提升得到充分证明,因此不再需要`-XX:+UnlockExperimentalVMOptions`选项启用。未来,如果需要更多对象头位,项目Valhalla和Lilliput已预留空间和技术方案。
阅读更多
这项改进通过在应用的训练运行中收集方法执行概要文件,并将其存储在AOT缓存中,来显著缩短Java应用的预热时间。在生产环境中启动应用时,JIT编译器可以直接使用这些概要文件生成本地代码,无需等待收集概要文件,从而实现更快的启动和峰值性能。这项技术无需修改应用代码,并与现有的AOT缓存创建命令兼容。实验表明,一个简单的示例程序预热时间缩短了19%。
阅读更多
为了提高Java程序的安全性和性能,JDK计划强化final字段的不可变性。目前,深反射可以修改final字段,这违背了final关键字的初衷,也限制了JVM的优化。未来版本将默认禁止深反射修改final字段,并发出警告。开发者可以通过`--enable-final-field-mutation`选项选择性地启用final字段的修改,但建议尽量避免。此举旨在提升Java的“默认安全”特性,并与record类的设计保持一致。
阅读更多
JEP 483通过在HotSpot JVM启动时预先加载和链接应用程序类来显著缩短启动时间。它通过监控应用程序的一次运行,并将所有类的加载和链接形式存储在缓存中,从而在后续运行中重用。此功能无需修改应用程序代码,对大型服务器应用程序启动速度提升显著,例如Spring PetClinic的启动时间缩短了42%。虽然目前缓存创建过程为两步,未来版本将简化为一步,并支持更灵活的训练运行配置。
阅读更多
JEP 455 提案旨在增强 Java 模式匹配,允许在所有模式上下文中使用基本类型模式,并将 instanceof 和 switch 扩展到所有基本类型。 文章详细解释了该提案的动机、目标以及实现方式,包括如何确保类型转换的安全性、switch 表达式的穷尽性以及如何处理浮点数和布尔值。
阅读更多
该 JEP 草案提议更新 Java 平台中的 HTTP 客户端,以支持 HTTP/3 协议。HTTP/3 是基于 QUIC 的 HTTP/2 的演进,它是一种新的基于用户数据报协议 (UDP) 的传输协议。支持 HTTP/3 将使 HTTP 客户端应用程序能够受益于新协议提供的许多改进,例如:可能更快的握手;消除队头阻塞问题;以及更可靠的传输,尤其是在互联网连接不良导致数据包丢失的环境中。
阅读更多
该网站是 Oracle 提供的 OpenJDK Enhancement Proposals (JEP) 的存储库,其中记录了对 Java Platform, Standard Edition (Java SE) 和 Java Development Kit (JDK) 的增强建议。JEP 经过社区审查和投票,为 Java 平台的发展提供了一个透明和协作的过程。
阅读更多