openjdk.ruOpenJDK на русском

JEP 182: Policy for Retiring javac -source and -target Options

Политика вывода из употребления параметров -source и -target компилятора javac

АвторJoseph D. Darcy
ОтветственныйJoe Darcy
ТипInformational
ОбластьJDK
СтатусDraft
Компонентtools / javac
Обсуждениеdiscuss at openjdk dot java dot net
РецензентыBrian Goetz
ОдобренBrian Goetz
Создан2013/04/02 20:00
Обновлён2025/03/26 21:08
Задача8046172

Аннотация

Чтобы снизить затраты на сопровождение javac, этот JEP определяет политику вывода из употребления старых параметров -source и -target. В JDK 8 использование исходного или целевого уровня 1.5 или более раннего будет объявлено устаревшим, а в JDK 9 поддержка исходного или целевого уровня 1.5 или более раннего будет удалена. Начиная с JDK 9, javac будет следовать политике «текущая + три предыдущие» для поддерживаемых параметров исходного и целевого уровня. При этой политике javac по-прежнему сможет распознавать и обрабатывать class-файлы всех предыдущих JDK, вплоть до class-файлов версии 45.3, которые генерирует JDK 1.0.2, впервые выпущенный в 1996 году.

Цели

Снизить затраты на сопровождение компилятора за счёт удаления устаревшего кода.

Мотивация

Удаление старых параметров исходного и целевого уровня упрощает сопровождение компилятора javac. Многие значения исходного и целевого уровня, поддерживаемые в JDK 8, относятся к линейкам выпусков, публичные обновления которых давно прекращены. Пользователи этих выпусков могут использовать javac из этих выпусков, если в будущем понадобится перекомпиляция.

Параметры исходного и целевого уровня не предписаны спецификацией Java SE и предоставляются для удобства программистов. Однако сопровождение старых параметров обходится не бесплатно. Например, когда указан параметр -source N старше исходного уровня rt.jar, неясно, как языковые артефакты в библиотеках платформы, появившиеся позже выпуска N, должны быть представлены компилируемому коду. Сокращение диапазона поддерживаемых значений исходного и целевого уровня упрощает проектные решения по таким вопросам.

Описание

Никогда не документированные целевые параметры jsr14, 1.4.1 и 1.4.2 уже удалены из JDK 8. Значения исходного и целевого уровня 1.5/5 и более ранние будут объявлены устаревшими в JDK 8. При использовании таких параметров будет выводиться предупреждение. В JDK 9 эти параметры больше не будут распознаваться javac. В JDK 9 будет реализована политика поддержки «текущая плюс три предыдущие», то есть в этом выпуске будут распознаваться 1.9/9, 1.8/8, 1.7/7 и 1.6/6. Эта политика сохранится и в JDK 10.

Влияние

  • Совместимость: эта политика меняет политику совместимости параметров командной строки, но даже при новой политике исходный код, которому 10 и более лет, по-прежнему должен компилироваться.