GraalVM for JDK 22 提供对 JDK 22 JEP 和新 Truffle 版本的支持

Oracle 发布 GraalVM for JDK 22

Oracle 发布了 GraalVM for JDK 22,内部版本号为 24.0。该版本与 Java 22 的最新发布保持一致,并支持 Java 22 中的大部分 JDK 增强提案(JEPs)。

主要功能与支持

  • Generational ZGC:自 JDK 21 引入的 Generational ZGC 尚未支持即时编译(JIT),但计划在 24.1 版本中实现。
  • Vector API:Graal JIT 支持 Vector API,但仍在改进中。Native Images 中的 Vector API 支持正在进行中,尚未可用。
  • Foreign Function and Memory API:该 API 在 JDK 22 中正式发布,但尚未在 Native Images 中支持。

更新与维护

GraalVM for JDK 22 将在 GraalVM for JDK 23 发布前获得六个月的更新支持。

项目 Galahad

Project Galahad 是 2022 年 12 月引入的新项目,旨在将 Java 相关的 GraalVM 功能贡献给 OpenJDK 社区,并可能在 JDK 中进行孵化。作为准备的一部分,Graal JIT 编译器现在使用 jdk.graal 前缀,而非已弃用的 graal 前缀。

性能优化

  • Java Recordsequals()hashCode() 方法现在使用内联方法句柄,以提高 Native Images 中记录的性能。
  • 默认初始化:从该版本开始,默认允许所有类在构建时使用和初始化。
  • Spring Boot Buildpack:Oracle 为 Spring Boot 应用程序提供了 Buildpack,可通过配置 spring-boot-maven-plugin 使用。

性能优化与报告

  • Profile Guided Optimizations (PGO):PGO 提高了 Native Image 的性能,但收集高质量的配置文件可能具有挑战性。新的实验性选项 -H:+PGOPrintProfileQuality 可以在构建输出报告中显示配置文件的质量。
  • Native Image Build Reports:构建报告包含构建过程和生成二进制文件的信息。现在可以通过 -H:+BuildReport-H:+BuildReportSamplerFlamegraph 选项将分析信息可视化为火焰图。

实验性支持

  • Foreign Function and Memory API:可通过 -H:+ForeignAPISupport 选项启用实验性支持,目前支持 x64 架构的下行调用。

Truffle 语言

Truffle 语言版本 24.0 与 GraalVM for JDK 22 和 JDK 21(最新的长期支持版本)兼容。未来的 Truffle 语言版本将与最新的 GraalVM JDK 和 LTS 版本兼容,但可能需要最新的 JDK 小版本。

安装与使用

Oracle 提供了所有支持平台的二进制文件。用户可以通过 SDKMAN!、Homebrew 或 yum 包管理器在 Oracle Cloud Infrastructure VM 实例上安装 GraalVM。此外,GraalVM 还可用于 GitHub Actions、Paketo Buildpacks 和 Oracle Container Registry 的容器镜像。

开源版本

GraalVM for JDK 22 Community 22.0.0 开源版本可在 GitHub、SDKMAN! 和 Chocolatey 上获取。

更多信息

有关该版本的更多信息,可参考 Alina Yurenko 的博客文章和 YouTube 上的发布讨论视频。完整的更改列表可在发布说明中找到。

阅读 32
0 条评论