内容提要
JDK 27于2026年9月15日发布,包含9项JEP。重点包括:JEP 527默认启用TLS 1.3后量子混合密钥交换,无需代码改造即可防御“先收集后解密”威胁;JEP 534默认启用紧凑对象头,堆内存平均节省约20%;JEP 523将G1设为默认GC;JEP 536支持JFR写入前脱敏敏感信息。另有PEM编解码、惰性常量、结构化并发等预览特性。JEP 528进程复活诊断延期至JDK 28。升级需注意内置HttpServer路径匹配变更及JVMCI移除等风险。
延伸解读
后量子TLS的兼容性考量
JEP 527默认启用后量子混合密钥交换,但需注意:若代码硬编码了传统密钥组,可能无法自动启用。此外,ML-KEM私钥默认使用seed格式保存,旧版本JDK无法读取,跨版本兼容需设置系统属性jdk.mlkem.pkcs8.encoding=expandedKey。升级前应检查TLS配置和密钥存储的兼容性。
紧凑对象头的实际收益与限制
JEP 534默认启用紧凑对象头,堆内存平均节省约20%,但业务场景中收益可能低于理论值,大数组和字符串几乎无法受益。若遇到兼容性问题,可通过-XX:-UseCompactObjectHeaders回退,但该参数未来计划废弃。注意,JDK27唯一P1级bug仅在开启紧凑对象头时触发,已在RC前修复。
G1成为全平台默认GC的影响
JEP 523将G1设为所有环境下的默认垃圾收集器,消除了小内存机器自动降级为Serial GC的行为。这简化了GC调优,但若应用依赖Serial GC的低开销特性,需显式使用-XX:+UseSerialGC。同时,AlwaysActAsServerClassMachine等参数被移除,Dockerfile中若保留会打印警告但不影响启动。
升级风险:HttpServer与JVMCI移除
内置HttpServer路径匹配从前缀匹配改为完整路径段匹配,/foo不再匹配/foobar,可能破坏依赖此行为的工具,可通过系统属性临时回退。此外,JVMCI被彻底移除,标准OpenJDK无法运行Graal JIT或Truffle语言,相关项目需自行维护下游分支或等待GraalVM的JDK27支持。
Q&A
JDK 27 在安全方面最重要的新特性是什么?
JEP 527:TLS 1.3 后量子混合密钥交换,默认启用,无需修改代码即可防御“先收集后解密”的量子威胁。
JDK 27 默认启用紧凑对象头能带来多少内存节省?
堆内存平均节省约20%,在特定测试场景下可达29%,但大数组和字符串获益较少。
JDK 27 中垃圾收集器默认设置有什么变化?
所有环境下默认使用 G1 GC,不再根据 CPU 核心数和内存大小自动降级为 Serial GC。
JFR 在 JDK 27 中如何防止敏感信息泄露?
JEP 536 让 JFR 在写入磁盘前对命令行参数、环境变量、系统属性中的敏感信息进行脱敏,默认匹配 password、secret、token 等模式。
为什么 JEP 528 进程复活诊断没有进入 JDK 27?
因评审中发现复活逻辑易被破坏、强制解锁互斥锁风险高、API 设计争议等问题,作者主动撤回,延期至 JDK 28。
升级到 JDK 27 需要注意哪些风险?
内置 HttpServer 路径匹配变更、ML-KEM/ML-DSA 密钥格式变化、JVMCI 移除影响 Graal/Truffle、不再提供 Intel Mac 官方包。