OpenJDK 21 升级指南

OpenJDK 21 升级指南

💡 原文中文,约18800字,阅读约需45分钟。
📝

内容提要

OpenJDK 21发布后,D瓜哥建议整体升级项目依赖,特别是Lombok和Netty。注意JDK 21移除了Java EE模块,需要引用相关Jar包。为解决编译和运行中的错误,需添加特定依赖和启动参数。使用Maven的profile机制可实现无痛升级,确保项目在不同JDK版本间平稳切换。

🎯

关键要点

  • OpenJDK 21 发布后,建议整体升级项目依赖,特别是 Lombok 和 Netty。

  • JDK 21 移除了 Java EE 模块,需要引用相关 Jar 包。

  • 使用 Maven 的 profile 机制可以实现无痛升级,确保项目在不同 JDK 版本间平稳切换。

  • Lombok 需升级到 v1.18.30+,低于此版本会报错。

  • Netty 建议升级到 4.1.93.Final+,以兼容 JDK 21 的 DirectByteBuffer 改动。

  • 编译时可能会遇到 javax.annotation.Resource 找不到的问题,需要添加相关依赖。

  • Nashorn JavaScript 引擎在 JDK 11 被移除,需添加 nashorn-core 依赖以解决相关错误。

  • Bean Validation 升级到 jakarta.validation-api 3.0.2 及 hibernate-validator 7.0.5.Final 以解决初始化错误。

  • JAXB 相关内容在 JDK 11 被移除,需添加 jaxb-runtime 依赖。

  • Java 模块化引入了更严格的封装性,可能导致访问错误,需要使用 --add-opens 参数解决。

  • Maven 构建和测试时可能遇到模块化问题,可以通过配置 maven-compiler-plugin 和 maven-surefire-plugin 解决。

  • 使用 Maven 的 profile 机制可以根据 JDK 版本自动激活不同的配置,实现无感升级。

  • 阿里巴巴开发的 Migration Toolkit for Java 可用于检查 JDK 升级中的问题。

  • 升级后,Java 启动参数可能需要重新配置,需关注生产环境中的启动参数。

延伸问答

升级到 OpenJDK 21 时需要注意哪些依赖的版本?

Lombok 需升级到 v1.18.30+,Netty 建议升级到 4.1.93.Final+,Bean Validation 升级到 jakarta.validation-api 3.0.2 及 hibernate-validator 7.0.5.Final。

如何解决编译时找不到 javax.annotation.Resource 的问题?

需要添加相关的 Jar 包依赖,如 jakarta.annotation-api 或 javax.annotation-api。

OpenJDK 21 移除了哪些模块?

OpenJDK 21 移除了 Java EE 模块,因此需要引用相关的 Jar 包。

如何使用 Maven 的 profile 机制实现无痛升级?

可以根据 JDK 版本自动激活不同的配置,确保项目在不同 JDK 版本间平稳切换。

在 JDK 21 中,如何处理 Java 模块化带来的访问错误?

可以使用 --add-opens 参数来解决访问错误,确保模块对外开放。

升级到 OpenJDK 21 后,如何检查项目中的潜在问题?

可以使用阿里巴巴开发的 Migration Toolkit for Java 来检查 JDK 升级中的问题。

🏷️

标签

➡️

继续阅读