Last Updated:

GraalVM 的最新版本包括对 Java 17 的支持

银狐

GraalVM 21.3 于 10 月发布,是这款高性能、多语言、虚拟机今年的最后一个版本,它在 2021 年留下了一些期待已久的功能、大量错误修复以及对 Java 17 和 JDK Flight 的支持Recorder (JFR) 用于对原生 Java 可执行文件进行低开销的生产分析。

“与基于 JDK11 的构建一起,GraalVM 21.3 也可用于最近发布的 Java 17,”Oracle 的 GraalVM 首席开发人员倡导者 Alina Yurenko 在一篇博文中解释道。“这意味着,除了 Java 17 的所有出色功能(例如开关表达式的模式匹配、密封类、平台更新等)之外,我们还可以访问 Java 17 中积累的所有 Java 11+ 功能……”

目前有两个版本的 GraalVM 可用:一个免费的社区版,它是从 GitHub 上可用的 GraalVM 源构建的,可用于开发和生产使用;企业需要 Oracle Java SE 订阅 才能用于生产,按用户或处理器付费。此版本附带新的企业容器映像和一组新的社区容器映像。

此版本中的编译器更新添加了性能优化并提升了以前的实验性功能。例如,Yurenko 指出了针对非计数循环的 Strip Mining 优化,该优化现在默认启用。她解释说,通过这种优化,更多的未计数循环被转换为计数循环,成为进一步优化的对象,例如矢量化和部分展开,从而为大量使用非计数循环的工作负载带来高达 15% 的加速。

同样在此版本中,默认启用增强 的自动矢量化,这在诸如数学繁重的机器学习工作负载等工作负载上,使 GraalVM Enterprise 比 OpenJDK 快 40%。此外,此版本的企业版增加了对持续致盲的支持,以防御即时 (JIT) 喷射攻击。“恒定致盲阶段使用随机生成的密钥对代码中用户提供的常量进行加密,”Yurenko 说,“因此攻击者无法依赖可执行内存中存在的即时值。” 恒定致盲是默认禁用的实验性功能。

此版本中还有一个新工具,旨在改进对 Java 程序配置文件的捕获和分析。称为proftool,它旨在提供有关执行的机器级详细信息,以帮助进行 JIT 性能分析。该工具当前包含一个 Java 虚拟机工具接口 (JVMTI) 代理,用于捕获 JVM 生成的所有程序集、一个用于 Linux perf 输出的解析器和一个用于 HotSpot LogCompilation 信息的解析器。通过将这些组件组合到一个命令行中,性能配置文件信息可以归因于 JIT 代码。配置文件集合目前仅支持 Linux perf,但一旦捕获数据,就可以在任何地方查看配置文件。Yurenko 在即将发布的博客文章中承诺了细节。

GraalVM 的第一个版本于 2018 年 4 月发布,是 Java 虚拟机 (JVM) 的扩展,旨在运行以多种语言编写的应用程序,包括 JavaScript、Python、Ruby 和 R;基于 JVM 的语言,例如 Java、Scala 和 Kotlin;和基于低级虚拟机 (LLVM) 的语言,例如 C 和 C++。Graal 是基于 Java 的即时 (JIT) 编译器,它是 JDK 9 中引入的 Ahead-of-Time (AOT) 编译器的基础。

GraalVM Enterprise 可 从 Oracle 技术网免费用于开发和评估使用。它可以购买并且在 Oracle Cloud 上免费(包括支持)。它还内置在 Oracle Cloud Developer Image中,其中包括最新的工具、OCI SDK、Terraform 模板和数据库连接器。

Oracle于 9 月宣布了 JDK 17 版本的全面上市 (GA)。这是该公司六个月发布计划下 Java SE 平台参考实现的最新更新,也是自 JDK 11 于 2018 年 GA 发布以来的第二次长期支持 (LTS)。