2020年3月17日,JDK14正式发布。
JDK14将在4月和7月收到安全更新,然后由9月到期的非LTS版本的JDK 15取代。JDK14包括16项新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式等特征。
从JDK9之后,Oracle采用了新的发布周期:每6个月发布一个版本,每3年发布一个LTS版本。JDK14是继JDK9之后发布的第四个版本, 该版本为非LTS版本,最新的LTS版本为JDK11。
JDK14包含了比JDK12和JDK13加在一起还多的特性。共包括16项的新特性。
包括7项新特性,其中3项为正式特性,7项为非正式特性。
Switch Expressions 在 JDK 12 与 13 中都是预览状态,现在在 JDK 14 中已成为稳定特性。switch 表达式扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配做好准备
改进 NullPointerExceptions,通过准确描述哪些变量为 null 来提高 JVM 生成的异常的可用性。该提案的作者希望为开发人员和支持人员提供有关程序为何异常终止的有用信息,并通过更清楚地将动态异常与静态程序代码相关联来提高对程序的理解。
非易失性映射的字节缓冲将添加新的 JDK 特定文件映射模式,该模式允许 FileChannel API 用于创建引用非易失性内存(NVM)的 MappedByteBuffer 实例。
Records 提供了一种紧凑的语法来声明类,以帮助开发者写出更简洁的代码,这些类是浅层不可变数据(shallowly immutable data)的透明拥有者。该特性主要用在特定领域的类,这些类主要用于保存数据,不提供领域行为。
通过模式匹配,开发者可以用更简洁和更安全的方式来表达通用的程序逻辑。instanceof 运算符的模式匹配支持从对象中按条件来提取组件,此语言特性目前处于预览阶段。
文本块特性(Text Blocks)与常见的 Python"""any input"""特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,并以一种可预测的方式自动设置字符串格式,同时可以让开发人员控制格式。虽然这不是特别复杂的特性,但对于开发中想将 HTML 代码引入 Java 来说是极大的便利,代码可读性也极大提高。目前处于第二个预览阶段。
新增一个 API 以允许 Java 程序安全有效地访问 Java 堆之外的外部内存。
共包括6项新特性,修改均为正式状态。
通过实现 NUMA-aware 内存分配,提升 G1 在大型机器上的性能。
暴露 JDK Flight Recorder 数据以进行连续监视。
将 ZGC 垃圾回收器移植到 macOS和Windows平台。
共包括2个新特性。
共包括1个项子新特性。处于孵化状态。
创建一个用于打包独立 Java 应用程序的工具。
全部新特性如下:
305: instanceof的模式匹配(预览)
343: 包装工具(培养箱)
345: G1的NUMA感知内存分配
349: JFR事件流
352: 非易失性映射字节缓冲区
358: 有用的NullPointerExceptions
359: 记录(预览)
361: 开关表达式(标准)
362: 弃用Solaris和SPARC端口
363: 删除并发标记扫描(CMS)垃圾收集器
364: Mac OS上的ZGC你像
365: Windows上的ZGC
366: 弃用ParallelScavenge + SerialOld GC组合
367: 删除Pack200工具和API
368: 文本块(第二预览)
370: 外部存储器访问API(孵化器)
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。