是之后第一个非 lts 版本。按照甲骨文公司 java 平台组首席架构师的,jdk 18 已进入初始候选发布阶段。分支已于 2021 年 12 月初从主干源码库创建(rampdown phase one)。该分支定义了 jdk 18 的特性集。严重缺陷,如回归或严重的功能问题,还可以解决,但必须通过流程审批。
最终的特性集包含 9 个新特性。这些以 jep 形式出现的特性可以分为三类:核心 java 库、java 工具和 java 规范。我们对这些特性进行了研究,其中一些属于四大 java 项目——、、和——的范畴。这些项目旨在孵化一系列组件,通过挑选合并最终纳入 jdk。
以下 7 项新特性可以归入核心 java 库:
jep 400:(
java.nio.charsets
)jep 408:(
java.net
)jep 416: (
java.lang.reflect
)jep 417:
jep 418:(
java.net
)jep 419:
jep 421:(
java.lang
)
其中两项,jep 417 和 jep 419,为实现 panama 项目提供了持续的贡献。该项目旨在改进和完善 jvm 与明确定义的“外部”(即非 java api,很可能包含 c 程序库中常用的接口)之间的互操作性。panama 项目于 2014 年启动,由甲骨文软件架构师负责。其基于 jdk 19 的一个不完整版本,最近一次更新是在 2022 年 1 月 18 日。
jep 418 为实现 loom 项目提供了持续的贡献。该项目旨在探索、孵化和提供 java vm 特性和 api,以支持易于使用、高吞吐量的新型轻量级并发编程模型。这将通过虚拟线程、来完成。loom 项目于 2018 年启动,由甲骨文公司技术部门咨询顾问负责。其基于 jdk 19 的,最近一次更新是在 2022 年 2 月 13 日。
剩下的两个 jep:
jep 413:
该 jep 属于第二类 java 工具,为 oracle 的(就是那个有名的 java api 文档工具,默认生成 html 格式的输出)引入了@snippet
标签。其目的是为了简化 api 文档中示例源代码的收录。
jep 420:
该 jep 属于 java 规范类,它为完成 amber 项目做出了持续的贡献。该项目旨在探索和孵化可以提高生产力的 java 语言小特性。amber 项目于 2017 年启动,由甲骨文公司 java 语言架构师负责。
按照,jdk 18 的正式发布日期是 2022 年 3 月 22 日。
jdk 19
按照计划,将在 2022 年 9 月正式发布,当前该版本还没有锚定任何 jep。不过,根据最近的 jep 草案、jep 候选以及 oracle java 开发大使的(java 的 2022 计划),我们可以推测出哪些 jep 有可能被纳入 jdk 19。
valhalla 项目旨在探索和孵化 jvm 和 java 语言高级候选特性。这包括值类型、泛型特化和关键字 volatile 增强。valhalla 项目于 2014 年启动,也是由 brian goetz 领导的。最后更新是在 2019 年 8 月 30 日,目前还非常有限。不过,在过去的一年中,这个项目内的活动有所增加。
2022 年,valhalla 项目计划包括:值类(jep 草案 8277163:);原始类(jep 401:和 jep 402:);通用泛型(jep 草案 8261529:)。要想了解更多关于 valhalla 项目的信息,建议开发人员阅读 goetz 在 2021 年 12 月发表的三篇系列文章:
2022 年,amber 项目的计划包括:最终确定 switch 中的模式(可能是继 jep 420 和 jep 406:(随 jdk 17 交付)之后的第三个预览版);引入更多的模式,如记录/数组的解构(),可能还有常规类。jep 405 最初名为记录模式 &数组模式(预览版),与 jep 406 关系密切。
2022 年,panama 项目的计划包括:将当前正在孵化的外部 api 迁移到预览版中;改进外部 api 的实现;决定jextract
的未来,即它是否应该成为一个独立的项目,并有一个相应的存储库;在 valhalla 项目实现值类型和原始类型之前,暂缓 vector api。jep 草案 8280173:,提议根据 java 社区对之前三个 jep 的反馈,引入增强功能。这三个 jep 分别是:jep 338:,随 jdk 16 交付;jep 414,,随 jdk 17 交付;jep 417:,将随即将发布的 jdk 18 ga 版本交付。
2022 年,loom 项目的计划包括:完成 jep 草案 8277131:和 jep 草案 8277129:;将这些特性;进一步探索如何简化高并发应用程序调试,并进一步完善结构化并发。jep 草案 8263012: 作用域局部变量((孵化器)),建议用作用域局部变量来增强 java api,它们是作用域动态变化的 final 局部值。它们允许一种轻量级的线程继承形式。
我们预计,甲骨文将很快围绕 jdk 19 开展有关这些及其他 jep 的工作。
作者简介:
michael redlich 是位于新泽西州克林顿的埃克森美孚工程研究部门高级研究员(他在本文中的观点和意见仅代表他自己,和他的雇主无关)。他是一名 it 专业人士,拥有罗格斯大学计算机科学学士学位。自 2001 年以来,他一直是花园州 java 用户组(原 acgnj java 用户组)的主持人,同时也是一位经验丰富的会议发言人,在加入 infoq 之前与 barry burd 合作撰写了多篇文章。自 1989 年 12 月以来,作为埃克森公司和埃克森美孚公司的长期雇员,mike 在公司中承担了许多任务,包括汽车测试、从事利用红外光谱学和化学计量学的分析科学研究、开发科学方面的 it 应用,他目前的任务是从事利用流变学和聚合物物理学的高分子科学研究。在他的职业生涯中,mike 发展了自己的领导能力,他曾担任新泽西州业余计算机小组(一个非营利性的 501(c)(3)计算机教育组织)的主席,目前则担任花园州 java 用户组(也是一个非营利性的 501(c)(3)组织)的主管。mike 是国际演讲协会的成员,最近取得了高级沟通者银牌证书。他酷爱跑步和骑行,完成了许多马拉松比赛。mike 与他的妻子 rowena 居住在新泽西州弗莱明顿,他们在那里共度美好时光,骑行或跑步,旅行的话,则主要是到洛杉矶的新奥尔良和里约热内卢的新港。
原文链接:
评论