JDK 20:Java 20 中的新特性

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

根据 Oracle 的 Java 平台组首席架构师 Mark Reinhold 的公告,Java 20 已于 2 月 9 日进入候选发布阶段。 第二个候选版本将于 2 月 23 日到期。该版本于 12 月 8 日进入初始下降阶段,随后于 1 月 19 日进入下降阶段,开发人员希望修复错误并可能添加后期增强功能,但需要获得批准。 JDK 将于 2023 年 3 月 21 日全面上市,这是 Oracle 标准 Java 版本六个月发布节奏的一部分。 JDK 20 将在 9 月 20 日发布的 JDK 19 之后发布。可以在 jdk.java.net 上找到 JDK 20 的早期访问版本。

以下是 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 以来添加的改进包括统一 MemorySegmentMemoryAddress 抽象,增强 MemoryLayout 层次结构和分裂 MemorySession 进入 ArenaSegmentScope 促进跨维护边界的段共享。 在第二个预览版中,虚拟线程是轻量级线程,可减少编写、维护和观察高吞吐量并发应用程序的工作量。 自 JDK 19 中的第一个预览版以来的微小变化包括少量 API 更改(在 JDK 19 中永久化)和降级到 ThreadGroup (在 JDK 19 中也是永久性的)。 结构化并发具有一个 API 来简化多线程编程,并将在不同线程中运行的多个任务视为一个工作单元。 简化了错误处理和取消,提高了可靠性并增强了可观察性。 自从在 JDK 19 中孵化以来,唯一的变化是 StructuredTaskScope 已更新以支持在任务作用域中创建的线程继承作用域值。 此功能正在重新孵化。 switch 语句和表达式的模式匹配可以简洁、安全地表达复杂的面向数据的查询。 之前在 JDK 17、JDK 18 和 JDK 19 中进行过预览,这第四次预览将实现与记录模式的持续共同进化,允许根据经验和反馈进行持续改进。 自第三次预览以来,switch 模式匹配的主要变化包括简化 switch 标签的语法,支持推断 switch 语句和表达式中通用模式和记录模式的类型参数。 此外,对枚举类的详尽切换现在会抛出 MatchException 而不是 IncompatibleClassChangeError 如果在运行时没有应用开关标签。

没有进入 JDK 20 但仍在为 Java 考虑的功能包括通用泛型、字符串模板、序列化集合和异步堆栈跟踪 VM API。

JDK 20 被设置为短期功能版本,只有六个月的 Oracle 高级支持。 将于 2023 年 9 月发布的 JDK 21 将是一个长期支持版本,并得到多年的支持。

阅读更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注