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