3 月 17 日,JDK 14 迎来正式版发布(GA)。这一版的 JEP 数量相当可观,甚至超过了 Java 12 和 13 的总和。以下是本次更新的核心特性列表:
语言特性与语法改进
- Switch 表达式(Standard):在 JDK 12 与 13 预览后,switch 表达式现已成为稳定特性。它扩展了 switch 语句,使其可作为表达式使用,并支持简化的 case L -> 语法,简化日常编码并为模式匹配做准备。
- Records(Preview):提供紧凑语法声明类,帮助开发者写出更简洁的代码,适用于浅层不可变数据拥有者。主要用于特定领域的数据保存类。
- instanceof 模式匹配(Preview):通过模式匹配,开发者可以用更简洁和安全的方式表达通用逻辑,支持从对象中提取组件。
- 文本块(Second Preview):支持多行字符串文字,减少转义序列,自动格式化,极大提高 HTML 等代码引入时的可读性。
性能与底层优化
- ZGC 移植:将 ZGC 垃圾回收器成功移植到 macOS 和 Windows 平台,提升跨平台性能。
- NUMA-Aware 内存分配:针对 G1 实现 NUMA 感知内存分配,提升大型机器上的性能。
- 非易失性映射字节缓冲:添加新的文件映射模式,允许 FileChannel API 创建引用非易失性内存(NVM)的 MappedByteBuffer 实例。
- JFR 事件流:暴露 JDK Flight Recorder 数据以进行连续监视。
废弃与移除
- 移除 CMS 垃圾回收器:Concurrent Mark-Sweep 已被移除。
- 弃用 Solaris 和 SPARC 端口:Solaris/x64 和 Linux/SPARC 端口被弃用,未来版本将移除。
- 弃用 ParallelScavenge + SerialOld GC:该组合算法被弃用。
- 移除 Pack200 工具和 API:删除 java.util.jar 包中的 pack200 和 unpack200 工具及相关 API。
其他特性
- 打包工具(Incubator):创建用于打包独立 Java 应用程序的工具。
- 外部内存访问 API(Incubator):新增 API 允许 Java 程序安全有效地访问 Java 堆之外的外部内存。
- Helpful NullPointerExceptions:改进异常描述,准确指出哪些变量为 null,提高 JVM 生成异常的可用性。
官方可用于生产环境的二进制包下载地址:http://jdk.java.net/14/ 详细特性文档:http://openjdk.java.net/projects/jdk/14/


