通过标准JDK 11使用graalvm

时间:2018-10-22 15:17:22

标签: java nashorn java-11 graalvm

我有使用Nashorn Javascript引擎的项目。我正在尝试迁移到java11,也从Nashorn迁移到Graal。我已经读过here,可以从JDK 11开始通过标准的JDK安装使用graal。此外,我还读到了Graal-SDK已上载到Maven Central,并且有Java标志{{1} },便于迁移。因此,我使用了jdk11,将maven依赖项添加到pom.xml中,并使用了Java标志,但是当我尝试通过名称“ graal.js”获取引擎时,这里的值为空:

polyglot.js.nashorn-compat

我缺少什么?如何运作?

2 个答案:

答案 0 :(得分:5)

这里是一个示例maven项目,该项目显示了如何通过脚本API和polyglot API在JDK11上运行GraalVM JavaScript引擎。希望对您有帮助!

https://github.com/graalvm/graal-js-jdk11-maven-demo

要点是添加必要的依赖项(graal-sdk,js,js-scriptengine,以及可选的profiler和chromeinspector),使用启用的实验选项和JVMCI编译器(-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI)运行并升级具有graal jar(--upgrade-module-path=${compiler.dir}/compiler.jar)的模块路径,也可以从maven(org.graalvm.compiler:compiler)中获得。

答案 1 :(得分:1)

您缺少以下依赖项:

<dependency>
    <groupId>org.graalvm.js</groupId>
    <artifactId>js-scriptengine</artifactId>
</dependency>
<dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-api</artifactId>
</dependency>

js-scriptengine包含ScriptEngine实现:com.oracle.truffle.js.scriptengine.GraalJSScriptEngine

并且需要truffle-api(只有直接实例化GraalJSEngineFactory时,您才会收到错误消息:

GraalJSEngineFactory gsf = new GraalJSEngineFactory();

但是似乎缺少另一个软件包,因为它对我不起作用。