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日。