JDK 18:Java 18预览 -infoworld


截至 11 月 1 日,Java 开发工具包 (JDK) 18OpenJDK 页面列出了针对 JDK 18 提出的API接口:一个简单的 Web 服务器、一个向量 API、代码片段、核心反射的重新实现和 UTF-8 字符集 。
虽然JDK 17于 9 月 14日发布,是一个长期支持 (LTS) 版本,它将获得 Oracle 至少八年的支持,但预计 2022 年 3 月发布的 JDK 18 将是一个短期功能版本,支持六个月。可以在java.net 上找到适用于 Linux、Windows 和 MacOS 的 JDK 18 的早期访问版本。
JDK 18 提案的细节包括:

  • 简单的 web 服务器,将提供一个命令行工具来启动一个仅提供静态文件的最小 web 服务器。没有 CGI 或类似 servlet 的功能可用。该工具对于原型设计、临时编码和测试非常有用,尤其是在教育环境中。该计划的目标包括提供一个开箱即用的静态 HTTP 文件服务器,具有简单的设置和最少的功能,减少开发人员的激活能量并使 JDK 更易于使用,并通过命令行和一个小的 API 提供默认实现用于程序化创建和定制。提供功能丰富或商业级的服务器不是提案的目标。
  • 外部函数和内存 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过调用外部函数——JVM 之外的代码——以及安全地访问外部内存——不由 JVM 管理的内存——API 让 Java 程序调用本机库并处理本机数据,但没有 JNI(Java 本机接口)的脆弱性和危险。其目的是用高级的纯 Java 开发模型替换 JNI。对于 JDK 18,将根据反馈进行改进,例如在内存访问变量句柄中支持更多载体(例如 Boolean 和 MemoryAddress),以及用于将 Java 数组复制到内存段和从内存段复制 Java 数组的新 API。
  • 矢量API将被孵育在18 JDK的第三时间,此前在孵育JDK 16JDK 17。该提案将在运行时将向量计算表达为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。向量运算表达了一定程度的并行化,从而能够在单个 CPU 周期内完成更多工作,从而显着提高性能。与平台无关的矢量 API 旨在提供一种在 Java 中编写复杂算法的方法,使用现有的 HotSpot 自动矢量化器,但使用用户模型使矢量化更具可预测性。JDK 18 还将添加对ARM 标量向量扩展的支持 平台并提高在支持硬件掩码的架构上接受掩码的向量操作的性能。
  • 指定 UTF-8 作为标准 Java API 的默认字符集. UTF-8 是一种用于电子通信的可变宽字符编码,被认为是网络的标准字符集。Charset 是一种能够对网络上的所有字符进行编码的字符编码。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、区域设置和配置中保持一致。该提案无意定义新的 Java 标准或特定于 JDK 的 API。该提案的支持者预计,Java 选择 UTF-8 不会对许多环境中的应用程序产生影响,因为 MacOS、许多 Linux 发行版和许多服务器应用程序已经支持 UTF-8。但是,在其他环境中存在风险,最明显的是,在处理未指定默认字符集时生成的数据时,依赖于默认字符集的应用程序将表现不正确。数据损坏可能会悄悄发生。预计主要影响将落在亚洲地区的 Windows 系统用户以及亚洲和其他地区的某些服务器环境中。
  • Java API 文档中的代码片段,包括@snippet为 JavaDoc 的标准 Doclet引入一个标签,以简化 API 文档中示例源代码的包含。该计划的目标之一是通过提供对这些片段的 API 访问来促进源代码片段的验证。虽然正确性是作者的责任,但 JavaDoc 和相关工具中的增强支持可以使其更容易实现。其他目标包括启用现代样式,例如语法突出显示,以及名称与声明的自动链接,以及为创建和编辑片段提供更好的 IDE 支持。该提案指出,API 文档的作者通常在文档注释中包含源代码片段。