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 Records:
equals()和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 上的发布讨论视频。完整的更改列表可在发布说明中找到。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。