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

JEP 117: Remove the Annotation-Processing Tool (apt)

Удаление инструмента обработки аннотаций (apt)

АвторJoseph D. Darcy
ОтветственныйJoe Darcy
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск8
Компонентtools / javac
Обсуждениеcompiler dash dev at openjdk dot java dot net
ТрудоёмкостьXS
ДлительностьXS
ОдобренBrian Goetz
Создан2011/10/17 20:00
Обновлён2014/11/03 23:58
Задача8046107

Аннотация

Удалить из JDK инструмент apt, связанный с ним API и документацию.

Цели

Удаление apt из JDK позволит завершить переход обработки аннотаций на более совершенный стандартизированный API JSR 269.

Фреймворк обработки аннотаций apt специфичен для JDK и появился ещё в JDK 5. Функциональность этого API была стандартизирована в JSR 269, который вошёл в состав Java SE 6. В JDK 7 весь API apt был объявлен устаревшим.

Что не является целью

Разработка средств автоматического преобразования обработчиков аннотаций apt в обработчики аннотаций JSR 269 не входит в рамки этой работы.

Мотивация

В отличие от API JSR 269, API apt невозможно обновить так, чтобы он моделировал возможности языка, появившиеся после JDK 5. Удаление apt из JDK также упростит сопровождение javac и связанных с ним инструментов.

Описание

Удаление будет включать удаление затронутых файлов из Mercurial-репозитория langtools для JDK 8, а также сопутствующие изменения в makefile.

Тестирование

Тестирование будет ограничено проверкой того, что команда apt и API отсутствуют.

Риски и допущения

С учётом указанной ниже зависимости технических препятствий для удаления apt из JDK нет. Пользователи обработки аннотаций будут предупреждены об удалении apt задолго до выхода JDK 8, чтобы необходимый переход мог произойти до него.

Зависимости

Часть jaxws построена на основе apt. Прежде чем удалять apt, эти компоненты необходимо перевести на реализацию JSR 269 в JDK.

Влияние

После этого изменения пользователям обработки аннотаций придётся использовать механизм обработки аннотаций JSR 269, который поддерживается в javac начиная с JDK 6. Поскольку apt — лишь часть JDK, а не Java SE, обязательства по совместимости для этого компонента менее строгие, чем для API в java.* или javax.*. Удаление инструмента командной строки из JDK не беспрецедентно, но удаление apt должно быть чётко описано в примечаниях к выпуску и подобных документах.