写点什么

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

作者:Michael Redlich

  • 2023-10-12
    北京
  • 本文字数:3662 字

    阅读完需:约 12 分钟

大小:2.14M时长:12:27
Java 21:下一个LTS版本,提供了虚拟线程、记录模式和模式匹配

Oracle发布Java 编程语言和虚拟机的第21个版本。这是自 2021 年JDK 17发布以来的第一个长期支持(LTS)版本。最终的特性集包括以下 15 个 JEP:

 

其中有三个——虚拟线程、记录模式和 switch 模式匹配——已经完成了各自的预览,现已最终确定。

 

如下图所示,JDK 21的特性开发节奏和前两个 LTS 版本(即 JDK 17 和 JDK 11)以及以前其他的 JDK 版本类似。



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 版本对开发人员和最终用户将会很有吸引力。

 

下面我们将进一步探讨下其中的一些 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的这篇新闻报道

 

未命名类和实例的 Main 方法(预览)


JEP 445(未命名类和实例的Main方法预览)之前称为灵活的 Main 方法和匿名 Main 类(预览)隐式类与增强 Main 方法(预览)。它提出“改进 Java 语言,使学生可以编写他们的第一个程序,而不需要了解为大型程序设计的语言特性。”该 JEP 延续了 Oracle Java 语言架构师Brian Goetz在 2022 年 9 月发表的博文Paving the on-ramp。Oracle 技术顾问Gavin Bierman已经发布了规范文档的初稿供 Java 社区审查。要了解关于 JEP 445 的更多细节,可以阅读InfoQ的这篇新闻报道

 

RoadTo21


Java 开发关系团队——Billy KorandoAna-Maria MihalceanuJosé Paumard 和Nicolai Parlog——提供了一系列时长约 20 分钟的视频教程,代号为 #RoadTo21,其中介绍了更多关于 JDK 21 特性的细节:

 

JDK 21 发布会


JDK 21发布会于 2023 年 9 月 19 日 UTC 时间 13:00-21:00 进行了直播,由 Parlog、Mihalceanu 和 Korando 主持。这次活动邀请了众多嘉宾,并进行了 Java First Java Always 专题讨论,探讨 JDK 21 的特性。整个过程在拉斯维加斯的 Oracle CloudWorld 进行了实况直播。

 

专题讨论小组的成员包括:Oracle 开发关系高级总监Sharat Chander、Oracle Java 平台组软件开发高级副总裁Georges Saab;Oracle 开发关系副总裁Chad Arimura;Oracle 编程语言设计师Daniel Smith

 

该小组发布了四份公告:一个新的Java Playground,基于 JShell 实用程序,可用于编写和执行 Java 代码;Java 社区现在可以向dev.java网站提供内容了;一个新的Java Developer Relations Github 存储库;JDK 11 将至少支持到 2032 年。

 

JDK 22


目前,JDK 22 中会包含哪些 JEP 尚不确定。但是,根据最近提交的 JEP 草案和建议最终某项特性的 JEP 候选,我们已经可以推测出哪些 JEP 有可能包含在 JDK 22 中。

 

JEP 454(外部函数&内存API)建议在两轮孵化和三轮预览后最终确定该特性:JEP 412(外部函数&内存API第一轮孵化)在 JDK 17 中交付;JEP 419(外部函数&内存API第二轮孵化)在 JDK 18 中交付;JEP 424(外部函数&内存API第一次预览)在 JDK 19 中交付;JEP 434(外部函数&内存API第二次预览)在 JDK 20 中交付;JEP 442(外部函数&内存API第三次预览)将在即将发布的 JDK 21 GA 版本中交付。自上一个版本以来的改进包括:新增清单属性Enable-Native-Access,使可执行 JAR 文件中的代码可以调用受限方法,而无需使用--enable-native-access标识;允许客户端以编程方式构建 C 函数描述符,避免使用特定于平台的常量;改进对本地内存可变长数组的支持;在本地字符串中支持多字符集。

 

Panama项目的支持下,JEP 草案 8315945向量API第七轮孵化)包含了针对前六轮孵化反馈的增强:JEP 448(向量API第六轮孵化)将在即将发布的 JDK 21 GA 版本中交付;JEP 438(向量API第五轮孵化)在 JDK 20 中交付;JEP 426(向量API第四轮孵化)在 JDK 19 中交付;JEP 417(向量API第三轮孵化)在 JDK 18 中交付;JEP 414(向量API第二轮孵化)在 JDK 17 中交付;JEP 338(向量API第一轮孵化)在 JDK 16 中作为孵化器模块交付。JEP 448 最重要的变化包括增强JVM编译器接口(JVMCI)以支持向量 API 值。

 

JEP 草案 8277163值对象预览)建议创建值对象,它们是无标识值类,用于指定其实例的行为。该草案与 JEP 401(空限制值对象存储预览)相关,并将继续为实现Valhalla项目做出贡献。

 

Daniel Smith是 Oracle 的编程语言设计师。他更新了 JEP 401(空限制值对象存储预览),以便与 Oracle 的最新设计思想“在语言和类文件中表达扁平化(flattenability)”保持一致。该提案最初名为 Primitive Classes(预览版),支持值对象(见JEP Draft 8277163)的空限制存储,即在字段和数组组件中将它们初始化为类的初始实例,并拒绝空值写入尝试。

 

JEP 草案 8311828未命名模式和变量)建议在上一轮预览的基础上最终确定该特性:JEP 443(未命名模式和变量预览)在 JDK 21 中交付。这个 JEP 将“使用未命名模式(可以匹配记录组件,而不需要说明组件的名称或类型)和未命名变量(可以初始化,但不能使用)来增强语言。”两者都用下划线字符表示,如r instanceof _(int x, int y)r instanceof _

 

根据 Oracle Java 平台组首席架构师Mark Reinhold的建议,JDK 22的正式发布日期暂定为 2024 年 3 月 19 日。其特性预计将于 2023 年 12 月初冻结。要了解关于其他 JEP 草案和候选的更多细节,可以阅读InfoQ的这篇详细报道

 

JDK 21 现在已经可以从Oracle官网上下载,其他供应商的二进制文件预计也将很快提供。

 

原文链接:

https://www.infoq.com/news/2023/09/java21-released/


相关阅读:

Java 近期新闻:JCP 25 周年、外部函数 & 内存 API、Eclipse Epicyro

JVM 语言比较研究:Java、Kotlin 和 Scala 的利与弊

Java 21:最新进展一览

2023-10-12 08:009443

评论

发布
暂无评论
发现更多内容

PIRF-404

EchoZhou

English

全能数据分析工具:ableau Desktop 2019 for Mac 中文激活版

你的猪会飞吗

Mac软件 mac软件下载

安吉尔:净水科技的“自转”革命,守护每一滴纯净

科技热闻

零信任持续高速发展,新场景下展现惊人潜力

芯盾时代

身份安全 数据安全 零信任

计算机视觉与图像分类:技术原理、应用与发展前景

天津汇柏科技有限公司

计算机视觉 图像分类

MobPush Android常见问题

MobTech袤博科技

开发者 产品动态

第三届中国 PM&PMO 前沿大会即将开幕!

新消费日报

客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台

阿里云大数据AI技术

大数据 向量检索 Milvus

【YashanDB知识库】汇聚库23.1环境发生coredump

YashanDB

yashandb 崖山数据库 崖山DB

LeetCode题解:2073. 买票需要的时间,模拟,JavaScript,详细注释

Lee Chen

蓝易云 - Linux CentOS7 awk的反转功能

百度搜索:蓝易云

蓝易云 - Ubuntu搭建NFS服务

百度搜索:蓝易云

LeetCode题解:1233. 删除子文件夹,排序,JavaScript,详细注释

Lee Chen

VMware vCenter Server 6.7 U3u (安全更新) - ESXi 集中管理软件

sysin

vSphere vmware vcenter esxi

淘宝商品详情数据接口| 淘宝API接口

tbapi

淘宝商品详情接口 淘宝商品API接口 淘宝API 淘宝商品详情数据

实战教程:利用淘宝API接口批量抓取商品列表数据

tbapi

淘宝商品列表数据接口 淘宝商品数据采集 淘宝商品列表数据采集 淘宝商品列表接口 淘宝商品API

《Programming from the Ground Up》阅读笔记:p75-p87

codists

assembly 编程人

数业智能心大陆:数字化心理健康的未来

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

古画新韵——李逸弘国画作品赏析

科技热闻

冒烟测试与宇宙飞船

FunTester

天猫商品详情数据接口 | 天猫商品数据采集 | 天猫API接口指南

tbapi

天猫商品详情数据接口 天猫API 天猫商品数据采集 天猫商品详情采集

蓝易云 - Linux系统gdb调试常用命令

百度搜索:蓝易云

天谋科技成为中国工业大数据创新发展联盟专业委员会副主任单位

Apache IoTDB

蓝易云 - Unity中pivot和center的区别

百度搜索:蓝易云

【YashanDB知识库】离线升级一章22.2不支持直接升级到23.1

YashanDB

yashandb 崖山数据库 崖山DB

解密可观测行业中的语义规范 — 代码世界中的“语言艺术”

Greptime 格睿科技

数据库 可观测性 代码 系统可观测性 语义规范

LeetCode题解:290. 单词规律,哈希表,JavaScript,详细注释

Lee Chen

架构升级:火山引擎VeDI实验平台服务能力进一步优化

新消费日报

蓝易云 - wininet,winhttp,xmlhttprequest,各版本区别

百度搜索:蓝易云

VMware vCenter Server 8.0U3a 下载 - 集中式管理 vSphere 环境

sysin

vSphere vmware vcenter esxi

Java 21:下一个LTS版本,提供了虚拟线程、记录模式和模式匹配_编程语言_InfoQ精选文章