NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:008848

评论

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

软件测试学习笔记丨被测系统架构数据流分析

测试人

软件测试

软件项目估算8大原则

俞凡

项目管理

探索Django REST框架构建强大的API

快乐非自愿限量之名

Python API Java集合框架

探究云手机的海外原生IP优势

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 海外原生IP

用友陈强兵:企业数智化进入“加速期”

ToB行业头条

服了,一线城市的后端都卷成这样了吗!?

王中阳Go

Java golang 面试 面试题 后端面经

一文教你如何安装和使用Docker

伤感汤姆布利柏

高防服务器干什么的?用途及其重要性解析

一只扑棱蛾子

高防服务器

Redis开源协议调整,我们怎么办?

华为云PaaS服务小智

redis 华为云

大模型预测,下一个token何必是文字?

Openlab_cosmoplat

OpenAI 展示音频模型 Voice Engine;清明节前 AI 复活亲人成热门生意丨RTE 开发者日报 Vol.175

声网

一学就懂!Abaqus热分析发动机电池包和电池冲击分析

思茂信息

abaqus abaqus软件 abaqus有限元仿真

黑科技优化产品质量,Fe-safe在电磁随机振动下的分析

思茂信息

仿真 Fe-safe 疲劳分析

阿里云 ApsaraMQ 率先完成消息队列全系 Serverless 化,携手 Confluent 发布新产品

阿里巴巴云原生

阿里云 Serverless 云原生 Confluent ApsaraMQ

软件测试学习笔记丨Goreplay流量回放

测试人

软件测试

【干货】零售企业商品数字化管理措施探讨

第七在线

飞天发布时刻丨阿里云 ApsaraMQ 全面升级,携手 Confluent 发布全新产品

阿里巴巴云原生

阿里云 云原生 Confluent ApsaraMQ

Higress 基于自定义插件访问 Redis

阿里巴巴云原生

阿里云 云原生 Higress

DIY 3 种分库分表分片算法,自己写的轮子才吊!

程序员小富

Java 分库分表

以夸娥千卡集群为底座,摩尔线程与无问芯穹联手开启千亿大模型服务新篇章

Geek_2d6073

SD-WAN组网方案简述

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

Python 代码混淆工具概述

【教程】Flutter 应用混淆

雪奈椰子

一款比Typora更简洁优雅的Markdown编辑器神器(完全开源免费)

不在线第一只蜗牛

Typora 编辑器

阿里1688布局跨境业务,瞄准海外代采

技术冰糖葫芦

API 接口

NFTScan | 03.25~03.31 NFT 市场热点汇总

NFT Research

NFT\ NFTScan nft工具

SD-WAN支持的多种线路类型

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

基于Sermant的全链路灰度发布在汽车行业DMS系统的应用

华为云开源

开源 华为云 服务治理 微服务治理 sermant

从定义到实践:学会在 C++ 中使用变量

秃头小帅oi

强烈推荐:2024 年12款 Visual Studio 亲测、好用、优秀的工具,AI插件等

EquatorCoco

人工智能 Visual

探索GaussDB(DWS)湖仓融合:Hudi与元数据打通的深度解析

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

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