Java 9 включает в себя Graal?
Я читаю JEP 317. В нем говорится, что Graal (новый экспериментальный JIT-компилятор на основе Java) будет частью JDK 10, но затем говорится, что он уже доступен в JDK 9. Итак, в чем же смысл JEP 317? Java 9 включает в себя Graal или нет?
2 ответа
Из одной из моих заметок на linux-x64 (из коробки), чтобы использовать Graal на JDK 9, вы можете включить его, используя:
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
Источник: твит от Криса.
Если вы явно готовы использовать org.graalvm.*
классы, они не присутствуют в сборке JDK-9, за исключением дистрибутива Linux здесь, и статус JIT-317#Experimental Java-Based JIT Compiler также показывает нечто подобное.
Status Integrated Scope JDK Release 10
Обновление:- Чтобы использовать Graal на JDK10, можно включить его с помощью:-
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
Грааль входит в 9, но используется по-другому.
В Java 9 Graal используется как компилятор AOT(Ahead of time), который позволяет пользователям использовать jaotc
инструмент для создания скомпилированных вручную .so
библиотеки.
Эти библиотеки могут быть загружены при запуске JVM и использованы напрямую.
Подробное описание можно найти в соответствующем Java 9 JEP: http://openjdk.java.net/jeps/295
В Java 10 Graal, как описано в JEP 317, может использоваться в качестве JIT-компилятора вместо HotSpot.
Это означает, что классы будут компилироваться в JVM "на лету", а не требовать ручной компиляции заранее.