【发布时间】:2021-11-01 05:07:51
【问题描述】:
我已经阅读了几篇文章,其中在 jdk 9 中删除了 .* API。删除是否意味着它们已完全从 jdk 9 中删除,或者它们被标记为已弃用?
鉴于上述陈述,如果项目是 jdk 8 编译的,它会在 jdk 17 上运行而没有任何问题吗?我是第一次尝试这个,但是由于模块化的变化,tomcat 无法支持 jdk 8。
我计划在 jdk 8 中编译,然后在 jdk 17 上运行,直到整个项目与 jdk 17 兼容(通过 jdk 17 兼容,我的意思是使用更新的 API,而不是使用现有的已弃用 jdk8 的 API)。
我的方向是否正确?还是我应该采用不同的迁移方法?
【问题讨论】:
-
不确定您所说的“直到整个项目都符合JDK 17”的意思;如果不是,那么你将如何在 JDK 17 上运行它?
-
@kaya3 符合 jdk 17,我的意思是使用更新的 API 而不是现有的弃用 API
-
为什么要“在 jdk 8 中编译,然后在 jdk 17 上运行”?如果您不使用 JDK 8 运行,那么使用它来编译代码是没有意义的。使用 JDK 17 编译会立即告诉您代码是否使用了移除 API(除非涉及反射),这比在运行时偶然发现要好得多。
-
“在 jdk 8 中编译,然后在 jdk 17 上运行”使得平滑过渡成为可能,因为不需要一次更新所有实例
标签: java java-8 openjdk-17