Java 开发者们,Java 27 即将在本周二(9 月 15 日)正式发布!
Java 每 6 个月一个新版本,虽然节奏很快,但并不是每次更新都值得你停下手里的项目去全量重构。
这篇文章帮大家抓重点:
- 从 9 个 JEP(JDK 改进提案)中,有哪些是直接能下生产的正式特性?
- 哪些默认参数的调整能帮你的 JVM*省内存、提性能、加安全*?
- 预览与孵化特性(Preview / Incubator)又走到了哪一步?
发布时间:2026 年 9 月 15 日
核心焦点:共计 9 个 JEP(4 个正式特性,5 个预览/孵化特性)
一图看完 Java 27 的主要更新
| 模块 | 特性 (JEP) | 状态 | 实际意义 |
|---|---|---|---|
| GC | 全局默认 G1 GC (JEP 523) | 正式 | 统一内存回收策略,告别资源受限环境下的旧 GC |
| GC / 内存 | Compact Object Headers 默认开启 (JEP 534) | 正式 | 显著降低堆内存与 CPU 开销,减轻 GC 压力 |
| 可观察性 | JFR 敏感信息默认脱敏 (JEP 536) | 正式 | 保护密码、API Key 等敏感环境变量与 JVM 参数 |
| 加密安全 | TLS 1.3 后量子混合密钥交换 (JEP 527) | 正式 | 具备抗量子计算攻击能力,面向未来安全 |
| 并发/语言 | Lazy Constants (JEP 531) | 第三预览 | 简化 API,移除 isInitialized/orElse,新增 setOfLazy
|
| 语言 | Primitive Type Patterns (JEP 532) | 第五预览 | 原始类型模式匹配持续打磨 |
| 并发 | Structured Concurrency (JEP 533) | 预览 | 结构化并发 API 细节优化与调整 |
| 加密安全 | PEM Encodings API (JEP 538) | 预览 | 内置 PEM 编码 API 细节完善 |
| 性能计算 | Vector API (孵化) | 最后一次孵化 | 准备在 JDK 28 配合 Valhalla 合并进入 Preview |
真正影响生产力的 4 大正式更新
统一 GC 策略:G1 GC 成为全局默认 GC (JEP 523)
在之前的版本中,如果在资源受限的环境(如小内存容器或特定单核环境)运行 JVM,平台可能会退回使用 Serial GC 或 Zero GC。
Java 27 通过 JEP 523 将 G1 GC 设置为全局默认垃圾回收器,彻底终结了这一行为差异。
💡 建议:
- 生产环境的容器镜像在升级 Java 27 后,垃圾回收器的表现将更加一致,不再需要手动强制指定
-XX:+UseG1GC。 - 对于极度微缩的 Serverless 极小内存实例,建议关注升级后的内存占用基线。
更轻的对象头:Compact Object Headers 默认开启 (JEP 534)
紧凑对象头(Compact Object Headers)在 JDK 25 中作为正式功能引入,而在 Java 27 中正式通过 JEP 534 调整为默认启用!
这一改动显著降低了对象占据的内存空间,从而直接减轻 CPU 开销与 GC 压力。
💡 提示:
# 在 JDK 27 中已是默认行为,无需显式声明:
# -XX:+UseCompactObjectHeaders
- 开箱即用:升级即享受更小的堆内存开销。
- 兼容性排查:若应用深度依赖 JNI 或特定 Unsafe 内存布局,升级测试时需重点关注。
更加安全的可观察性:JFR 敏感信息默认脱敏 (JEP 536)
JEP 536 让 JDK Flight Recorder (JFR) 在默认情况下会自动对日志和事件中的敏感信息进行脱敏(Redaction)处理。
这包括环境变量、JVM 启动参数中的密码(Passwords)、API 密钥(API Keys)等隐私数据。
🔧 自定义脱敏规则:
你还可以通过 JFR 选项自定义过滤规则:
java -XX:FlightRecorderOptions=redact-key=<KeyPattern>,redact-argument=<ArgPattern> -jar app.jar
后量子安全时代:TLS 1.3 后量子混合密钥交换 (JEP 527)
为了应对未来量子计算可能带来的解密风险,Java 27 通过 JEP 527 为 TLS 1.3 引入了抗量子计算攻击的后量子混合密钥交换算法(Post-Quantum Hybrid Key Exchange Algorithms)。
这是 Java 平台为“后量子时代(Post-Quantum World)”做出的一系列底层安全升级之一。
5 大预览与孵化特性进展
除了上述下生产即可受益的改动,Java 27 在预览特性上也做出了不少关键调整:
-
Lazy Constants(JEP 531 - 第三预览)
- 删除了
isInitialized()和orElse()方法。 - 新增了工厂方法
setOfLazy(),使延迟常量的用法更加贴近现代标准。
- 删除了
-
Primitive Type Patterns(JEP 532 - 第五预览)
- 保持第五次预览状态,未改变 API,离正式稳定更近一步。
-
Structured Concurrency(JEP 533 - 预览)
- 结构化并发 API 迎来若干细节更新,建议使用虚拟线程(Virtual Threads)的高并发应用持续关注 JEP 变更列表。
-
PEM Encodings API(JEP 538 - 预览)
- 针对 PEM 编解码 API 进行了深入的重构与调整。
-
Vector API(最后一次孵化!)
- Vector API 进入了它的最后一次孵化阶段。
- 官方明确表示:随着 Project Valhalla 的核心特性将在 JDK 28 合并,Vector API 将终于具备成熟条件,在下一个版本(JDK 28)正式升格为 Preview 状态!
升级与行动建议
| 步骤 | 建议动作 | 说明 |
|---|---|---|
| 1️⃣ | 测试环境切到 JDK 27 | 验证业务代码及第三方依赖的兼容性 |
| 2️⃣ | 内存与性能基准测试 | 评估默认开启 Compact Object Headers 带来的内存收益 |
| 3️⃣ | 检查 JFR 审计日志 | 验证敏感参数脱敏机制是否符合安全合规要求 |
| 4️⃣ | 评估预览 API 的更新 | 关注 Lazy Constants 与 Structured Concurrency 的 API 破坏性改动 |
💬 总结:要不要升 Java 27?
| 业务场景 | 建议 |
|---|---|
| 新项目 / 边缘服务 | 直接上 Java 27,体验开箱即用的内存优化与极佳一致性 |
| Java 21 LTS 项目 | 建议在 staging 环境体验测试,关注 GC 与安全特性 |
| 老旧 JDK 版本项目 | 赶紧规划升级路线,别落后太远!😅 |
TL;DR — 最推荐关注的 3 大改动
- Compact Object Headers 默认开启:省堆内存,减 GC 压力。
- G1 GC 全局默认:统一容器化环境下的内存回收表现。
- JFR 默认脱敏:安全合规再提升,防止敏感信息泄漏。
你准备好升到 Java 27 了吗?最期待哪个特性?欢迎在评论区聊聊你的实测体验!
Top comments (0)