JDK 20:Java 20 中的新特性 | infoworld

22-12-11 banq

Java 20 或 Java Development Kit (JDK) 20 是标准 Java 的下一个计划版本,现已功能齐全。正式标记为发布的六个功能处于孵化或预览阶段。这些包括作用域值、记录模式、switch 语句和表达式的模式匹配、外部函数和内存 API、虚拟线程和结构化并发。

以下是 JDK 20 的六个特性:
  • Scoped values是处于孵化器开发阶段的 API,它支持在线程内和线程间共享不可变数据。这些变量优于线程局部变量,尤其是在使用大量虚拟线程时。作用域值允许在大型程序中的组件之间安全有效地共享数据,而无需求助于方法参数。目标包括易用性、可理解性和性能。
  • 记录模式,在第二个预览中,使用模式增强 Java 编程语言以解构记录值。可以嵌套记录模式和类型模式,以实现声明式、强大且可组合的数据导航和处理形式。目标包括扩展模式匹配以表达更复杂、可组合的数据查询,并且不改变类型模式的语法或语义。自JDK 19中的第一个预览版以来的主要变化包括添加对通用记录模式的类型参数推断的支持,支持记录模式出现在增强for语句的标头中,以及删除对命名记录模式的支持。
  • 外部函数和内存 API引入了一种 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。API 使 Java 程序能够调用本机库并处理本机数据,而没有 JNI(Java 本机接口)的脆弱性和危险性。该 API 之前在 JDK 版本 17 和 18 中孵化,并在 JDK 19 中进行了预览。自 JDK 19 以来添加的改进包括统一和MemorySegment抽象MemoryAddress、增强的MemoryLayout层次结构以及拆分MemorySession和Arena促进SegmentScope 跨维护边界的段共享。
  • 虚拟线程 是轻量级线程,可减少编写、维护和观察高吞吐量并发应用程序的工作量。自 JDK 19 中的第一个预览版以来的微小变化包括少量 API 更改(在 JDK 19 中永久化)和降级ThreadGroup(也在 JDK 19 中永久化)。
  • 结构化并发具有一个 API 来简化多线程编程,并将在不同线程中运行的多个任务视为一个工作单元。简化了错误处理和取消,提高了可靠性并增强了可观察性。自从在 JDK 19 中孵化以来,唯一的变化是它StructuredTaskScope已经更新为支持在任务范围内创建的线程继承范围值。
  • switch 语句和表达式的模式匹配可以简洁、安全地表达复杂的面向数据的查询。之前在JDK 17JDK 18JDK 19中进行过预览,第四次预览将实现与[url=https://openjdk.org/jeps/432]Record Patterns 的[/url]持续共同进化,允许根据经验和反馈进行持续改进。自第三次预览以来,switch 模式匹配的主要变化包括简化 switch 标签的语法,支持推断 switch 语句和表达式中通用模式和记录模式的类型参数。此外,现在会抛出对枚举类的详尽切换MatchException,而不是IncompatibleClassChangeError在运行时没有应用切换标签时抛出。

没有进入JDK 19但仍在为 Java 考虑的功能包括通用泛型字符串模板序列化集合异步堆栈跟踪 VM API。可以在jdk.java.net找到 JDK 20 的早期访问版本

JDK 20 将于 2023 年 1 月 19 日进入第二个 rampdown 阶段,并在 2 月发布两个候选版本。JDK 20 被设置为短期功能版本,只有六个月的 Oracle 高级支持。将于 2023 年 9 月发布的 JDK 21 将是一个长期支持版本,并得到多年的支持。