Ohhnews

分类导航

$ cd ..
InfoQ Java原文

JDK 27 与 JDK 28:目前已知信息汇总

#java#jdk 27#jdk 28#openjdk#新特性

JDK 27 是自 JDK 25 以来的第二个非长期支持(non-LTS)版本,目前已进入首个候选发布阶段,最终确定包含九项新特性(以 JEP 形式呈现),可归为四大类别:Core Java Library(核心 Java 库)、HotSpotSecurity Library(安全库)和 Java Language Specification(Java 语言规范)。本文将审视 JDK 27,并预测哪些特性已纳入或可能纳入 JDK 28。

JDK 27 是自 JDK 25 以来的第二个非长期支持(non-LTS)版本,已如 Oracle Java 平台组首席架构师 Mark Reinhold宣布的那样进入首个候选发布阶段。主线源码仓库已于 2026 年 6 月初(第一阶段降速)分叉至 JDK 稳定化仓库,该仓库定义了 JDK 27 的特性集。关键错误(如回归或严重功能问题)仍可修复,但必须通过 Fix-Request 流程批准。根据发布日程,JDK 27 将于 2026 年 9 月 15 日正式发布。最终确定的九(9)项新特性(以 JEP 形式呈现)可归为四(4)个类别:Core Java LibraryHotSpotSecurity LibraryJava Language Specification

其中三(3)项新特性归入 Core Java Library 类别:

其中三(3)项新特性归入 HotSpot 类别:

其中两(2)项新特性归入 Security Library 类别:

最后,其中一(1)项新特性归入 Java Language Specification 类别:

我们审视其中部分新特性,并说明它们隶属于哪些主要 Java 项目——AmberLoomPanamaValhallaLeyden——这些项目旨在通过精心策划的合并,孵化一系列组件并最终纳入 JDK。

Project Amber

JEP 532,模式、instanceof 和 switch 中的原始类型(第五次预览),提议在 JDK 23 至 JDK 26 中交付的四轮预览之后,进行第五次预览,并包含两项变更。该特性增强了模式匹配,允许在所有模式上下文中使用原始类型,并扩展 instanceofswitch 结构以支持所有原始类型。变更包括:完善无条件精确性(unconditional exactness)的定义;以及在 switch 结构中应用更严格的支配性(dominance)检查。

Project Loom

JEP 533,Structured Concurrency(第七次预览),提议在 JDK 21 至 JDK 26 中交付的六轮预览以及 JDK 19 至 JDK 20 中交付的两轮孵化之后,进行第七次预览,并包含少量变更。该特性通过引入结构化并发来简化并发编程,旨在"将不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性,并增强可观测性。"

Project Panama

JEP 537,Vector API(第十二次孵化),提议在 JDK 16 至 JDK 26 中交付的十一轮孵化之后,进行第十二次孵化,且自 JDK 25 以来无实质性实现变更。该特性引入了一个 API,用于"表达向量计算,这些计算在运行时能够可靠地编译为支持的 CPU 架构上的最优向量指令,从而获得优于等效标量计算的性能。" Vector API 将继续孵化,直到 Project Valhalla 的必要特性作为预览功能可用。届时,Vector API 团队将调整 Vector API 及其实现以使用这些特性,并将 Vector API 从 Incubation(孵化)提升为 Preview(预览)。

Security Library

JEP 538,加密对象的 PEM 编码(第三次预览),提议在 JDK 25 和 JDK 26 中交付的两轮预览之后进行第三次预览。该特性提供"一个 API,用于将表示加密密钥、证书和证书撤销列表的对象编码为广泛使用的 Privacy-Enhanced Mail(PEM)传输格式,以及从该格式解码回对象。" 该 JEP 将支持 PEM 文本与 PKCS #8X.509 二进制格式中的加密对象之间的转换。变更包括:将 PEM 记录类重新分类为常规类,以方便提供接受字节数组中 Base64 编码内容的构造函数;以及将 DEREncodable 接口重命名为 BinaryEncodable,以更准确地描述 PEM 文本中存储的二进制数据。

HotSpot

JEP 536,JFR 进程内数据编辑,提议增强 JDK Flight Recorder(JFR),使其在 JFR 完成记录之前编辑敏感信息。这些数据可能包括命令行参数、环境变量和系统属性的初始值。

JEP 534,默认启用紧凑对象头,提议将 JDK 25 中交付的 JEP 519 紧凑对象头设为 HotSpot JVM 中的默认对象头布局。有关紧凑对象头的更多详情,请参阅 InfoQ 的这篇新闻报道

JEP 523,在所有环境中将 G1 设为默认垃圾收集器,提议将 Garbage-First 垃圾收集器(G1 GC)设为"所有环境中的默认垃圾收集器,而不仅仅是服务器环境。" 如果命令行中未指定垃圾收集器,HotSpot JVM 将始终选择 G1 GC。

JDK 28

JDK 28 计划于 2027 年 3 月正式发布(GA),目前将包含六(6)项 JEP(五(5)项 Targeted(已定向)和一(1)项 Proposed to Target(提议定向))。我们还将推测哪些 JEP 候选和草案有可能被纳入 JDK 28,尤其是那些已提交或作为增量预览的 JEP。

JEP 541,弃用 macOS/x64 移植版以移除,已被 Targeted 定向纳入 JDK 28。该 JEP 提议弃用 macOS/x64 移植版,因为 Apple 已不再支持该架构。与 JEP 449 弃用 Windows 32 位 x86 移植版以移除类似,其意图是在未来版本中移除该移植版以节省维护成本。

JEP 540,Simple JSON API(孵化器),已被 Targeted 定向纳入 JDK 28。该 JEP 定义了一个简单、标准的 API,用于解析和生成 JSON 文档,无需外部库。该特性实现了 RFC 8259 JavaScript Object Notation(JSON)数据交换格式,并取代现已关闭并撤回的 JEP 198 Light-Weight JSON API

JEP 539,JVM 中的严格字段初始化(预览),已被 Targeted 定向纳入 JDK 28。该 JEP 在 Java 虚拟机中引入了严格初始化字段,这些字段必须在被读取之前完成初始化。因此,永远不会观察到 0 或 null 等默认值。该特性可供生成类文件的编译器使用。

JEP 535,Shenandoah GC:默认启用分代模式,已被 Targeted 定向纳入 JDK 28。该 JEP 提议将 Shenandoah 垃圾收集器默认设为分代模式。非分代模式将被弃用,并计划在未来版本中移除。

JEP 401,Value Objects(预览),已被 Targeted 定向纳入 JDK 28。该 JEP 前身为 Object Classes and Values(预览),提议用_值对象_增强语言,值对象定义为:仅包含 final 字段;没有标识(identity);仅由各自字段的值来区分的对象。有关 JEP 401 的更多详情,请参阅 InfoQ 的这篇新闻报道

JEP 542,加密对象的 PEM 编码,已被 Proposed to Target 提议定向纳入 JDK 28。该 JEP 提议在 JDK 25 至 JDK 27 中交付的三轮预览之后最终确定该特性。该特性提供"一个 API,用于将表示加密密钥、证书和证书撤销列表的对象编码为广泛使用的 Privacy-Enhanced Mail(PEM)传输格式,以及从该格式解码回对象。" 该 JEP 将支持 PEM 文本与 PKCS #8X.509 二进制格式中的加密对象之间的转换。变更包括:将 PEM 记录类重新分类为常规类,以方便提供接受字节数组中 Base64 编码内容的构造函数;以及将 DEREncodable 接口重命名为 BinaryEncodable,以更准确地描述 PEM 文本中存储的二进制数据。

JEP Draft 8389764Lazy Constants(第四次预览),提议在即将发布的 JDK 27 以及 JDK 25 至 JDK 26 中交付的三轮预览之后,进行第四次预览,且无变更。该特性前身为 Stable ValuesComputed Constants,引入了_计算常量_的概念,定义为最多初始化一次的不可变值持有者。这提供了 final 字段的性能和安全性优势,同时在初始化时机方面提供了更大的灵活性。随着 JDK 26 的发布,名称从 Stable Values 变更为 Lazy Constants,更好地体现了高级用例的意图。

JEP Draft 8329758通过 ZGC 实现更快的启动和预热,提议增强 Z 垃圾收集器,以更高效地响应应用程序的需求分配内存。通过仅创建较小的初始堆来减少操作系统的开销,可以最大限度地缩短启动时间。

请注意,草案 JEP 可能随时发生变更。

我们预计 Oracle 很快将为 JDK 28 定向更多 JEP。

关于作者

Michael Redlich

Michael Redlich 在过去 25 年中一直是 Java 社区的活跃成员。他于 2001 年创立了 Garden State Java User Group(前身为 ACGNJ Java Users Group),该组织至今持续运营。自 2016 年起,Mike 担任 InfoQ 的 Java 社区新闻编辑,贡献包括每月新闻条目、技术写作和技术评审。他曾在 Oracle Code One、Emerging Technologies for the Enterprise、Trenton Computer Festival(TCF)、TCF IT Professional Conference 以及众多 Java User Group 等场合发表演讲。Mike 是 Jakarta NoSQL 和 Jakarta Data 规范的提交者(committer),并参与 Jakarta EE Ambassadors 的领导委员会。他于 2023 年 4 月被授予 Java Champion 称号。Mike 最近从位于新泽西州克林顿的 ExxonMobil Technology & Engineering 退休,拥有 33 年半的工作经验,期间开发了定制科学实验室和 Web 应用程序。他还曾在 Ai-Logix, Inc.(现为 AudioCodes)担任技术支持工程师,为客户提供技术支持并开发电话应用程序。

显示更多 显示更少