关于前端:JDK19中的新特性

1次阅读

共计 2535 个字符,预计需要花费 7 分钟才能阅读完成。

Java19 将于 9 月公布,是一个非 LTS 版本,它将以结构化并发、虚构线程、切换表达式模式匹配、向量 API(vector)和 Linux/RISC- V 端口为特色。

定于往年 9 月公布的 Java Development Kit 19 当初曾经实现了性能,并进入了第二个降级阶段。该版本有七个性能,包含结构化并发、记录模式、内部函数和内存 API 预览,以及对开源 Linux/RISC- V 指令集体系结构(ISA)的反对。

随着规范 Java 公布过程中的这一最新里程碑,其余打算中的性能,如通用泛型和值对象,将不得不期待平台的更高版本。JDK 19 紧随 3 月 22 日 JDK 18 的到来。规范 Java 的公布周期为六个月。

JDK 19 打算于 9 月 20 日正式公布用于生产,之前的候选版本将于 8 月 11 日和 8 月 25 日公布。上个月达到了初始阶段。JDK 19 的晚期拜访版本能够从 JDK.java.net/19 拜访。JDK 19 性能包含:

  • 在孵化器阶段,结构化并发(https://openjdk.org/jeps/428)旨在通过结构化并发 API 简化多线程编程。这种并发性将在不同线程中运行的多个工作视为单个工作单元,以简化错误处理和勾销。进步了可靠性和可观测性。

    • 记录模式 record 的预览(https://openjdk.org/jeps/405),用于解构 record 记录值。记录模式和类型模式能够嵌套,以实现申明性、弱小且可组合的数据导航和解决模式。该提案的指标包含扩大模式匹配以表白更简单、可组合的数据查问,同时不扭转类型模式的语法或语义。该提案以 instanceof 的模式匹配为根底,于 2021 在 JDK 16 中交付。将来的打算可能要求应用阵列模式和 vararg 模式等性能扩大记录模式。记录模式是 Amber 我的项目的一部分,该我的项目旨在摸索和培养更小的、面向生产力的 Java 个性。
    • 一个内部函数和内存 API 的预览(https://openjdk.org/jeps/424),它将引入一个 API,通过该 API,Java 程序能够与 Java 运行时之外的代码和数据进行互操作。通过无效地调用内部函数(即 JVM 内部的代码)和平安地拜访内部内存(即未由 JVM 治理的内存),API 使 Java 程序可能调用本机库并解决本机数据,而不会呈现 Java 本机接口(JNI)的危险和脆弱性。内部函数和内存 API 联合了两个晚期的孵化 API:内部内存拜访 API 和内部链接器 API。内部函数和内存 API 之前在 JDK 17 中孵化,并在 JDK 18 中从新计算。该提案的指标包含易用性、性能、通用性和安全性。

      • 虚构线程的预览(https://openjdk.org/jeps/425),这是一种轻量级线程,能够显著缩小编写、保护和察看高吞吐量并发应用程序的工作量。指标包含使以简略的申请线程格调编写的服务器应用程序可能以靠近最佳的硬件利用率进行扩大,并启用应用 java 的现有代码 java.lang Thread API 以最小的变动采纳虚构线程,并应用现有 JDK 工具对虚构线程进行故障排除、调试和评测。本提案的指标不是扭转 Java 中的根本并发模型,也不是在 Java 语言或 Java 库中提供新的数据并行构造。删除线程的传统实现或静默地将现有应用程序迁徙到虚构线程也不是指标。
      • switch 表达式和语句模式匹配的第三个预览(https://openjdk.org/jeps/427),将模式匹配扩大到 switch,容许针对多个模式测试表达式,每个模式都有一个特定的操作,因而能够简洁平安地表白简单的面向数据的查问。此性能以前在 JDK 17 和 JDK 18 中进行了预览。第三次预览将增加一些改良,包含在开关块中用 when 子句替换受爱护的模式。此外,当选择器表达式的值为 null 时,模式开关的运行时语义与传统开关语义更加统一。该打算的指标包含通过容许模式呈现在 case 标签中,扩大 switch 表达式和语句的表达能力和适用性。其余指标包含容许开发人员在须要时放松 switch 的历史性零敌意,进步 switch 语句的安全性,并确保现有的 switch 表达式和语句持续编译而不产生更改,并以雷同的语义执行。
      • 第四种是 vector 矢量 API(https://openjdk.org/jeps/426),它将矢量计算示意为在运行时牢靠编译为反对的 CPU 架构上的最优矢量指令,从而实现优于等效标量计算的性能。应用 API 的开发人员取得了一种用 Java 编写简单向量算法的办法,应用了热点主动向量器,但用户模型使向量化更加可预测和强壮。之前将载体 API 造就到 JDK 16、JDK 17 和 JDK 19 中。

        • 对 JDK 19 提出的 API 的改良包含加强了向 MemorySegment 加载和存储向量,这是由内部函数和内存 API 预览定义的。JDK 19 还将增加两个穿插车道矢量操作,压缩和扩大,以及互补矢量掩码压缩操作。压缩向量操作将由掩码抉择的源向量的车道按车道程序映射到指标向量,而开展操作则相同。压缩操作在过滤查问后果时很有用。除了矢量 API 之外,还将扩大逐位积分 lanewise 操作,包含计算一位的数量、反转位的程序以及压缩和扩大位等操作。API 的指标包含简洁明了、不依赖平台、在 x64 和 AArch64 体系结构上具备牢靠的运行时和编译性能,以及在向量计算无奈在运行时齐全示意为向量操作序列的状况下实现“优雅”降级。
      • 通过 Linux/RISC- V 端口,Java 将取得对硬件指令集的反对,这种硬件指令集曾经失去了各种语言工具链的反对。RISC- V 实际上是一个相干 ISA 家族。Linux/RISC- V 端口将仅反对 RISC- V 的 RV64GV 配置,这是一种蕴含矢量指令的通用 64 位 ISA。Java 开发人员未来可能会思考其余 RISC- V 配置。

该端口将反对以下 HotSpot VM 选项:模板解释器、C1(客户端)JIT 编译器、C2(服务器)JIT 编译程序,以及所有以后的主线垃圾收集器,包含 ZGC 和 Shenandoah。理论移植已靠近实现;JDK 加强打算(JEP)的重点是将端口集成到 JDK 主线存储库中。

与 JDK 18 一样,JDK 19 也将是短期版本,只有六个月的反对。

之前的版本 JDK 17 是一个长期反对(LTS)版本,反对了几年,直到 2021 9 月 14 日。

正文完
 0