JEP 117: Remove the Annotation-Processing Tool (apt) | 移除注解处理工具(apt)
摘要
从 JDK 中移除 apt
工具、相关 API 和文档。
目标
通过从 JDK 中移除 apt
,注解处理可以完成向更优越、标准化的 JSR 269 API 的过渡。
apt
注解处理框架是 JDK 特有的,可追溯到 JDK 5。该 API 的功能通过作为 Java SE 6 一部分发布的 JSR 269 进行了标准化。在 JDK 7 中,整个 apt
API 已被弃用。
非目标
开发自动化工具以将 apt
注解处理器转换为 JSR 269 注解处理器不在此工作范围内。
动机
与 JSR 269 API 不同,apt
API 无法更新以建模 JDK 5 之后引入的语言特性。从 JDK 中移除 apt
还将简化 javac
和相关工具的维护工作。
描述
实现移除将包括从 JDK 8 的 langtools
Mercurial 仓库中移除受影响的文件,以及支持 makefile 的更改。
测试
任何测试都将仅限于验证 apt 命令和 API不 存在。
风险和假设
除了下面提到的依赖项外,从 JDK 中移除 apt
没有工程问题。注解处理的使用者将有足够的时间警告 apt
已被移除,以便在 JDK 8 发布之前进行必要的迁移。
依赖
jaxws
的部分内容构建在 apt
之上。在移除 apt
之前,这些组件需要迁移到使用 JDK 中的 JSR 269 实现。
影响
在此更改之后,注解处理的使用者将不得不使用自 JDK 6 以来 javac
就支持的 JSR 269 注解处理设施。由于 apt
只是 JDK 的一部分,而不是 Java SE 的一部分,因此围绕此组件的兼容性协议比围绕 java.*
或 javax.*
中的 API 要宽松。从 JDK 中移除命令行工具虽非前所未有,但 apt
的移除应在发行说明和类似文档中明确说明。