Skip to content

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 的移除应在发行说明和类似文档中明确说明。