Last Updated:

Java 18 中的新功能

银狐

Java 开发工具包 (JDK 18) 的最新更新将于下周二正式发布 (GA),虽然它不是长期支持 (LTS) 版本,但在此更新中有很多值得期待的地方。  

JDK 18 是 Java SE 平台第 18 版的参考实现(由 Java 社区流程中的 JSR 393指定 ),定于 3 月 22 日推出 GA,按计划以加速的六个月发布节奏 Oracle JDK 17 于 2017 年宣布。JDK 17 是自 2018 年 JDK 11 进入 GA 以来的第二个 LTS,于 2021 年 9 月宣布

JDK 18 版本实现了一个相对较短的 JDK 增强提案 (JEP) 列表,包括:

JEP 400:默认
为 UTF-8 将 UTF-8 指定为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、语言环境和配置中保持一致。

JEP 408: Simple Web Server
提供一个命令行工具来启动一个只提供静态文件的最小 Web 服务器。没有可用的 CGI 或类似 servlet 的功能。该工具可用于原型设计、临时编码和测试目的,尤其是在教育环境中。

JEP 413:Java API 文档中的代码片段为 JavaDoc 的标准 Doclet
引入一个@snippet标签,以简化在 API 文档中包含示例源代码。  

JEP 416:使用方法句柄重新实现核心反射在java.lang.invoke方法句柄之上重新
实现java.lang.reflect.Method 、  ConstructorField 。使方法处理反射的底层机制将减少java.lang.reflectjava.lang.invoke API 的维护和开发成本。        

JEP 417:向量 API(第三个孵化器)
引入一个 API 来表达向量计算,在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。

JEP 418:Internet-Address Resolution SPI
为主机名和地址解析定义服务提供者接口 (SPI),以便java.net.InetAddress可以使用平台内置解析器以外的解析器。  

JEP 419: Foreign Function & Memory API (Second Incubator)
引入一个 API,Java 程序可以通过它与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 之外的代码)和安全地访问外部内存(即不受 JVM 管理的内存),API 使 Java 程序能够调用本机库并处理本机数据,而不会出现脆弱性和危险。 JNI。

JEP 420:switch 的模式匹配(第二次预览)通过switch表达式和语句的模式匹配以及对模式语言的扩展来
增强 Java 编程语言 。将模式匹配扩展到switch允许针对多个模式测试表达式,每个模式都有特定的操作,因此可以简洁安全地表达复杂的面向数据的查询。这是 JDK 18 中的 预览语言功能 。   

JEP 421:弃用终结性以在未来版本中移除弃用终结性。
目前,Finalization 默认保持启用状态,但可以禁用以促进早期测试。在未来的版本中,它将默认禁用,在以后的版本中,它将被删除。依赖最终确定的库和应用程序的维护者应该考虑迁移到其他资源管理技术,例如try-with-resources 语句 和 清理程序。 

甲骨文去年宣布,它将开始每两年而不是每三年提供一次 LTS。该公司表示将在 2023 年 9 月发布下一个 LTS 版本(JDK 21)。

“Java 开发人员今天面临的最大挑战之一是他们的组织只允许他们使用最新的 LTS 版本,”Oracle 的 Java 平台集团开发副总裁 Georges Saab 在去年宣布 JDK 17 时说。“通过将 LTS 版本改为每两年发布一次,与保守组织合作的开发人员现在有更多选择和访问他们喜欢和想要使用的功能的权限。”

Oracle 表示,所有 JDK 版本都将在免费使用许可下提供,直到下一个 LTS 版本发布后的一整年。甲骨文还表示,它将继续在开源通用公共许可证 (GPL) 下提供 OpenJDK 版本,就像自 2017 年以来一样。