Java基础、中级、高级、架构面试资料

JDK27 冻结定档,9 个 JEP,G1 全面上位、后量子加密落地

JAVA herman 93浏览
公告:“业余草”微信公众号 AI 中转站提供免费体验,点击链接 https://unity2.ai/register?ref=3XTnndN2 进行访问,支持 Claude、ChatGPT、Gemini 等最新模型!关注业余草微信公众号,添加作者微信:xttblog2!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

定了,JDK 27 一共 9 个 JEP。

原先有望是 10 个 JEP 的,但其中的一个 JEP 528 最后归到 JDK 28 了。

截止昨天,JDK 27 功能集已正式冻结。接下来,我就来拆解一下这 9 个 JEP 的核心价值,分析 JEP 528 为何退回候选状态,以及这个版本最值得关注的三大看点。

JDK 27 功能冻结

根据 OpenJDK 官方页面,JDK 27 的发布时间表已经确定,对应的计划如下表所示。

里程碑日期
Rampdown Phase One 功能冻结2026/06/04
Rampdown Phase Two 只修 bug2026/07/16
Initial Release Candidate 首个候选版本2026/08/06
Final Release Candidate 最终候选版本2026/08/20
General Availability 正式发布版2026/09/15

截止到昨天,6 月 4 日功能集已冻结,不再接受新的 JEP。这意味着 JDK 27 的“牌面”已经彻底确定,共 9 个 JEP,比 JDK 26 的 10 个略少,但含金量十足。

作为非 LTS 版本,JDK 27 将获得 6 个月的支持周期,下一个 LTS 版本是 2027 年 9 月的 JDK 29。

文章配图参见 https://mp.weixin.qq.com/s/8yEPK1zIyNdIQtGPGXHGvA

JEP 528 退回候选状态

原本计划包含的JEP 528: Post-Mortem Crash Analysis with jcmd 事后崩溃分析现已退回 Candidate 状态,预计推迟到 JDK 28 发布。

这个 JEP 的目标非常实用:让 jcmd 工具不仅能诊断运行中的 JVM,还能分析已经崩溃的 JVM产生的 core dump 文件。通过“复活”技术,将 core dump 映射到内存中重建 JVM 状态,让 jcmd 的 26 个诊断命令在事后环境中也能工作。

这么好的使用技术,为什么推迟了?

虽然 JEP 528 的技术方案很优雅(避免了维护两套代码,直接复用原生 JVM 函数),但 post-mortem 分析的复杂性意味着需要更多测试和验证。OpenJDK 团队选择稳妥起见,将其推迟到 JDK 28,确保质量。

按照 JDK 现在的尿性,我估计 JDK 28 中还真不一定保证有这个 JEP。

9 个 JEP 全景解析

JEP 523: G1 成为全环境默认 GC

这是 JDK 27 最具标志性的变化。自 JDK 9 起,G1 仅在“服务器环境”(多 CPU + 大内存)下作为默认 GC,单 CPU 或小内存环境(<< 1792MB)仍使用 Serial GC。

这次 JDK 27 做出了改变,无论何种环境,未指定 GC 时一律默认 G1

为什么现在可以?参考我的这篇文章《https://mp.weixin.qq.com/s/F_bNStJRD7Zo_kiSZKLHRg》。

  • JDK 26 的 JEP 522 通过引入双卡表(card table)和原子交换机制,大幅降低了 G1 的同步开销,吞吐量已接近 Serial GC
  • G1 的内存占用已优化到与 Serial 相当的水平
  • G1 的最大延迟始终优于 Serial(增量回收 vs 全量回收)

需要注意的是,部署到 Kubernetes 这类微服务(512MB 内存限制)时,不再意外获得 Serial GC 的“惊喜”。GC 行为更加统一和可预测。

JEP 534: 紧凑对象头默认启用

JDK 25 中作为实验性功能引入的紧凑对象头(Compact Object Headers),在 JDK 27 正式成为默认布局。

技术细节上,将 64 位架构下的对象头从 12 字节压缩到 8 字节,通过将类指针(Klass pointer)编码到 mark word 中实现。

实际收益非常惊艳,细节可以参考我的这篇文文章《https://mp.weixin.qq.com/s/Rrpv6Q95e5UP56oIbGOhMw》。

  • 堆内存占用减少 10-20%(对小对象密集的应用尤其明显)
  • 更好的 CPU 缓存命中率
  • 零配置:无需任何 JVM 参数,开箱即用

对于创建大量小对象的 Java 应用(这几乎是所有 Java 应用),这相当于是一个免费的性能午餐。

JEP 527: TLS 1.3 后量子混合密钥交换

这是 JDK 27 中唯一的全新永久功能(非预览/孵化),也是 Java 在后量子密码学领域的重要布局。

要知道,量子计算机的发展对现有 RSA/ECDH 加密体系构成根本性威胁。攻击者可能今天就开始“囤积”加密数据,等量子计算机成熟后解密(“先收集,后解密”攻击)。

现在,JDK 27 通过 JEP 527,为 TLS 1.3 引入三种混合密钥交换方案,将抗量子算法与传统算法结合:

  • X25519MLKEM768(默认最优先)
  • SecP256r1MLKEM768
  • SecP384r1MLKEM1024

细节方面,可以参考我的这篇文章《https://mp.weixin.qq.com/s/Q8cT5PggkO9rsV2oHXQuJw》。

升级 JDK 27 后,使用 javax.net.ssl API 的应用无需任何代码改动,即可自动获得抗量子攻击能力。

JEP 532: 模式匹配中的原始类型(第五预览)

这是 Project Amber 的重要拼图,允许在所有模式匹配上下文中使用原始类型(int, long, double 等),并扩展 instanceofswitch 支持原始类型。

经过 JDK 23-26 的四轮预览,该特性已非常成熟,预计将在未来版本转正。

过往预览改动等,可以参考我的这篇文章《https://mp.weixin.qq.com/s/apCxVXPATr7m3wp9Voe2HA》。

JEP 533: 结构化并发(第七预览)

基于 JDK 19-20 的孵化和 JDK 21-26 的多轮预览,结构化并发通过 StructuredTaskScope 将一组相关子任务视为单个工作单元,简化错误处理和取消传播。

对应的,JDK 27 中的改进如下。

  • 新增类型参数用于指定 join() 方法可能抛出的异常类型
  • 新增 open 静态方法,支持自定义配置

过往预览改动等,可以参考我的这篇文章《https://mp.weixin.qq.com/s/9e3Sk-7-vaQilSqMxsZFsg》。

JEP 531: 惰性常量(第三预览)

经过 JDK 25-26 的两轮预览,惰性常量在 JDK 27 迎来第三版预览。

本次预览的关键变更如下所示。

  • 移除 isInitialized()orElse() 方法(不符合设计目标)
  • 新增 ofLazy() 工厂方法,可为 ListSetMap 创建稳定的预定义惰性集合

对应的细节内容,可以参考我的这篇文章《https://mp.weixin.qq.com/s/tXjFe9Oce2dDS59_TAsuLg》。

JEP 537: Vector API(第十二孵化器)

Vector API 继续在孵化器中迭代,提供表达向量计算的 API,编译为 CPU 向量指令以获得超越标量计算的性能。

这是第 12 次预览了,它仍在等待 Project Valhalla 的值类型(Value Types)成为预览特性,届时 Vector API 将从孵化器升级为预览。

更多细节知识,参考我的这篇文章《https://mp.weixin.qq.com/s/iikrasY8poCd-EQvF8-E4w》。

JEP 536: JFR 进程内数据脱敏

这个 JEP 解决了一个长期存在的痛点:JFR 记录文件中可能包含明文敏感信息(数据库密码、API Token、环境变量等)。

JDK 27 的解决方案如下。

  • 默认自动脱敏命令行参数、环境变量和系统属性中的敏感数据
  • 内置默认过滤器(匹配 *password*, *token*, *secret* 等模式)
  • 支持自定义 glob 模式过滤器
  • 脱敏在进程内完成,数据离开 JVM 前已处理

举例来说,如果包含 --dbpassword SECRET 的启动命令,在 JFR 记录中显示为 --dbpassword [REDACTED]

更多细节知识内容,参见我的这篇文章《https://mp.weixin.qq.com/s/Lcp9pvGe74eaWlUBAqHiew》。

JEP 538: PEM 编码加密对象(第三预览)

本次预览,引入 API 用于将加密密钥、证书、CRL 编码为广泛使用的 PEM 格式,以及从 PEM 解码。经过三轮预览,API 已趋于稳定。

我预计,这个特性有望在 JDK 28 中正式解封。

更多内容参见《https://mp.weixin.qq.com/s/9e3Sk-7-vaQilSqMxsZFsg》。

总结

总的来说,JDK 27 是一个“润物细无声”的版本。没有颠覆性的语言特性,没有万众期待的 Valhalla 值类型,但它在 JVM 底层、安全基础设施和生产可观测性方面做出了扎实的改进。

G1 全面上位消除了环境差异带来的 GC 不确定性,紧凑对象头免费赠送内存效率,后量子加密为未来的安全威胁提前筑墙,JFR 脱敏堵住了一个长期存在的安全漏洞。

这些改进共同指向一个趋势,Java 平台正在从“提供多种选择”转向“提供合理的默认配置”,降低开发者的决策负担和运维复杂度。

对于我们广大 Java 开发者来说,JDK 27 值得在测试环境尝鲜,而其中的成熟特性(尤其是 G1 默认和紧凑对象头)将为未来的 LTS 版本(JDK 29)奠定坚实基础。

一个非 LTS 版本,除了紧凑对象头转正外,应该没有多少人尝鲜吧,毕竟不少人还在用 Java8 呢。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » JDK27 冻结定档,9 个 JEP,G1 全面上位、后量子加密落地