JDK 20 正式发布, JDK 21 最新动态来了

点击“开发者技术前线”,选择“星标”

让一部分开发者看到未来

来自 infoQ  | OSC开源社区(ID:oschina2013)

JDK 20 是自 JDK 17, 以来的第三个非长期支持(LTS)版本,正如甲骨文 Java 平台组的首席架构师 Mark Reinhold 所宣布的那样,它已经进入了初始候选版本阶段。主线源代码库已于 2022 年 12 月中旬(Rampdown 第一阶段)分支到 JDK 稳定代码库,并定义了 JDK 20 的特性集。严重错误,如回归或严重的功能问题,可能会得到修复,但必须通过修复请求(Fix-Request) 流程获得批准。根据发布时间表,JDK 20 于 2023 年 3 月 21 日正式发布。值得注意的是,JEP 438 已于 2023 年 3 月初被添加到了特性集中。

JDK 20 / Java 20 正式发布。JDK 20 是一个短期维护版本,将获得六个月的支持。尽管如此,但它仍然可用于生产环境中。根据开发计划,下一个 LTS 版本就是将于 2023 年 9 月发布的 JDK 21。

3783b7185f3edbd14df23e82be73e82f.png

最终包含了 7 个 JEP 形式的新特性,它们可以被分为两类:核心 Java 库Java 规范

这些新特性中的 5 个被归类到了 核心 Java 库 中:

  • JEP 429:作用域值(孵化器)

  • JEP 434:外部函数和内存 API(第二次预览)

  • JEP 436:虚拟线程(第二次预览)

  • JEP 437:结构化并发(第二个孵化器)

  • JEP 438: Vector API (第五个孵化器)

这些新特性中有 2 个被归类到了 Java 规范中:

  • JEP 432:记录模式(第二次预览)

  • JEP 433:switch 模式匹配(第四次预览)

我们研究了这些新特性以及支持它们的四个主要 Java 项目(Amber、Loom、Panama 和 Valhalla ),这些项目旨在孵化一系列组件,然后通过精心策划的合并最终将其纳入到 JDK 中。

Amber 项目

JEP 432,记录模式(第二次预览),为了响应上一轮 预览JEP 405,记录模式(预览版) 的反馈,它结合了增强功能。提议使用记录模式来增强语言,以解构记录值。记录模式可以与类型模式结合使用,以“实现一种强大的、声明式的、可组合的数据导航和处理形式”。类型模式最近通过 JDK 17 中提供的 JEP 406,switch 模式匹配(预览版) 和 JDK 18 中提供的 JEP 420,switch 模式匹配(第二次预览) 扩展到了 switch 语句标签中。与 JEP 405 相比,变化包括:增加了对泛型记录模式类型参数的推断支持;增加了对记录模式出现在增强 for 语句条件判断中的支持;并删除对了对命名记录模式的支持。

类似地,JEP 433:switch模式匹配(第四次预览),结合了增强功能以响应前三轮预览的反馈:JEP 427,switch 模式匹配(第三次预览),在 JDK 19 中提供;JEP 420,switch 模式匹配(第二次预览),在 JDK 18 中提供;以及 JEP 406,switch 模式匹配(预览版),在 JDK 17 中提供。与 JEP 427 相比,变化包括:简化了 switch 标签语法;现在, switch 表达式和语句以及其他支持模式的构造体都支持泛型类型模式和记录模式的类型参数推断。

Loom 项目

JEP 429,作用域值(孵化器),一个正在孵化的 JEP,最初名为范围局部变量(孵化器,Extent-Local Variables),提议在线程内部和线程之间共享不可变数据。这比线程局部变量更可取,尤其是在使用大量虚拟线程时。

JEP 436,虚拟线程(第二次预览),提议基于 JDK 19 中所提供的 JEP 425,虚拟线程(预览版) 对该特性进行第二次预览,以便留出时间来为该特性的演进提更多的反馈和体验。该特性为 Java 平台提供了虚拟线程,这是一种轻量级线程,可以极大地减少编写、维护和观察高吞吐量并发应用程序的工作量。需要注意的是,除了少量在 JDK19 中被被固化的 JEP 425 API 外,本预览版本没有进行任何更改,因此没有在第二次预览中提出。有关 JEP 425 的更多详细信息,请参阅 InfoQ 的新闻报道和甲骨文 Java 平台组 Java 开发人员倡导者 José Paumard 的 JEP Café 屏幕截图。

JEP 437,结构化并发(第二个孵化器),提议基于 JDK 19 中所提供的 JEP 428,结构化并发(孵化器) 重新孵化,以便留出时间来为该特性的演进提更多的反馈和体验。此特性的目的是通过引入一个库来将在不同线程中运行的多个任务视为单个工作单元,从而简化多线程编程。这可以简化错误处理和撤销,提高可靠性,并增强可观测性。唯一的变化是更新了 StructuredTaskScope 类,以支持在任务作用域中创建的线程可以继承作用域的值。这简化了线程间不可变数据的共享。有关 JEP 428 的更多详细信息,请参阅 InfoQ新闻报道。

Panama 项目

JEP 434,外部函数和内存 API(第二次预览),基于反馈进行了改进,并基于 JDK 19 中所提供的 JEP 424,外部函数和内存 API(预览版) 进行了第二次预览。相关孵化包括 JEP 419,外部函数和内存 API(第二个孵化器),在 JDK 18 中交付;以及 JEP 412,外部函数和内存 API(孵化器),在 JDK 17 中交付。该特性为 Java 应用程序提供了一个 API,通过高效地调用外部函数和安全地访问不受 JVM 管理的外部内存,在 Java 运行时之外与代码和数据进行互操作。JEP 424 的更新包括:统一了 MemorySegmentMemoryAddress 接口,即,内存地址由零长度的内存段建模;并且增强了 MemoryLayout 密封接口,以便于与在 JDK 19 中提供的 JEP 427,switch 中的模式匹配(第三次预览) 一起使用。

JEP 438,Vector API(第五个孵化器),结合了对前四轮孵化器反馈进行了增强:JEP 426,Vector API(第四个孵化器),在 JDK 19 中交付;JEP 417,Vector API(第三个孵化器),在 JDK 18 中交付;JEP 414,Vector API(第二个孵化器),在 JDK 17 中交付;JEP 338,Vector API(孵化器),作为 JDK 16 中的 孵化器模块 提供。该特性旨在增强 Vector API,以根据 JEP 424,外部函数和内存 API(预览版) 的定义,从 MemorySegment 中加载并存储向量。

JDK 21

计划于 2023 年 9 月发布一个 GA 和下一个 LTS 版本,目前 JDK 21 的 Proposed to Target 有两(2)个 JEP。

JEP 430,字符串模板(预览版),一种 JEP 类型的特性,提议使用字符串模板来增强 Java 编程语言,字符串模板类似于字符串字面量,但包含在运行时合并到字符串模板中的嵌入式表达式。该特性已被归类为 JDK 21 的 Proposed to Target,但尚未正式公布审查日期。

JEP 431,序列集合,提议引入“一个组能新表示集合概念的接口,这些集合的元素按照定义良好的序列或顺序排列,作为集合的结构属性。”其动因是由于集合框架(Collections Framework)中缺乏定义良好的排序和统一操作集。该特性已被归类为 JDK 21 的 Proposed to Target,但尚未正式公布审查日期。

我们可以根据一些 JEP 草案和候选版本来推测哪些额外的 JEP 有可能会被包含在 JDK21 中。

JEP 草案 8303358,作用域值(预览版),由红帽公司的杰出工程师 Andrew Haley 和 Andrew Dinn 提交,对即将发布的 JDK 20 中所提供的 JEP 429,作用域值(孵化器) 进行了改进。其最初名为范围局部变量(孵化器,Extent-Local Variables),由 Loom 项目支持,该特性旨在实现线程内部和线程之间不可变数据的共享。这比线程局部变量更可取,尤其是在使用大量虚拟线程时。虽然这个草案还没有达到 Candidate 状态,但描述中明确指出,这个 JEP 将被添加到 JDK21 中。

JEP 草案 8277163,值对象(预览版),是由 Valhalla 项目赞助的一个 JEP 特性,提议创建价值对象——无身份标识的值类,指定其实例的行为。该草案与 JEP 401,原语类(预览版) 相关,目前仍处于 Candidate 状态。

JEP 435,异步堆栈跟踪 VM API,一种 JEP 类型的特性,提议定义一个有效的 API,用于收集堆栈跟踪信息,以便根据包含 Java 和本地堆栈帧信息的信号处理器进行分析。

JEP 401,原语类(预览版),在 Valhalla 项目的支持下,引入了开发人员声明的原语类——特殊类型的值类——如前面提到的值对象(预览版)JEP Draft 中所定义——定义了新的原语类型。

JEP 草案 8301034,密钥封装机制 API,一种 JEP 类型的特性,提议:满足标准 密钥封装机制(Key Encapsulation Mechanism,KEM)算法的实现;通过更高级别的安全协议满足 KEM 的用例;并且允许可插拔的 KEM 算法的 Java 或本地实现。该草案最近进行了更新,其中包括一项重大更改,即取消了 DerivedKeyParameterSpec 类,转而将字段放在 encapsulate(int from, int to, String algorithm) 方法的参数列表中。

JEP 草案 8283227,JDK 源结构,一种信息类的 JEP,用于描述 JDK 源代码和 JDK 代码库中相关文件的总体布局和结构。该 JEP 提议帮助开发人员适应在 JDK9 中提供的 JEP 201,模块化源代码 中所描述的源代码结构。

JEP 草案 8280389,ClassFile API,提议提供一个用于解析、生成和转换 Java 类文件的 API。该 JEP 最初将作为 JDK 中 ASM(Java 字节码操作和分析框架)的内部替代品,并计划将其作为公共 API 开放出来。甲骨文(Oracle)的 Java 语言架构师 Brian Goetz 将 ASM 描述为“一个带有大量遗留包袱的旧代码库”,并提供了有关该草案将如何演进并最终取代 ASM 的背景信息。

JEP 草案 8278252,JDK 打包和安装指南,一个信息型的 JEP,提议为 macOS、Linux 和 Windows 提供创建 JDK 安装程序的指南,以降低不同 JDK 提供程序在 JDK 安装之间发生冲突的风险。其目的是通过规范化安装目录名称、包名称和其他可能导致冲突的安装程序元素,在安装 JDK 更新版本时提升更好的用户体验。

我们预计甲骨文将会很快开始为 JDK 21 提供更多的额外 JEP。

— 完 —
点这里👇关注我,记得收藏订阅哦~

历史推荐

ChatGPT崩了!全球宕机超12小时,打工人炸锅了...

TypeScript 5.0 正式发布!

微软开源Visual ChatGPT,7天斩获2.2万stars

好文点个在看吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu安装spark时遇到的问题及解决方案

伪分布式模式配置: 安装SSH: 问题一:安装openssh-server时出现以下报错 Package openssh-server has no installation candidate 出错原因: 一开始以为是apt命令没更新,apt-get update之后发现还是安装不了,可能是 文件/etc/apt…

ERROR Error: command failed: pnpm install --reporter silent --shamefully-hoist 错误解决办法

使用 vue-cli、pnpm创建新项目遇到的错误如下图所示: 在命令行安装pnpm6的版本: npm i pnpm6 -g vue create hello-world还可以直接使用npm安装就不报错了,输入一下代码: vue create hello-world -m npm以上两种方法都是亲测可…

postman 7.3.4 64位的下载、安装与使用

目录 postman的简介 postman下载地址及安装 postman的使用 postman 一、postman的简介 postman是一款功能强大的网页调试和模拟发送HTTP请求的Chrome插件,支持几乎所有类型的HTTP请求,操作简单且方便。二、postman下载地址及安装 我的postman下载网…

360手机java手机管家软件_360手机管家最新版下载_360手机管家官方下载-太平洋下载中心...

常见问答: 1、360手机管家连接不上手机怎么办? 答:如果发现360手机管家连接不上手机,你可以先检查下自己的数据线是否有问题,尝试连接其它设备看能不能连接。如果检查数据线与其它设备可以正常连接,那说明数据线是没问…

如何删除360奇安信软件

1.事情的缘由 之前待过一家公司,安装了360奇安信安全软件。由于更换了电脑,必须卸载奇安信,可是删除需要输入密码。后来联系了相关的人员,因为软件使用有点久远,没找到密码。 2.在安全模式下卸载 根据网上查询到的资…

Postman下载安装

一、Postman下载 1、Postman64位安装包下载: 链接:https://pan.baidu.com/s/1lInTrSfW9PMmYI6OsUS2tg 提取码:nvbw 2、Postman32位安装包下载: 链接:https://pan.baidu.com/s/1S_7K9wqyDwuoe-mjQowpKQ 提取码&#xf…

chatgpt赋能Python-python3的下载

Python 3-您在编程路上不可或缺的伙伴 如果您正在寻找一种流行的编程语言,那么Python 3就是一个不错的选择。Python 3作为一种高级编程语言,可以轻松地创建各种应用程序和网站。它是最受欢迎的编程语言之一,就是因为它易于学习和使用。 Pyt…

360安卓_360手机助手下载

360手机助手是手机应用商店软件,拥有丰富的应用资源,你可以随意下载,各种工具免费提供。360手机助手保证所有资源都是绿色可靠的,一键就能使用,需要的朋友可以点击下载! 360手机助手介绍 360手机助手是一款专为安卓手机…

360安卓_360手机助手安卓下载

为广大用户带来360手机助手2020最新版本下载。360手机助手软件为广大用户带来超多应用管理,带来超多手机工具。只需下载一个360手机助手,就可以获得丰富的软件游戏下载渠道。更多精彩好用的游戏软件等着用户上线挑选,是一款手机必备的工具软件…

在电脑上下载360手机助手中的APK文件

现在的游戏安装包都越来越大了,大一点的游戏基本都接近2个G。手机因为网络,下载不稳定,有时看着是下载完成,但安装时提示安装包错误,又给重新下载。这时想到的就是先在电脑上下载后,拷贝到手机再安装。 正常…

Postman官方64位版本下载

简介 Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果, 从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳…

谷歌CEO桑达尔•皮猜坦承“无法理解AI怎么运作”:社会要做好准备

Google CEO皮猜在接受CBS《60分钟》专访时表示,未来AI将影响每家公司的每一种产品,也将取代许多工作,例如作家、会计师、建筑师,讽刺的是甚至包括部分的软件工程师。而AI的治理更是博大精深的问题,在社会一窝蜂的投入A…

产品经理之SOP、SOW等名词解释

一、SOW(Statement of Work)介绍 SOW是对项目提供可交付成果的说明。一份概要,在很高层次上说明项目用途、范围和途径。是客户与供应商间的高层共识。SOW是项目的最初输入,由项目外的发起人或客户提供。 以下是案例 二、SOP&…

产品经理必须要掌握的数据分析能力

此文是转载的,转载了我朋友的。 今天给大家分享一下数据分析基础的一些学习笔记,希望对你有用。 生活中我们总能遇见一些喜欢说“我认为”、“我觉得”的人,不知道你们平时遇到这种人是什么感受呢? 在平时中还好,假如在…

产品经理的工作及职责

产品经理的工作内容概述 产品经理的工作是要管理与其产品/服务线有关的所有大小事务,满足顾客更高的要求,并且为企业提供长期的价值。因此在他的工作中有各种日常性、短期及长期的活动内容。在理想状况下,日常活动构成产品经理的工作基础&…

智能硬件产品开发全流程解析

本文通过十八个流程点详解,为大家分享了智能硬件产品研发生产的全流程。 上篇文章我们聊了下软硬件产品经理的那些区别,这篇文章主要分享下硬件产品研发生产的相关流程。 上图所示的是一个智能硬件生命周期内所需要经历的全部流程,以及产品经…

互联网产品经理是做什么的

互联网产品经理具有高薪酬的特色,这也是为什么许多人纷纷想着转行的原因所在,其实即便0基础的人如果能认真学习、好好付出,未来也是有机会在产品经理岗上发光发热的,这经过了过去大量数据的论证,的确如此。那么&#x…

产品经理(Product Manager)工作主要是做什么的?没想到产品经理也分这么多种类型!

目录 产品经理职业介绍 产品经理职能介绍 功能型产品经理 运营型产品经理

产品经理应该做什么,产品经理要具备哪些能力

文章目录 产品经理应该做什么,产品经理要具备哪些能力1、产品经理是做什么的2、产品经理应该具备哪些能力3、商业模型 产品经理应该做什么,产品经理要具备哪些能力 1、产品经理是做什么的 2、产品经理应该具备哪些能力 1、能够制作一份逻辑清晰的竞品分…