我的项目使用了Nashorn Javascript引擎。我正在尝试迁移到java11,也从Nashorn迁移到Graal。我已经阅读了here,可以通过从JDK 11开始的标准JDK安装来使用graal。此外,我还阅读了Graal-SDK上传到Maven Central的信息,并且有Java标记polyglot.js.nashorn-compat
以便于迁移。因此,我使用了jdk11,将maven依赖项添加到pom.xml中,并使用了Java标志,但是当我尝试通过名称“graal.js”获取引擎时,此处为null:
ScriptEngine engine = engineManager.getEngineByName("graal.js")
我想念的是什么?如何使其运作?
最佳答案
这是一个示例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
)中获得。