Java 18 已到来!

在 Twitter 上关注 JavaOpenJDK

Oracle 自豪地宣布 JDK 18 已正式发布。这是通过六个月的发布节奏按时交付的第九个功能版本。这种可预测性让开发人员能够轻松管理创新采用,这要归功于预期变更的稳定流

Chart showing number of features per release since Java 8

Java 提升性能、稳定性和安全性的能力使其持续成为世界上最流行的编程语言。


JDK 18 现已发布!

Oracle 现为开发人员、终端用户和企业提供 JDK 18。Oracle JDK 18 将在 Oracle 关键补丁更新 (CPU) 计划中概述的 Oracle Java SE 支持路线图中,在发布后的六个月内接收性能、稳定性和安全更新。

Oracle JDK 18 不是长期支持 (LTS) 版本。Oracle JDK 17(发布 于 2021 年 9 月 14 日)是 2018 年宣布的发布节奏下的最新长期支持 (LTS)。Oracle 已宣布计划将未来的 LTS 版本之间的间隔从 3 年缩短至 2 年,因此下一个 LTS 将是 2023 年 9 月的 Java 21。

六个月前宣布的另一个重要变更,是引入了无摩擦免费用许可证,该许可证允许组织继续免费使用 Oracle JDK 17 版本,包括每季度的性能、稳定性和安全补丁。从 JDK 17 开始,LTS 版本将在新的免费用许可证下提供至少三年,允许与下一个 LTS 版本重叠整整一年。非 LTS 版本(例如 JDK 18 及其更新)也将在此新许可证下提供。

Java SE 订阅者可以访问 Oracle 的 Java SE 支持和商业功能,例如 GraalVM Enterprise、Java Management Service 和高级管理控制台。有关新许可证的详细信息,请参阅 新的 Java SE 许可证条款博客


Java 18,携手共进

与之前的版本一样,在 Java 18 中,我们继续赞扬 OpenJDK 社区中的许多个人和组织的贡献——我们共同构建 Java!

JDK 18 修复比率

多年来,JDK 版本中的变更率基本保持不变,但在六个月的节奏下,交付生产就绪功能和改进的速度已大大提高。

与我们使用旧版“主要版本”每隔几年进行数万次修复并交付近一百个 JEP(JDK 增强提案)不同,增强功能以精简的“功能版本”形式在更易于管理、可预测的六个月时间表中交付。变更范围从重要的新功能到常规维护、错误修复和文档改进的小型增强。每个变更在 JDK 错误系统 中的单个问题中以单个提交表示。

在 Java 11 至 Java 18 的 GA 发布时,17,253 个标记为已修复的 JIRA 问题中,12,442 个是由为 Oracle 工作的人员完成的,而 4,811 个是由个人开发者和为其他组织工作的开发者贡献的。JDK 18 为独立个人贡献者提供了一个版本中最大的贡献。这表明 OpenJDK 不仅是组织的欢迎场所,也是各种类型的贡献者将他们的独特技能带入 Java 社区的欢迎场所。

通过问题和整理受让人组织数据,得出以下图表,显示赞助 Java 中贡献开发的组织

Graph showing the number of fixes per organization

在 Java 18 中,在标记为已修复的 2,062 个 JIRA 问题中,1261 个由 Oracle 完成,而 801 个由 Java 社区其他成员贡献,其中包括独立个人贡献者的创纪录 168 个。

Oracle 还感谢为阿里巴巴、亚马逊、ARM、英特尔、JetBrains、红帽、SAP 和腾讯等组织工作的开发人员做出的杰出贡献。我们也很感谢看到来自贝尔软件、DataDog、龙芯和独立开发人员等较小组织的贡献,他们共同贡献了 Java 18 中 13% 的修复。

我们同样感谢许多经验丰富的开发人员审查提出的更改、尝试早期访问版本并报告问题的早期采用者,以及在 OpenJDK 邮件列表中提供反馈的敬业专业人士。

以下个人对构建质量提供了宝贵的反馈,记录了高质量的错误,或提供了频繁的更新

  • Jaikiran Pai(Apache Ant)
  • Tilman Hausherr(Apache PDFBox)
  • Martin Grigorov(Apache Tomcat、Apache Wicket)
  • Rafael Winterhalter(Byte Buddy)
  • Yoann Rodière(Hibernate ORM、验证器、搜索、反应式)
  • Marc Hoffman(JaCoCo)
  • David Karnok(RxJava)

此外,通过质量推广计划,我们要感谢以下 FOSS(自由和开源)项目和个人,他们为测试 Java 18 早期访问版本提供了出色的反馈,以帮助提高版本的质量。

  • Apache Derby(Rick Hillegas)
  • Apache Lucene(Uwe Schindler)
  • Apache MyBatis(Iwao Ave)
  • Apache Zookeeper(Enrico Olivelli)
  • BNYM 代码型式(Rinat Gatyatullin)
  • Karate(Peter Thomas)


Java 18 中的新增功能

除了数千个性能、稳定性和安全更新之外,Java 18 还提供了九项增强功能/更改(称为JDK 增强建议 - JEP),包括两个在孵化器模块中提供的功能和一个预览语言功能。

孵化器模块允许将非最终 API 和非最终工具交到开发者和用户手中,以收集反馈,最终提高 Java 平台的质量。

类似地,预览功能是 Java SE 平台的完全指定和完全实现的语言或 VM 功能;但尚未永久化。它们在 JDK 功能版本中提供,以便在它们在未来版本中永久化之前,允许基于实际用途的开发者反馈。这也为工具供应商提供了在功能最终确定为 Java SE 标准之前支持功能的机会。

Java 18 提供的九个 JEP 分为四类

1. 核心库改进和更新

JEP 400:默认情况下使用 UTF-8

当代码依赖于默认字符集时,使 Java 程序更具可预测性和可移植性;阐明标准 Java API 在何处使用默认字符集,并在整个标准 Java API 中标准化为 UTF-8,控制台 I/O 除外。

JEP 408:简单 Web 服务器

开箱即用的静态 HTTP 文件服务器,具有简单的设置和最少的功能,可减少开发人员的激活精力,使 JDK 更易于使用,并通过命令行提供默认实现,同时提供一个小 API 用于以编程方式创建和自定义。

您可以在 Inside Java 播客第 22 期 中了解有关简单 Web 服务器的更多信息,该播客由 Julia Boes 主持。

JEP 416:使用方法句柄重新实现核心反射

降低了未来语言功能的反射支持的维护和开发成本。它还简化了 Hotspot VM 代码。

JEP 418:Internet 地址解析 SPI(服务提供程序接口)

它可以将通常导致阻塞操作系统调用的默认操作系统本机解析器替换为开发人员提供的备用解析器。

2. 工具改进

JEP 413:Java API 文档中的代码片段

简化了 API 文档中源代码片段的验证和格式化。虽然正确性最终是作者的责任,但 javadoc 和相关工具中的增强支持可以使其更容易实现,从而支持现代样式,例如语法突出显示,以及名称与声明的自动链接,并为创建和编辑片段提供更好的集成开发环境 (IDE) 支持。

Nicolai Parlog 在 Inside Java 新闻播报第 20 期 中发布了代码片段功能的介绍视频。

3. 预览和孵化器

JEP 417:向量 API 第三个孵化器

引入了一种与平台无关的可靠方式,用于清晰简洁地表示支持的 CPU 架构的各种向量计算。

JEP 419:外部函数和内存 API 第二个孵化器

极大地简化了创建利用本机程序的 Java 程序所需的工具和知识。这将允许 Java 开发人员访问专门的非 Java 库。

JEP 420switch 的模式匹配 第二个预览

通过扩展 switch 表达式和语句的表现力和适用性,提高 Java 开发效率。在 switch 中允许模式匹配将使表达复杂的面向数据的查询更加简洁和安全。

4. 弃用

JEP 421:弃用 Finalization 以便移除

通过提供简单的工具来帮助检测对已弃用功能的依赖,为开发人员做好准备,以便最终移除过时的 `Finalization` 功能。

您可以在 Inside Java 播客第 21 期 中找到与 Brent Christian 关于逐步弃用平台中的 finalization 功能的讨论,以及正确处理资源的替代方案。


工具支持

工具和库对新功能的及时支持有助于提高开发人员的工作效率。借助 Java 18,我们继续欢迎领先 IDE 供应商的努力,他们最及时的更新为开发人员提供了对当前 Java 版本的支持。开发人员可以期待通过以下 IDE 立即利用 Java 18 支持


资源

Java 仍然是当今技术趋势中的首选编程语言。正如 Java 18 及时交付改进所展示的那样,通过持续的周密规划和生态系统参与,Java 平台已做好准备,可以在云中进行现代开发和增长。

通过以下方式继续了解最新消息和更新

  • 访问 Dev.Java;Oracle 专用的门户,用于提升您的 Java 知识和社区参与。
  • 访问 Inside.Java;Oracle Java 团队的新闻和观点。
  • 收听 Inside.Java 播客;由 Oracle Java 开发人员直接为您带来的 Java 开发人员音频节目。对话将讨论语言、JVM、OpenJDK、平台安全性、Loom 和 Panama 等创新项目以及介于两者之间的一切。
  • 观看 Inside.Java 新闻播报;一个视频节目,将 Inside.Java 播客扩展为视频格式。
  • 观看 YouTube 上的 Java;Oracle 相关 Java 视频的集合,可帮助您提升您的 Java 专业知识。
  • 加入 OpenJDK 邮件列表;了解您最喜爱的 OpenJDK 项目进展的地方。
  • 在 Twitter 上关注 OpenJDKJava;提供 Java 持续演进的更新和新闻的社交流。
  • 阅读 Java Magazine;Oracle 的数字 Java 出版物,提供由开发人员撰写的面向开发人员的技术文章。
  • 了解如何 以编程方式下载 JDK 的最新版本