虚拟线程、switch表达式的模式匹配、vector API和Linux/RISC-V端口将用于Java 19,这是标准Java的非LTS版本,将于9月发布。
定于今年9月发布的Java Development Kit 19现在正式提出了五项功能。最近新增的三个功能,一个外部函数和内存API、虚拟线程和模式匹配(所有预览),将之前提到的两个功能、一个vector API(第四个孵化器中)和一个JDK端口连接到开源Linux/RISC-V指令集架构(ISA)中。
根据正在进行的增强Java的计划,JDK 19,或者简单地说Java 19,可能拥有大量功能,从通用泛型到值对象。JDK 19将紧随3月22日抵达的JDK 18。标准Java的发布周期为六个月。
OpenJDK开发人员已经发布了JDK 19的正式发布时间表,将于9月20日作为生产版本发布,之前将于6月9日和7月21日进行升级,并将于8月11日和8月25日发布候选版本。
JDK 19的早期访问版本可以从JDK访问:http://jdk.java.net/19/。建议的JDK 19功能包括:
- 一个外部函数和内存API的预览,它将引入一个API,通过该API,Java程序可以在Java运行时之外与代码和数据进行互操作。通过高效地调用外部函数(即Java运行时之外的代码)和安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本机库并处理本机数据,而不存在Java本机接口(JNI)的危险和脆弱性。foreign function and memory API结合了两个早期的孵化API,即foreign memory access API和foreign linker API。外来函数和内存API之前在JDK 17中孵化,并在JDK 18中重新计算。该提案的目标包括易用性、性能、通用性和安全性。
- 虚拟线程的预览,这是一种轻量级线程,可以显著减少编写、维护和观察高吞吐量并发应用程序的工作量。目标包括使以简单的每请求线程风格编写的服务器应用程序能够以接近最佳的硬件利用率进行扩展,使现有的代码能够使用java.lang Thread API采用虚拟线程,改动最小,并使用现有JDK工具对虚拟线程进行故障排除、调试和评测。本提案的目标不是改变Java中的基本并发模型,也不是在Java语言或Java库中提供新的数据并行结构。它的目标也不是移除线程的传统实现,或者静默地将现有应用程序迁移到使用虚拟线程。
switch
表达式和语句的模式匹配的第三个预览,将模式匹配扩展到switch,以允许根据多个模式测试一个表达式,每个模式都有一个特定的操作,因此可以简洁而安全地表达复杂的面向数据的查询。这一功能之前在JDK 17和JDK 18中进行了预览。第三次预览将添加一些改进,包括在开关块中用when
子句替换受保护的模式。此外,当选择器表达式的值为null
时,模式开关的运行时语义与传统开关语义更为一致。该计划的目标包括通过允许模式出现在案例标签中,扩展开关表达式和语句的表达性和适用性,允许在需要时放松开关的历史无效性,增加开关语句的安全性,并确保现有的switch表达式和语句继续编译而不做任何更改,并以相同的语义执行。- 第四种是vector API,它可以表达矢量计算,在运行时可靠地编译为支持的CPU架构上的最佳矢量指令,从而实现优于等效标量计算的性能。使用API的开发人员获得了一种用Java编写复杂向量算法的方法,使用HotSpot auto vectorizer,但使用的用户模型使向量化更加可预测和健壮。之前,vector API被培育成JDK 16、JDK 17和JDK 19。针对JDK 19提出的API的改进包括,根据外部函数和内存API预览的定义,在MemorySegment之间加载和存储向量。JDK 19还将添加两个交叉通道向量操作,压缩和扩展,以及一个互补的向量掩码压缩操作。压缩向量操作将由掩码选择的源向量的车道按车道顺序映射到目标向量,而展开操作则相反。压缩操作在过滤查询结果时很有用。除了vector API之外,还将扩展逐位积分lanewide操作,包括计算一位的数量、反转位的顺序以及压缩和扩展位等操作。该API的目标包括简洁明了、平台无关、在x64和AArch64体系结构上具有可靠的运行时和编译性能,以及在向量计算无法在运行时完全表示为向量操作序列的情况下实现“优雅”降级。
- 有了Linux/RISC-V端口,Java将获得对硬件指令集的支持,这种硬件指令集已经得到了各种语言工具链的支持。RISC-V实际上是一个相关ISA家族。Linux/RISC-V端口只支持RISC-V的RV64GV配置,RISC-V是一种包含向量指令的通用64位ISA。Java开发人员将来可能会考虑其他RISC-V配置。该端口将支持以下热点VM选项:模板解释器、C1(客户端)JIT编译器、C2(服务器)JIT编译器,以及所有当前的主线垃圾收集器,包括ZGC和Shenandoah。实际移植几乎完成;JDK增强计划(JEP)的重点是将端口集成到JDK主线存储库中。
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2649.html
暂无评论