通过标准 JDK 11 使用 graalvm
Use graalvm via the standard JDK 11
我的项目使用了 Nashorn Java脚本引擎。我正在尝试迁移到 java11 并从 Nashorn 迁移到 Graal。我读过 here,我可以通过标准 JDK 安装使用 graal,从 JDK 11 开始。我还读到,Graal-SDK 已上传到 Maven Central,并且有 Java 标志 polyglot.js.nashorn-compat
便于迁移。所以我使用了 jdk11,将 Maven 依赖项添加到 pom.xml 并使用了 java 标志,但是当我尝试通过名称 "graal.js" 获取引擎时,我在这里得到了空值:
ScriptEngine engine = engineManager.getEngineByName("graal.js")
我错过了什么?如何让它发挥作用?
您缺少以下依赖项:
<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();
但是似乎还缺少另一个包,因为它对我不起作用。
这里是一个示例 Maven 项目,展示了如何通过脚本 API 和多语言 API 运行 JDK11 上的 GraalVM JavaScript 引擎。希望对您有所帮助!
https://github.com/graalvm/graal-js-jdk11-maven-demo
要点是添加必要的依赖项(graal-sdk、js、js-scriptengine,以及可选的分析器和 chromeinspector),运行 启用实验选项和 JVMCI 编译器(-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
) 并使用 graal jar (--upgrade-module-path=${compiler.dir}/compiler.jar
) 升级模块路径,也可以从 maven (org.graalvm.compiler:compiler
) 获得。
我的项目使用了 Nashorn Java脚本引擎。我正在尝试迁移到 java11 并从 Nashorn 迁移到 Graal。我读过 here,我可以通过标准 JDK 安装使用 graal,从 JDK 11 开始。我还读到,Graal-SDK 已上传到 Maven Central,并且有 Java 标志 polyglot.js.nashorn-compat
便于迁移。所以我使用了 jdk11,将 Maven 依赖项添加到 pom.xml 并使用了 java 标志,但是当我尝试通过名称 "graal.js" 获取引擎时,我在这里得到了空值:
ScriptEngine engine = engineManager.getEngineByName("graal.js")
我错过了什么?如何让它发挥作用?
您缺少以下依赖项:
<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();
但是似乎还缺少另一个包,因为它对我不起作用。
这里是一个示例 Maven 项目,展示了如何通过脚本 API 和多语言 API 运行 JDK11 上的 GraalVM JavaScript 引擎。希望对您有所帮助!
https://github.com/graalvm/graal-js-jdk11-maven-demo
要点是添加必要的依赖项(graal-sdk、js、js-scriptengine,以及可选的分析器和 chromeinspector),运行 启用实验选项和 JVMCI 编译器(-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
) 并使用 graal jar (--upgrade-module-path=${compiler.dir}/compiler.jar
) 升级模块路径,也可以从 maven (org.graalvm.compiler:compiler
) 获得。