JEP 317: Experimental Java-Based JIT Compiler
JIT-компилятор на Java в статусе Experimental (экспериментальная функция)
| Ответственный | Igor Veresov |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 10 |
| Компонент | hotspot / compiler |
| Обсуждение | hotspot dash compiler dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | M |
| Рецензенты | John Rose, Mikael Vidstedt, Vladimir Kozlov |
| Одобрен | Vladimir Kozlov |
| Создан | 2017/10/20 20:03 |
| Обновлён | 2018/03/28 01:58 |
| Задача | 8189751 |
Аннотация
Разрешить использовать JIT-компилятор на Java, Graal, в качестве JIT-компилятора в статусе Experimental на платформе Linux/x64.
Что не является целью
Достичь или превзойти производительность существующих JIT-компиляторов не является целью.
Мотивация
Graal, JIT-компилятор на Java, лежит в основе компилятора Ahead-of-Time (заблаговременная компиляция и подготовка) (AOT) в статусе Experimental, который появился в JDK 9. Возможность использовать его как JIT-компилятор в статусе Experimental — одна из инициатив Project Metropolis и следующий шаг в изучении того, насколько реален JIT на Java для JDK.
Описание
Разрешить использовать Graal как JIT-компилятор в статусе Experimental, начиная с платформы Linux/x64. Graal будет использовать интерфейс компилятора JVM (JVMCI), появившийся в JDK 9. Graal уже входит в JDK, поэтому работа над его включением как JIT-компилятора в статусе Experimental будет в основном состоять из тестирования и отладки.
Чтобы включить Graal в качестве JIT-компилятора, используйте следующие параметры в командной строке java:
-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler
Тестирование
Для этой работы запланировано стандартное тестирование компиляторов. Оно включает запуск всех тестов HotSpot и JDK с различными наборами флагов на Linux/x64. Помимо этих стандартных тестов, будут запускаться модульные тесты, разработанные специально для Graal. Будет реализована поддержка запуска этих модульных тестов во фреймворке jtreg. В рамках этой работы будут проведены первоначальное тестирование производительности и бенчмаркинг.
Риски и допущения
Более медленный запуск и увеличенное потребление кучи Java у этого варианта в статусе Experimental могут повлиять на первоначальную оценку со стороны разработчиков и/или ограничить её. На некоторых приложениях и бенчмарках Graal будет уступать по производительности существующим JIT-компиляторам HotSpot.