JEP 117:移除注解处理工具(apt)
概述
从 JDK 中移除 apt
工具、相关 API 以及文档。
目标
通过从 JDK 中移除 apt
,注解处理可以完成向更优越、标准化的 JSR 269 API 的过渡。
apt
注解处理框架是特定于 JDK 的,可以追溯到 JDK 5。该 API 的功能通过 JSR 269 进行了标准化,并作为 Java SE 6 的一部分发布。在 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 实现。
影响
此更改之后,注解处理的用户将必须使用 JSR 269 注解处理工具,该工具自 JDK 6 开始就在 javac
中得到了支持。由于 apt
只是 JDK 的一部分,并不是 Java SE 的一部分,所以与 java.*
或 javax.*
中的 API 相比,这个组件的兼容性要求较为宽松。从 JDK 中移除命令行工具并不是没有先例,但 apt
的移除应在发行说明和类似文档中明确描述。