Java 21:下一个LTS版本,提供了虚拟线程、记录模式和模式匹配

作者 | Michael Redlich
译者 | 平川
策划 | 丁晓昀
Oracle 发布 JAVA 编程语言和虚拟机的第 21 个版本 。这是自 2021 年 JDK 17 发布以来的第一个长期支持(LTS)版本 。最终的特性集包括以下 15 个 JEP:

  • JEP 430:字符串模板(预览版)
  • JEP 431:有序集合
  • JEP 439:分代式 ZGC
  • JEP 440:记录模式
  • JEP 441:switch 模式匹配
  • JEP 442:外部函数 & 内存 API(第三个预览版)
  • JEP 443:未命名模式和变量(预览版)
  • JEP 444:虚拟线程
  • JEP 445:未命名类和实例的 MAIn 方法(预览版)
  • JEP 446:作用域值(预览版)
  • JEP 448:向量 API(第六轮孵化)
  • JEP 449:弃用 windows 32-bit x86 移植,为删除做准备
  • JEP 451:准备禁用代理的动态加载
  • JEP 452:密钥封装机制 API
  • JEP 453:结构化并发(预览版)
其中有三个——虚拟线程、记录模式和 switch 模式匹配——已经完成了各自的预览,现已最终确定 。
如下图所示,JDK 21 的特性开发节奏和前两个 LTS 版本(即 JDK 17 和 JDK 11)以及以前其他的 JDK 版本类似 。
Java 21:下一个LTS版本,提供了虚拟线程、记录模式和模式匹配

文章插图
Azul 副首席执行官 Simon Ritter 告诉 InfoQ:
JDK 21 将是 OpenJDK 发行版的下一个长期支持(LTS)版本 。这一点很重要,因为许多企业用户在生产环境中都只使用这样的版本 。长远来看,将会有大量的用户采用 。然而,大部分用户在部署前会等待 6 到 12 个月,以便新特性可以经历更多真实世界的测试,发现的 Bug 得以修复 。
JDK 21 包含了许多新特性,涵盖了平台的各个方面:语言、库、JVM 和工具 。
JDK 21 最突出的特性也许是虚拟线程,它从预览特性变成了完整特性 。对于使用一请求一线程模型的应用程序来说 , 这是提高性能和可扩展性的理想选择,因为线程在等待 IO 上花费了大量的时间 。作为 Loom 项目的一部分 , 开发人员对这个特性可谓期待已久 。
对于开发人员,该版本提供了各种与模式匹配有关的语言级特性 。记录模式和 switch 模式匹配都成了完整特性 。还有一个小而强大的特性是未命名模式和变量 。向量 API(用于数值密集型计算)和外部函数 & 内存 API(Panama 项目的一部分)将继续以孵化器的形式开发 。
看下自 JDK 17 以来的新特性总表就会知道,这个新的 Java LTS 版本对开发人员和最终用户将会很有吸引力 。
【Java 21:下一个LTS版本,提供了虚拟线程、记录模式和模式匹配】下面我们将进一步探讨下其中的一些 JEP,提供一些 JDK 21 的资源 , 并预测下 JDK 22 中可能包含哪些特性 。
虚拟线程
JEP 444(虚拟线程)根据前两轮预览的反馈最终确定了这个特性:JEP 436(虚拟线程第二次预览)在 JDK 20 中交付;JEP 425(虚拟线程第一次预览)在 JDK 19 中交付 。该特性为 Java 平台提供了虚拟线程 。这种轻量级的线程可以显著减少编写、维护和观测高吞吐量并发应用程序的工作量 。JEP 436 最重要的变化是 , 虚拟线程现在完全支持线程本地变量,取消了不使用这些变量的选项 。要了解关于 JEP 444 的更多细节,可以阅读 InfoQ 的这篇新闻报道以及 José Paumard(Oracle Java 平台组 Java 开发大使)提供的 JEP Café截屏视频 。
记录模式
在 Amber 项目的支持下 , JEP 440(记录模式)最终确定了这一特性,并根据前两轮预览的反馈进行了增强:JEP 432(记录模式第二次预览)在 JDK 20 中交付;JEP 405(记录模式第一次预览)在 JDK 19 中交付 。该特性通过记录模式增强了语言解构记录值的能力 。记录模式可以与类型模式结合使用,以“实现强大的声明式可组合数据导航和处理形式” 。最近,类型模式通过 JEP 420(switch 模式匹配第二次预览,在 JDK 18 中交付)和 JEP 406(switch 模式匹配第一次预览,在 JDK 17 中交付)进行了扩展,已可用于 switchcase 标签 。JEP 432 最重要的变化是删除了在增强型 for 语句头中使用记录模式的支持 。要了解关于 JEP 440 的更多细节,可以阅读 InfoQ 的这篇新闻报道 。
Switch 模式匹配
也是在 Amber 项目的支持下,JEP 441(switch 模式匹配)最终确定了这个特性,并根据前四轮预览的反馈进行了增强:JEP 433(switch 模式匹配第四次预览)在 JDK 20 中交付;JEP 427(switch 模式匹配第三次预览)在 JDK 19 中交付;JEP 420(switch 模式匹配第二次预览)在 JDK 18 中交付;JEP 406(switch 模式匹配第一次预览)在 JDK 17 中交付 。该特性通过在 switch 表达式和语句中使用模式匹配增强了该语言 。要了解关于 JEP 441 的更多细节 , 可以阅读 InfoQ 的这篇新闻报道 。


推荐阅读