JEP 410: Remove the Experimental AOT and JIT Compiler
Удаление AOT- и JIT-компилятора в статусе Experimental (экспериментальная функция)
| Ответственный | Vladimir Kozlov |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 17 |
| Компонент | hotspot / compiler |
| Обсуждение | hotspot dash compiler dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Рецензенты | Mikael Vidstedt |
| Создан | 2021/03/10 02:59 |
| Обновлён | 2025/07/02 11:59 |
| Задача | 8263327 |
Аннотация
Удалить написанный на Java компилятор в статусе Experimental для компиляции Ahead-of-Time (заблаговременная компиляция и подготовка), или AOT, и just-in-time (JIT). С момента появления этот компилятор использовался мало, а его поддержка требует значительных усилий. Сохранить интерфейс компилятора JVM на уровне Java (JVMCI) в статусе Experimental, чтобы разработчики могли и дальше использовать собранные отдельно версии компилятора для JIT-компиляции.
Мотивация
Компиляция Ahead-of-Time (инструмент jaotc) была включена в JDK 9 в статусе Experimental через JEP 295. Для AOT-компиляции инструмент jaotc использует компилятор Graal, который сам написан на Java.
Компилятор Graal стал доступен как JIT-компилятор в статусе Experimental в JDK 10 через JEP 317.
С момента появления эти возможности в статусе Experimental использовались мало, а их поддержка и развитие требуют значительных усилий. Эти возможности не были включены в сборки JDK 16, опубликованные Oracle, и никто не пожаловался.
Описание
Удалить три модуля JDK:
jdk.aot— инструментjaotcjdk.internal.vm.compiler— компилятор Graaljdk.internal.vm.compiler.management—MBeanкомпилятора Graal
Сохранить эти два исходных файла, относящихся к Graal, чтобы модуль JVMCI (jdk.internal.vm.ci, JEP 243) по-прежнему собирался:
src/jdk.internal.vm.compiler/share/classes/module-info.javasrc/jdk.internal.vm.compiler.management/share/classes/module-info.java
Удалить код HotSpot, относящийся к AOT-компиляции:
src/hotspot/share/aot— выгружает и загружает AOT-код- Дополнительный код, защищённый условием
#if INCLUDE_AOT
Наконец, удалить тесты, а также код в make-файлах, относящийся к Graal и AOT-компиляции.
Альтернативы
Разработчики, которые хотят использовать компилятор Graal для AOT- или JIT-компиляции, могут использовать GraalVM.
Риски и допущения
Мы исходим из того, что разработчики, активно использующие эти возможности, получили достаточно времени и предупреждений об этом удалении.