it-swarm.com.ru

Используйте graalvm через стандарт JDK 11

У меня в проекте используется движок Nashorn Javascript. Я пытаюсь перейти на Java11, а также перейти с Nashorn на Graal. Я прочитал здесь что я могу использовать graal через стандартную установку JDK, начиная с JDK 11. Также я прочитал там, что Graal-SDK загружаются в центральный Maven, и что для облегчения миграции есть флаг Java polyglot.js.nashorn-compat , Итак, я использовал jdk11, добавил зависимость maven в pom.xml и использовал флаг Java, но когда я пытаюсь получить движок по имени "graal.js", я получаю здесь ноль:

ScriptEngine engine = engineManager.getEngineByName("graal.js")

Что мне не хватает? Как заставить это работать?

4
Valentina Chumak

Вот пример проекта maven, который показывает, как запустить JavaScript-движок GraalVM на JDK11 как с помощью API сценариев, так и API Polyglot. Надеюсь, поможет!

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

Суть в том, чтобы добавить необходимые зависимости (graal-sdk, js, js-scriptengine, а также опционально профилировщик и chromeinspector), запустить с включенными экспериментальными параметрами и JVMCI-компилятором (-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI) и обновить путь к модулю с помощью jal graal ( --upgrade-module-path=${compiler.dir}/compiler.jar), который также доступен от maven (org.graalvm.compiler:compiler).

3
BoriS

Вам не хватает следующих зависимостей: 

<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

И трюфель-API необходим (вы получите сообщение об ошибке только в том случае, если создаете экземпляр GraalJSEngineFactory напрямую:

GraalJSEngineFactory gsf = new GraalJSEngineFactory();

Однако, кажется, отсутствует другой пакет, так как он не работает для меня.

1
Robert