Java SE 18 发布

经过六个月的开发,Oracle 发布了 Java SE 18(Java Platform, Standard Edition 18),它使用 OpenJDK 开源项目作为参考实现。 除了删除了一些已弃用的功能外,Java SE 18 保持与以前版本的 Java 平台的向后兼容性——大多数以前编写的 Java 项目在新版本下运行时仍然可以不加修改地运行。 Java SE 18(JDK、JRE 和 Server JRE)的可安装版本已为 Linux(x86_64、AArch64)、Windows(x86_64)和 macOS(x86_64、AArch64)准备。 由 OpenJDK 项目开发的 Java 18 参考实现在 GPLv2 许可下完全开放,具有 GNU ClassPath 例外,允许动态链接到商业产品。

Java SE 18 被归类为常规支持版本,并将继续接收更新,直到下一个版本。 长期支持 (LTS) 分支应该是 Java SE 17,它将继续接收更新直到 2029 年。 让我们提醒您,从Java 10发布开始,该项目切换到了新的开发流程,这意味着新版本的形成周期更短。 现在,新功能是在一个不断更新的主分支中开发的,其中包括现成的更改,并且每六个月从该分支分支一次以稳定新版本。

Java 18 的新特性包括:

  • 默认编码为 UTF-8。 基于字符编码处理文本数据的 Java API 现在将在所有平台上默认使用 UTF-8,无论系统设置和区域设置如何。 要恢复到旧行为(根据系统区域设置选择编码),您可以使用“-Dfile.encoding=COMPAT”选项。
  • 该软件包包括 com.sun.net.httpserver 软件包,其中包括 jwebserver 实用程序和库 API,以及用于提供静态内容的简单 http 服务器的实现(不支持 CGI 和类似 servlet 的处理程序)。 内置 HTTP 服务器未针对工作负载进行优化,也不支持访问控制和身份验证,因为它主要用于原型设计、调试和测试项目的开发过程。
  • JavaDoc 支持“@snippet”标签,将工作示例和代码片段嵌入到 API 文档中,您可以在其中使用验证工具、语法突出显示和 IDE 集成。
  • java.lang.reflect API(核心反射)的实现经过了重新设计,旨在获取有关方法、字段和类构造函数的信息,以及访问类的内部结构。 java.lang.reflect API 本身保持不变,但现在使用 java.lang.invoke 模块提供的方法句柄实现,而不是使用字节码生成器。 这一更改使我们能够统一 java.lang.reflect 和 java.lang.invoke 的实现,并简化它们的维护。
  • Vector API 的第三个预览版已经提出,提供了向量计算的函数,这些函数在 x86_64 和 AArch64 处理器上使用向量指令执行,并允许同时将运算应用于多个值 (SIMD)。 与 HotSpot JIT 编译器中提供的标量操作自动向量化功能不同,新 API 可以显式控制并行数据处理的向量化。
  • 添加了用于解析主机名和 IP 地址的 SPI 接口(服务提供者接口),允许您在 java.net.InetAddress 中使用不与操作系统提供的处理程序绑定的替代解析器。
  • 提供了外部函数和内存 API 的第二个预览版,允许应用程序与 Java 运行时之外的代码和数据进行交互。 新的 API 允许您高效地调用非 JVM 函数并访问非 JVM 管理的内存。 例如,您可以从外部共享库调用函数并访问流程数据,而无需使用 JNI。
  • 添加了“switch”表达式中模式匹配的第二个实验性实现,允许在“case”标签中使用灵活的模式而不是精确的值,一次覆盖一系列值,而以前必须使用繁琐的“if...else”表达式链。 对象 o = 123L; 格式化字符串 = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); 默认 -> o.toString(); };
  • 终结机制及其关联方法(例如 Object.finalize()、Enum.finalize()、Runtime.runFinalization() 和 System.runFinalization())已被弃用,并将在未来版本中禁用。
  • ZGC(Z 垃圾收集器)、SerialGC 和 ParallelGC 垃圾收集器支持行重复数据删除。

来源: opennet.ru

添加评论