Java 9 是否包含 Graal?

2022-09-02 13:26:25

我正在阅读JEP 317。它说Graal(一个新的基于Java的实验性JIT编译器)将成为JDK 10的一部分,但后来它说JDK 9中已经可用了。那么,JEP 317的意义何在呢?Java 9 是否包含 Graal?


答案 1

从我的一个备忘录中,在linux-x64(开箱即用)上使用Graal在JDK 9上,您可以使用以下命令启用它:

-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler

来源来自克里斯的推文


如果您明确愿意使用这些类,那么除了这里的Linux发行版之外,它们不存在于JDK-9版本中,并且JEP-317#实验性基于Java的JIT编译器的状态也读作类似的东西。org.graalvm.*

Status    Integrated
Scope JDK
Release   10

更新:- 要在 JDK10 上使用 Graal,可以使用以下命令启用它:

-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -Djvmci.Compiler=graal

答案 2

Graal包含在9中,但它以不同的方式使用。

在Java中,Graal被用作AOT(提前)编译器,允许用户使用该工具创建手动编译的库。jaotc.so

然后,可以在 JVM 启动时加载这些库并直接使用这些库。

详细的描述可以在相关的Java 9 JEP中找到:http://openjdk.java.net/jeps/295

在Java 10中,如JEP 317中所述,Graal可以用作JIT编译器而不是HotSpot。

这意味着类将在JVM中“动态”编译,而不是需要事先手动编译。


推荐