JDK/Java 14 发布
3 月 17 日,JDK/Java 14 正式 GA。
此版本包含的 JEP(Java/JDK Enhancement Proposals,JDK 增强提案)比 Java 12 和 13 加起来的还要多。总共 16 个新特性如下:
305:Pattern Matching for instanceof (Preview)
为 instanceof 运算符引入模式匹配(预览阶段)
通过模式匹配,开发者可以用更简洁和更安全的方式来表达通用的程序逻辑。instanceof 运算符的模式匹配支持从对象中按条件来提取组件,此语言特性目前处于预览阶段。
343:Packaging Tool (Incubator)
打包工具(孵化阶段)
创建一个用于打包独立 Java 应用程序的工具。
345:NUMA-Aware Memory Allocation for G1
针对 G1 的 NUMA-Aware 内存分配
通过实现 NUMA-aware 内存分配,提升 G1 在大型机器上的性能。
JFR 事件流
暴露 JDK Flight Recorder 数据以进行连续监视。
352:Non-Volatile Mapped Byte Buffers
非易失性映射的字节缓冲
非易失性映射的字节缓冲将添加新的 JDK 特定文件映射模式,该模式允许 FileChannel API 用于创建引用非易失性内存(NVM)的 MappedByteBuffer 实例。
358:Helpful NullPointerExceptions
改进 NullPointerExceptions,通过准确描述哪些变量为 null 来提高 JVM 生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序为何异常终止的有用信息,并通过更清楚地将动态异常与静态程序代码相关联来提高对程序的理解。
Records 提供了一种紧凑的语法来声明类,以帮助开发者写出更简洁的代码,这些类是浅层不可变数据(shallowly immutable data)的透明拥有者。该特性主要用在特定领域的类,这些类主要用于保存数据,不提供领域行为。
361:Switch Expressions (Standard)
Switch Expressions 在 JDK 12 与 13 中都是预览状态,现在在 JDK 14 中已成为稳定特性。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配做好准备。
362:Deprecate the Solaris and SPARC Ports
弃用 Solaris 和 SPARC 端口
弃用 Solaris/SPARC, Solaris/x64 和 Linux/SPARC 端口,以便在未来的版本进行移除。
363:Remove the Concurrent Mark Sweep (CMS) Garbage Collector
移除 CMS(Concurrent Mark-Sweep) 垃圾回收器。
将 ZGC 垃圾回收器移植到 macOS。
将 ZGC 垃圾回收器移植到 Windows。
366:Deprecate the ParallelScavenge + SerialOld GC Combination
弃用 ParallelScavenge + SerialOld GC 的垃圾回收算法组合。
367:Remove the Pack200 Tools and API
移除 Pack200 工具和 API
删除 java.util.jar 包中的 pack200 和 unpack200 工具以及 Pack200 API。
368:Text Blocks (Second Preview)
文本块特性(Text Blocks)与常见的 Python"any input"特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,并以一种可预测的方式自动设置字符串格式,同时可以让开发人员控制格式。虽然这不是特别复杂的特性,但对于开发中想将 HTML 代码引入 Java 来说是极大的便利,代码可读性也极大提高。目前处于第二个预览阶段。
370:Foreign-Memory Access API (Incubator)
外部内存访问 API(孵化阶段)
新增一个 API 以允许 Java 程序安全有效地访问 Java 堆之外的外部内存。