GraalVM
GraalVM в настоящее время является высокопроизводительной встраиваемой виртуальной машиной с полиглотом.
поддержка ряда языков программирования: Java (и языки JVM),
JavaScript (включая node.js), Ruby, R, Python и C / C ++ и другие языки
с бэкэндом LLVM.
Вы можете скачать готовый дистрибутив GraalVM здесь:
https://www.graalvm.org/downloads.
Среди прочего он включает в себя среду выполнения Java, среду узла, механизм JavaScript под названием Graal.js и т. Д.
Graal SDK - это API-интерфейс polyglot, позволяющий GraalVM работать со всеми языковыми реализациями, которые он может запустить.
Этот API-интерфейс polyglot упакован в файл jar: $GRAALVM_HOME/jre/lib/boot/graal-sdk.jar
.
Добавление этого файла в качестве внешней библиотеки в ваш проект / модуль IDEA позволит IDE находить такие классы, как:
org.graalvm.polyglot.Context
и org.graalvm.polyglot.Value
, которые необходимы для взаимодействия с языками, в том числе
реализация JavaScript.
Если ваш проект использует Maven, вы можете добавить системную зависимость к этому файлу, и maven найдет ее в любой системе, где
$JAVA_HOME
установлен, чтобы указать на распределение GraalVM.
<dependency>
<groupId>org.graalvm</groupId>
<artifactId>graal-sdk</artifactId>
<version>1.0.0-rc</version>
<scope>system</scope>
<systemPath>${java.home}/lib/boot/graal-sdk.jar</systemPath>
</dependency>
Теперь, когда вы запустите команду java
из дистрибутива GraalVM, необходимые файлы будут автоматически добавлены в путь к классам.
Поэтому больше ничего не нужно для запуска в IDE что-то вроде следующего:
import org.graalvm.polyglot.*;
public class Main {
public static void main(String[] args) {
Context polyglot = Context.create();
Value array = polyglot.eval("js", "[1,2,42,4]");
System.out.println(array.getArrayElement(2).asInt());
}
}
Теперь это потому, что в GraalVM по умолчанию включен JavaScript-движок Graal.js.
Если вы хотите запустить его на стандартном JDK, вам нужно добавить больше вещей в classpath.
Запуск Graal.js на складе JDK **
Есть вопрос о том, как запустить Graal.js на складе JDK: Как использовать graaljs? Есть ли место, где можно получить файл / файлы .jar? .
В принятом ответе более подробно рассказывается, где найти необходимые файлы jar, чтобы он работал на Java 8.
В двух словах вам нужно добавить следующие jar-файлы в classpath, чтобы он действительно работал:
- graal-sdk.jar - API Polyglot GraalVM
- truffle-api.jar - API для языковых реализаций.
- graaljs.jar - это реализация JavaScript-движка GraalVM
- graaljs-scriptengine.jar - позволяет использовать Graal.js через API механизма сценариев Java.
- graaljs-launcher.jar
- tregex.jar - библиотека регулярных выражений
- truffle-profiler.jar - профилировщик для реализаций трюфельных языков
- chromeinspector.jar - интеграция с отладчиком
- launcher-common.jar
Вы можете найти их в дистрибутиве GraalVM, который вы скачали , оба выпуска будут работать нормально.
Теперь без компилятора Graal производительность движка JavaScript была бы неоптимальной.
Как вы уже упоминали, JDK 11 поставляется со снимком компилятора Graal (не GraalVM, который является полным распространением проекта GraalVM, включая JS enginer, интерпретатор бит-кода LLVM, реализацию узла, JVM и т. Д.). Вы можете включить компилятор Graal, передав
--XX:+UnlockExperimentalVMOptions --XX:+UseJVMCICompiler
в команду java
.
Теперь выполнение всего этого на JDK 11 может не работать, потому что JDK 11 достаточно отличается от JDK 8 и могут быть проблемы с модульной системой или отсутствующими вещами (такими как jax-b), но это также может работать. Это будет работать на JDK 8.