19

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

4

2 回答 2

19

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

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

资料来源克里斯的推文


如果您明确愿意使用这些org.graalvm.*类,它们不会出现在 JDK-9 构建中,除了这里的 Linux 发行版JEP-317#Experimental Java-Based JIT Compiler的状态也有类似的内容。

Status    Integrated
Scope JDK
Release   10

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

-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
于 2018-01-14T18:46:05.817 回答
1

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

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

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

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

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

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

于 2018-04-03T18:44:55.413 回答