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 и более лет, по-прежнему должен компилироваться.