写点什么

OpenJDK 近期新闻:实例主方法、灵活的构造函数体、模块导入声明

  • 2024-11-25
    北京
  • 本文字数:3215 字

    阅读完需:约 11 分钟

大小:1.60M时长:09:20
OpenJDK近期新闻:实例主方法、灵活的构造函数体、模块导入声明

2024 年 11 月 4 日这一周 OpenJDK 生态系统的活动重点如下:五个 JEP 成功完成各自的评审流程,已确定在 JDK 24 中发布;五个新的 JEP 进入 Proposed to Target 状态,目标版本为 JDK 24,并在 2024 年 11 月 11 日这一周接受评审;另外,还有两个 JEP 草案已进入 Candidate 状态。


Targeted 状态的 JEP


JEP 493(不使用 JMOD 链接运行时镜像)已从 “Proposed to Target” 进入到“Targeted” 状态,目标版本为 JDK 24。这一 JEP 提议允许 工具在不使用 JDK 的 JMOD 文件的情况下创建自定义运行时镜像,从而将 JDK 大小减少约 25%。这个特性在构建 JDK 时需要显式启用。开发者现在可以从本地模块链接运行时镜像,不受模块位置的限制。


JEP 491(同步虚拟线程而不固定)已从 “Proposed to Target” 进入到 “Targeted” 状态,目标版本为 JDK 24。该 JEP 提议允许在同步方法和语句中阻塞的虚拟线程释放其占用的底层平台线程,以便其他虚拟线程能够使用这些线程,从而提高 Java 代码的可扩展性。其目的是解决“几乎所有虚拟线程都绑定在特定平台线程上的问题,这一限制严重影响了虚拟线程处理应用工作负载的能力。”


JEP 488(模式、instanceof 和 switch 中的原始类型(第二次预览),已从 “Proposed to Target” 进入到 “Targeted” 状态,目标版本为 JDK 24。该 JEP 来自 Amber Project,在经过第一次预览(JEP 455(模式、instanceof 和 switch 中的原始类型(预览))后,再次进行预览以获得更多反馈。该特性增强了模式匹配,允许在所有模式上下文中使用原始类型模式,并扩展了 instanceof 和 switch ,可以支持所有原始类型。更多细节可在 Aggelos Biboudis规范草案中找到。


JEP 486(永久禁用安全管理器)已从 “Proposed to Target” 进入到 “Targeted” 状态,目标版本为 JDK 24。该 JEP 提议永久禁用 SecurityManager 类,因其已在 JEP 411(弃用安全管理器)中被弃用(JDK 17 )。尽管开发者在弃用后仍可启用 SecurityManager,但该特性将在未来被彻底移除。


JEP 450(紧凑对象头(实验))已从 “Proposed to Target” 进入到 “Targeted” 状态,目标版本为 JDK 24。该 JEP 受 Lilliput Project 的启发,提议在 64 位架构上将 HotSpot JVM 中的对象头大小从 96 位至 128 位缩减到 64 位。由于该特性是实验性质的,因此默认情况下是禁用的,启用后可能会引发意外后果。


Proposed to Target 的 JEP


JEP 495(简化的源文件和实例主方法(第四次预览))已从 “Candidate” 进入到 “Proposed to Target” 状态,目标版本为 JDK 24。这一 JEP 提议在之前三轮预览之后进行第四次预览(除了再次更名外未做变更),前三轮预览分别为 JEP 477(隐式声明类和实例主方法(第三次预览))、JEP 463(隐式声明类和实例主方法(第二次预览))和 JEP 445(未命名类和实例主方法(预览))。该特性旨在“让学生可以在不需要理解为大型程序设计的语言特性的情况下编写第一个程序”。更多详情请参阅 Java 语言架构师 Brian Goetz 的博文 Paving the on-ramp。Java 社区成员 Gavin Bierman发布首份规范草案供社区评审。评审预计将在 2024 年 11 月 13 日结束。


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


JEP 492(灵活的构造方法体(第三次预览))已从 “Candidate” 进入到 “Proposed to Target” 状态,目标版本为 JDK 24。该 JEP 提议进行第三轮预览,仅有少量变更,以便从前两轮的预览中获得更多反馈,具体包括:在 JDK 23 中发布的 JEP 482(灵活的构造方法体(第二次预览))和在 JDK 22 中发布的 JEP 447(super() 的前置语句(预览))。该特性允许在构造方法中调用 或 之前插入不引用正在被创建的对象实例的语句,同时保持现有构造方法安全性和初始化保证。该 JEP 的变更包括:处理局部类,并放宽“字段在显式构造方法调用之前不可访问”的限制,调整为“字段在显式构造方法调用之前不可读取”。Oracle 技术顾问 Gavin Bierman 已提供了初始规范,供 Java 社区评审和反馈。该审查预计将于 2024 年 11 月 14 日结束。


JEP 483(预加载和链接类)已从 “Candidate” 进入到 “Proposed to Target” 状态,目标版本为 JDK 24。该 JEP 提议在 HotSpot Java 虚拟机启动时立即提供应用程序所需的已加载和已链接类来“提高启动速度”。实现这一目标的方法是在应用程序运行期间监控类加载和链接,并将这些信息存储在缓存中,以便后续运行时使用。该特性将为未来改进启动和预热速度打好基础。评审预计将于 2024 年 11 月 14 日结束。


JEP 479(移除对 Windows 32 位 x86 架构的支持)已从 “Candidate” 进入到 “Proposed to Target” 状态,目标版本为 JDK 24。该 JEP 提议在 JEP 449(放弃支持 Windows 32 位 x86 架构)(JDK 21)之后,完全移除对 Windows 32 位 x86 架构的支持。其目标是:移除所有仅支持 Windows 32 位平台的代码路径;停止所有针对 Windows 32 位平台的测试和开发工作;并简化 OpenJDK 的构建和测试基础设施,与现代计算标准保持一致。评审预计将于 2024 年 11 月 12 日结束。


新的候选 JEP


JEP 497(基于模格的抗量子数字签名算法)已从 JEP Draft 8339010 进入到 “Candidate” 状态。该 JEP 提议“通过提供基于模格的抗量子数字签名算法(ML-DSA)实现”来增强 Java 应用程序的安全性。该算法已由 FIPS 204 标准化。这将通过实现 Java 的 KeyPairGeneratorSignatureKeyFactory 类来实现。


JEP 496(基于模格的抗量子密钥封装机制,已从 JEP Draft 8339009 进入到 “Candidate” 状态。该 JEP 提议“通过提供基于模格的抗量子密钥封装机制(ML-KEM)实现”来增强 Java 应用程序的安全性。该机制已由 FIPS 203 标准化。这将通过实现 Java 的 KeyPairGeneratorKEMKeyFactory 类来实现。


JDK 24 特性集合及发布时间表


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


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

  • Rampdown Phase Two:2025 年 1 月 16 日

  • 初始发布候选版本:2025 年 2 月 6 日

  • 最终发布候选版本:2025 年 2 月 20 日

  • 正式发布:2025 年 3 月 18 日


在距离 JDK 24 Rampdown Phase One(特性集将被冻结)还有一个多月的时间里,目前已纳入特性集的 JEP 共计 19 个(包括 Proposed to Target):



JDK 24 的新特性数量已经超过 JDK 16 和 JDK 11 中各自交付的 17 项特性。对于 JDK 24,开发者可以通过 Java Bug Database 报告错误。


原文链接

https://www.infoq.com/news/2024/11/jdk-news-roundup-nov04-2024/

2024-11-25 09:306129

评论

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

关于小程序游戏变现方式你还知道哪些?

没有用户名丶

前端开发 小程序游戏

我的快速调优线上服务器CPU利用率通用办法,震惊面试官

KINDLING

Java cpu 服务器 性能调优 ebpf

《数字经济全景白皮书》出海篇:选对路径下好棋,热点出海行业如何实现增长?

易观分析

数字化 经济 出海

十年老程序员:再见了Navicat,以后多数据库管理就看这款SQL工具

雨果

sql navicat 数据库管理工具

极客时间运维进阶训练营第十三周作业

9527

对线面试官:浅聊一下 Java 虚拟机栈?

王磊

java面试

100 行 shell 写个 Docker

vivo互联网技术

Docker Shell

有关TCP协议,这是我看过讲的最清楚的一篇文章了!

程序员小毕

程序员 TCP 程序人生 计算机网络 架构师

嘉为蓝鲸携手麒麟软件共建国产化一站式DevOps解决方案

嘉为蓝鲸

DevOps 自动化运维 嘉为蓝鲸

成熟的自动化运维平台是怎样练成的?

嘉为蓝鲸

自动化运维 嘉为蓝鲸

状态机的概念与设计

timerring

FPGA

算力新话题,畅聊算力之新民生

鲸品堂

算力网络 企业号 2 月 PK 榜

支付对接常用的加密方式介绍以及java代码实现

京东科技开发者

Java 安全 哈希算法 加密算法 非对称加密算法

小游戏内测|小游戏脱离微信运行在其它 App

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

嘉为科技蝉联信创工委会“卓越贡献成员”荣誉称号

嘉为蓝鲸

自动化运维 嘉为蓝鲸

MASA Stack 1.0 发布会讲稿 —— 产品篇

MASA技术团队

.net 云原生 MASA MASA Blazor

全新视觉,升维体验!全栈可观测中心嘉为鲸眼产品全新体验升级

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

Sugar BI 增强分析能力全场景解析

XxinQi

数据分析 可视化 BI 商务智能 预测模型

高校数据库/SQL教学用什么样的SQL工具?管理更方便,学习更轻松

雨果

数据库管理工具 :MySQL 数据库 SQL开发工具

Java高手速成 | 单例模式实现方式——枚举

TiAmo

单例模式 枚举 Java 开发

ChatGPT集成之前,让我们复习一下即将过时的知识

newbe36524

搜索引擎; ChatGPT

【Rust学习】内存安全探秘:变量的所有权、引用与借用

京东科技开发者

spring rust slice 企业号 2 月 PK 榜 可变引用

前端图片最优化压缩方案

凉城

前端 图片处理 图片压缩 前端图片压缩

架构实战营 10 期 - 作业 6

炮仗

第六周作业-拆分电商系统为微服务

不爱学习的程序猿

重识Flutter 用于解决复杂滑动视窗问题的Slivers - part1

编程的平行世界

flutter 前端 an'droid

OpenJDK近期新闻:实例主方法、灵活的构造函数体、模块导入声明_编程语言_Michael Redlich_InfoQ精选文章