速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

常见的跨域场景

郑州埃文科技

数据库 IP 跨域

肝了三个月Linux内核,面试薪资直接翻番,我才明白TA的重要性!

Yt

c++ Linux服务器开发 Linux内核 驱动开发

金融云原生漫谈(三)|银行云原生基础设施构建:裸金属VS虚拟机

York

云原生 金融科技 新基建

为什么要避免在 Go 中使用 ioutil.ReadAll?

AlwaysBeta

Go 源码 io Go 语言

Flutter VS React Native,跨端方案大 PK

融云 RongCloud

flutter React Native Discord

Git fork的学习笔记

Changing Lin

1月月更

2021年度优质创作者评选名单公布!

InfoQ写作社区官方

热门活动

音视频开发:FFmpeg时间戳详解

赖猫

音视频 ffmpeg

定了!皮皮APP助力电子竞技游戏师职业技能标准发布!

联营汇聚

堡垒机和防火墙的区别是什么?能防删库跑路吗?

行云管家

运维 网络安全 防火墙 堡垒机

资讯|WebRTC M96 更新

网易云信

大数据 WebRTC 开发

Swift 在手淘商品评价的技术重构与实践

阿里巴巴终端技术

ios swift 移动开发 客户端

恒源云(GPUSHARE)_云GPU服务器如何使用FinRL?

恒源云

算法 框架 PyTorch

后端老司机的跨域之旅

勇哥java实战分享

后端 CORS

推荐一款少见开源的支付类项目(Spring Boot+Shiro+MyBatis+Redis)

北游学Java

Java redis spring mybatis

金融云原生漫谈(四)|如何构建高可用、高并发、高性能的云原生容器网络?

York

云原生 金融科技 高性能网络

流式数据质量监控的技术调研及选型思考

字节跳动数据平台

sql 字节跳动 数据质量 流式数据 flik

金融云原生漫谈(二)|中小银行破局之道:云原生架构转型全攻略

York

2022开篇之作,Docker与微服务实战教程

编程江湖

直播系统聊天技术(六):百万人在线的直播间实时聊天消息分发技术实践

JackJiang

消息推送 即时通讯 IM 直播技术 直播聊天室

Apache APISIX 社区双周报 | 功能亮点更新进行中

API7.ai 技术团队

开源 云原生 API网关 社区 Apache APISIX

基于Paddle Serving&百度智能边缘BIE的边缘AI解决方案

百度开发者中心

飞桨

防火墙是什么?怎么理解?

行云管家

运维 网络安全 防火墙 堡垒机

金融云原生漫谈(一)|银行业如何快速提升应用研发效能和交付效率?

York

「死磕」传统工业软件路径不通 他们给自己造了把梯子

ToB行业头条

青藤:一招制敌!微隔离,让勒索软件不再横行

青藤云安全

静态代理模式——时间都去哪儿了

蝉沐风

设计模式 代理模式

【MongoDB白皮书】DIRT和复杂性的高成本

MongoDB中文社区

mongodb

纯 MongoDB 实现中文全文搜索

MongoDB中文社区

mongodb

创业公司COO:用宜搭落地管理思想,打破数据壁垒|《102个开发者故事》第五期

一只大光圈

低代码 数字化转型 企业管理 钉钉宜搭

Rainbond 对接 Istio 原理讲解和代码实现分析

北京好雨科技有限公司

Kubernetes istio PaaS rainbond

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