未命名类和实例的 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 Korando、Ana-Maria Mihalceanu、José Paumard 和 Nicolai Parlog——提供了一系列时长约 20 分钟的视频教程,代号为 #RoadTo21,其中介绍了更多关于 JDK 21 特性的细节:
- Java 21 带来了完整的模式匹配,由 Parlog 提供
- Java 21 安全性,由 Mihalceanu 提供
- Java 21 API 变化,由 Paumard 提供
- Java 21 工具增强:全面改进,由 Mihalceanu 提供
- Java 21 JVM 和 GC 改进 , 由 Korando 提供
- Java 21 新特性:虚拟线程,由 Paumard 提供
- 从 Java 17 升级到 Java 21,由 Parlog 提供
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 _ 。
推荐阅读
- 图文并茂解释 Java JVM、JRE 和 JDK
- 如何用Java实现B+树和跳表的高效存储?
- 理解JAVA的垃圾回收机制
- Java 21,虚拟线程、结构化并发和作用域值
- “维护者都快累死了!”Linux 宣布:LTS 版本的维护期,将从 6 年变回 2 年
- 针对高级前端的八个级JavaScript面试问题
- 很多主流项目都放弃了Java 8,背后的原因是什么
- 优化Java代码效率和算法设计,提升性能
- 解决 Java 打印日志吞异常堆栈的问题
- AI Agent+to B,下一个入口级平台机会
