外媒 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 版本,只要六个月的支持期,在此不太建议大家在生产环境中直接使用,不过其中的功能特性可供尝鲜。你期待吗?