JDK 18/Java 18 已于上个月发布,按计划 JDK 19 将于今年 9 月发布,这不,还没等众多开发者用上 Java 18,关于 Java 19 最新的两个目标功能就被披露了出来。
日前官方提出了二个将于下个版本推出的特性。一个是 Vector API,另一个则是将 JDK 移植到 RISC-V。其中前者 Vector API 是一个表达向量计算的 API,它将在下一个 Java 版本中进行第四次孵化;后者提议的功能是将 JDK 移植到开源的 Linux/RISC-V 指令集架构(ISA)。
虽说 JDK 19 可能会承载大量的特性 ,例如通用泛型、值对象和记录模式,但到目前为止,官方针对 JDK 19 仅仅提出了 Vector API 和移植到 RISC-V 两个特性。
据外媒 InfoWorld 报道,根据正在进行的增强 Java 计划,Java 19 有可能承载大量功能,包括从通用泛型到值对象。其中,官方在 Java 19 中明确提出的两个最新特性分别是:用于表达向量计算的 Vector API,它将在 Java 下一版本中进行第四次孵化;将 JDK 一直到开源的 Linux/RISC-V 指令集架构(ISA)。
用于表达向量计算的 Vector API,该计算可以在运行时可靠地编译为支持的 CPU 架构上的最佳矢量指令。使用该 API 的开发者可基于一个用户模型,使用支持自动矢量化的 HotSpot,从而获得了一种在 Java 中编写复杂矢量算法的方法,使矢量化更可预测和稳健。
在开发设计时,这个 API 主要目标包括了四个方面。一是,API 能够清晰简洁地表达范围广泛的向量计算;二是 API 与 CPU 架构无关,可以在支持向量指令的多个架构上实现;三是在 x64 和 AArch64 架构上具有可靠的运行和编译性能;四是能够实现 "优雅 "的降级,以应对矢量计算在运行时不能完全表达为矢量操作序列的情况。Vector API 先前已被纳入 JDK 16、JDK 17 和 JDK 19。
随着 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 主线库中。
而除了以上两种特性之外,允许 Java 程序与 JVM 运行时之外的代码和数据互操作的 Foreign Function 和 Memory API 也或将出现在 Java 19 中。
值得大家关注的是,和 Java 18 一样,Java 19 同样是非 LTS 版本,只要六个月的支持期,在此不太建议大家在生产环境中直接使用,不过其中的功能特性可供尝鲜。
根据官方发布的时间表,JDK 19 将于 9 月 20 日发布 GA 版本,在此之前是 6 月 9 日和 7 月 21 日的 Rampdown 阶段,以及 8 月 11 日和 8 月 21 日发布的候选版本。
与 JDK 18 一样,JDK 19 也将是一个短期版本,只有六个月的支持。目前最新的 LTS 版本为 2021 年 9 月 14 日发布的 JDK 17,下一个 LTS 版本将是 2023 年 9 月发布的 JDK 21。