【发布时间】:2018-10-22 15:17:21
【问题描述】:
我的项目使用了 Nashorn Javascript 引擎。我正在尝试迁移到 java11 并从 Nashorn 迁移到 Graal。我已经阅读了here,我可以通过从 JDK 11 开始的标准 JDK 安装使用 graal。我还在那里读到 Graal-SDK 已上传到 Maven 中心,并且有 Java 标志 polyglot.js.nashorn-compat 以便于迁移.所以我使用了 jdk11,将 maven 依赖项添加到 pom.xml 并使用了 java 标志,但是当我试图通过名称“graal.js”获取引擎时,我在这里得到了 null:
ScriptEngine engine = engineManager.getEngineByName("graal.js")
我错过了什么?如何让它发挥作用?
【问题讨论】:
-
trying the other names 像 "JavaScript", "js" 怎么样?
-
你误会了,Graalvm 不是 JDK 11 的一部分,但它可以在标准的 JDK 11 上运行(与 oracle labs jdk 8 不同)。 GraalVM 是它自己的虚拟机,独立于 Hotspot:graalvm.org
-
@JornVernee 你能解释一下“在标准 jdk 上运行 graalvm”是什么意思吗?
-
Graal SDK 不包含
ScriptEngineimplementation。您需要graaljs-scriptengine.jar。这里也提到了这一点:stackoverflow.com/a/50742571/150978 -
我认为他们只是发布基于 JDK 8 构建的 GraalVM 版本,您可以在 github 上询问如何获得 GraalVM 的 JDK 11 构建。至于 OpenJDK 中 Nashorn 的替代品,afaik 不会有,但 deprecated 并不意味着它会立即被移除,只是它不会再更新了。
标签: java nashorn java-11 graalvm