写点什么

OpenJDK 近期新闻:流收集器、作用域值、分代 Shenandoah、ZGC 非分带模式

  • 2024-11-11
    北京
  • 本文字数:2176 字

    阅读完需:约 7 分钟

大小:1.11M时长:06:27
OpenJDK近期新闻:流收集器、作用域值、分代Shenandoah、ZGC非分带模式

OpenJDK 生态系统近期活动频繁,重点包括:已确定在 JDK 24 中发布的从“Proposed to Target”进入到“Targeted”的 JEP 以及已提升为 Candidate 状态的草案。JEP 485(流收集器)是第五个被确认在 JDK 24 中发布的 JEP。四个 JEP 状态为“Proposed to Target”,并在 2024 年 10 月 28 日这一周进行评审。


Targeted 的 JEP


在评审结束后,JEP 485(流收集器)已从”Proposed to Target“进入”Targeted“状态,目标版本为 JDK 24。这个 JEP 提议在进行了两轮预览后完成这个特性:在 JDK 23 中发布的 JEP 473(流收集器(第二次预览))和在 JDK 22 中发布的 JEP 461(流收集器(预览))。这个特性旨在增强流式 API,支持自定义中间操作,“允许流式管道以一种难以通过现有内置中间操作实现的方式进行数据转换。”更多关于这个 JEP 的细节可以在其设计文档和 InfoQ 的新闻报道中找到。


Proposed to Target 的 JEP


JEP 490(ZGC:移除非分代模式)已从”Candidate“进入到”Proposed to Target“状态,目标版本为 JDK 24。这个 JEP 提议移除 Z Garbage Collector(ZGC)的非分代模式。JEP 474(ZGC:默认分代模式)提议分代模式为默认的回收模式,并已在 JDK 23 中发布。通过移除 ZGC 的非分代模式,不仅消除了维护两种模式的负担,还加快了分代模式下新功能的开发速度。评审于 2024 年 10 月 29 日结束。


JEP 487(作用域值(第四次预览))已从“Candidate”进入“Proposed to Target”状态,目标版本为 JDK 24。之前这个 JEP 叫作范围本地变量(孵化器),现提议进行第四次预览,其中包含了一个变化,从之前的一轮孵化和三轮预览中获得额外的反馈:在 JDK 23 中发布的 JEP 481(作用域值(第三次预览);在 JDK 22 中发布的 JEP 464(作用域值(第二次预览));在 JDK 21 中发布的 JEP 446(作用域值(预览));以及在 JDK 20 中发布的 JEP 429(作用域值(孵化器))。这个特性支持在单个线程内部以及跨线程共享不可变数据。这比线程局部变量更受青睐,特别是当使用大量虚拟线程时。与之前的预览相比,唯一的变化是移除了ScopedValue类的 callWhere()和 runWhere()方法,简化了 API。通过在ScopedValue.Carrier类中定义的 call()和 run()方法,可以使用一个或多个绑定的作用域值。评审于 2024 年 10 月 30 日结束。


JEP 478(密钥派生函数 API(预览))已从“Candidate”进入到“Proposed to Target”状态,目标版本为 JDK 24。这个 JEP 提议为密钥派生函数(KDF,从密钥和其他数据中派生额外密钥的密码算法)引入 API,目标是:允许安全供应商在 Java 或本地代码中实现 KDF 算法,并可以在 JEP 452(密钥封装机制)的实现中使用 KDF。评审于 2024 年 10 月 31 日结束。


JEP 404(分代Shenandoah(实验))已从 Candidate“进入到”Proposed to Target“状态,目标版本为 JDK 24。最初的目标版本为 JDK 21,但因“在评审过程中识别出的风险以及缺少进行大规模代码贡献所需的评审时间”而被移出最终特性集。Shenandoah 团队决定“提供他们能够提供的最好的分代 Shenandoah”,并在未来的 JDK 版本中发布。评审于 2024 年 10 月 30 日结束。


新的候选 JEP


JEP 495(简单的源文件和实例主方法(第四次预览))已从“JEP Draft 8335984”进入到“Candidate”状态。这个 JEP 提议在经过之前的三轮预览后进行第四次预览,不包含变更(除了第二次预览进行了名称变更):在 JDK 23 中发布的 JEP 477(隐式声明类和实例主方法(第三次预览));在 JDK 22 中发布的 JEP 463(隐式声明类和实例主方法(第二次预览));以及在 JDK 21 中发布的 JEP 445(未命名类和实例主方法(预览))。这个特性旨在“让学生可以在不需要理解为大型程序设计的语言特性的情况下编写他们的第一程序。”这个 JEP 将 Oracle Java 语言架构师Brian Goetz在 2022 年 9 月发表的博文Paving the on-ramp推进了一步。Oracle 技术顾问Gavin Bierman已经发布规范文档的第一稿,供 Java 社区评审。关于 JEP 445 的更多细节可以在 InfoQ 的新闻报道中找到。


JEP 494(模块导入声明(第二次预览))已从“JEP Draft 8335987”进入到“Candidate”状态。这个 JEP 在经过第一轮预览后提议进行第二次预览:在 JDK 23 中发布的 JEP 476(模块导入声明(预览))。这个特性将增强 Java 编程语言的能力,能够简洁地导入一个模块导出的所有包,目标是简化模块库的重用,无需将代码直接导入到模块本身。与第一次预览相比的变化包括:取消了模块不允许声明对 java.base 模块传递依赖的限制;更新 java.se 模块的声明,使其传递性地依赖 java.base 模块;允许按需声明的类型导入覆盖模块导入声明。这些变化意味着导入 java.se 模块将能够按需导入整个 Java SE API。


JEP 493(不使用JMOD链接运行时镜像)已从“JEP Draft 8333799”进入到“Candidate”状态。这个 JEP 提议“能够通过使 jlink 工具创建不依赖JMOD文件的自定义运行时镜像,将 JDK 的体积减少约 25%。”这个功能必须在构建 JDK 时显式启用。开发者可以从他们的本地模块链接运行时镜像,无论这些模块存放在何处。


JDK 24 发布时间表


Oracle Java 平台组首席架构师Mark Reinhold批准的 JDK 24 的发布计划如下:

  • Rampdown Phase One(从主线分叉):2024 年 12 月 5 日

  • Rampdown Phase Two:2025 年 1 月 16 日

  • Initial Release Candidate:2025 年 2 月 6 日

  • Final Release Candidate:2025 年 2 月 20 日

  • General Availability:2025 年 3 月 18 日


对于JDK 24,开发者可以通过Java错误数据库报告错误。


原文链接

https://www.infoq.com/news/2024/10/jdk-news-roundup-oct21-2024/


2024-11-11 10:463610

评论

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

Java中使用正则检查有效日期

okokabcd

Java

一次 MySQL 误操作导致的事故,「高可用」都顶不住了!

悟空聊架构

MySQL 高可用 悟空聊架构 6月月更 事故复盘

Prometheus PushGateway 碎碎念

耳东@Erdong

Prometheus PushGateway 6月月更

保健品一物一码防窜货营销软件开发

开源直播系统源码

软件开发 app源码

AS深圳站来了!参与讨论领取官方限量周边!

InfoQ写作社区官方

热门活动 ArchSummit

一款支持内网脱机分享文档的接口测试软件

Xd

Java 后端 接口测试工具

给你讲懂 MVCC

Nick

MySQL 源码 MVCC 6月月更 深入解析

开源一款监控数据采集器,啥都能监控

巴辉特

Nightingale #Prometheus

初中级开发如何有效减少自身的工作量?

百家饭隐私计算平台创业者

开发 书籍推荐

一文简述:供应链攻击知多少

穿过生命散发芬芳

供应链攻击 6月月更

ribbon

卢卡多多

6月月更

什么是数据中台

奔向架构师

数据中台 数据仓库 6月月更

apipost接口断言详解

Xd

Java 接口测试工具

uni-app进阶之认证【day12】

恒山其若陋兮

6月月更

讲讲我的不丰富的远程办公经验和推荐一些办公利器 | 社区征文

Regan Yue

远程办公 初夏征文

【直播回顾】战码先锋第七期:三方应用开发者如何为开源做贡献

OpenHarmony开发者

OpenHarmony

事件

Jason199

js 事件 6月月更

浅谈如何运营好小红书账号:利用好长尾词理论

石头IT视角

JVM调优简要思想及简单案例-怎么调优

zarmnosaj

6月月更

flutter系列之:flutter中的offstage

程序那些事

flutter 程序那些事 6月月更

Vue2/3 自定义组件的 v-model 到底怎么写?💎

德育处主任

JavaScript Vue model Javascript框架 6月月更

《梦华录》要大结局了,看超前点映不如先来学学它!

博文视点Broadview

LRU 原理与算法实现

Ayue、

LRU

C语言自定义类型的介绍(结构体,枚举,联合体,位段)

未见花闻

6月月更

保险APP适老化服务评测分析2022第06期

易观分析

保险APP

Android 11适配指南之Toast解析

yechaoa

android 适配 6月月更 11.0

linux存储结构与磁盘划分

乌龟哥哥

6月月更

一个使用 Shell 脚本实现的 Docker

ScratchLab

应用升级SpringCloud版本时的注意事项(Dalston升级到Edgware)

程序员欣宸

spring Spring Cloud 6月月更

Linux开发_BMP图片编程(翻转、添加水印)

DS小龙哥

6月月更

敏捷之道 | 敏捷开发真的过时了么?

LigaAI

敏捷 敏捷开发 敏捷软件开发 敏捷宣言 LigaAI

OpenJDK近期新闻:流收集器、作用域值、分代Shenandoah、ZGC非分带模式_编程语言_Michael Redlich_InfoQ精选文章