JDK 17 是继 JDK 8 后的首个 LTS 版本,越来越多的第三方依赖包只支持JDK17,所以使用JDK17作为开发环境势在必行。

直接影响

Java EE 移交 Eclipse 基金会后更名为 Jakarta EE,包名从 javax.* 改为 jakarta.*。
仅此一项就要改动大量代码。

核心框架版本升级

名称 旧版本号 新版本号
spring-boot 2.3.12.RELEASE 3.3.9
spring-cloud 2.2.9.RELEASE 2023.0.1.2

spring-cloud不要使用2023.0.3.2版本,会出现一些意想不到的错误。

工具库升级

名称 旧版本号 新版本号 说明
commons-lang3 3.10 3.17.0 Apache Commons 工具库兼容 JDK17
commons-io 2.2 2.18.0 修复安全漏洞并兼容新 JDK
commons-codec 1.11 1.18.0 支持新哈希算法
hutool-all 5.8.25 5.8.35 轻微升级,修复已知问题

日志组件升级

名称 旧版本号 新版本号 说明
logback-classic 1.2.3 1.5.16 Logback 1.3+ 需 JDK 11+,兼容 JDK17
log4j-to-slf4j 2.13.3 2.24.3 修复 Log4j2 高危漏洞(如CVE-2021-44832)
jul-to-slf4j 1.7.30 2.0.17 SLF4J 2.x 适配 JDK17

数据与持久化层升级

  1. 数据库驱动
    名称 旧版本号 新版本号 说明
    mysql-connector-java 8.0.30 9.2.0 官方支持 JDK 17
    com.oracle.ojdbc6 11.2.0.3 com.oracle.database.jdbc:ojdbc11:23.7.0.25.01 替换为 OracleJDBC 11+,支持 JDK 17
    com.dameng.DmJdbcDriver18 8.1.3.140 8.1.3.141 达梦官方最新驱动,确认 JDK 17 兼容性
  2. 连接池
    名称 旧版本号 新版本号 说明
    com.alibaba.druid 1.2.22 1.2.24 修复 JDK 17 兼容性问题
    commons-pool2 2.8.1 2.12.1 支持新特性
  3. MyBatis
    名称 旧版本号 新版本号 说明
    mybatis-spring-boot-starter 2.1.0 3.0.4 适配 Spring Boot3.x
    mybatis-generator-core 1.3.3 1.4.2 修复生成器兼容性
    mapper-spring-boot-starter 1.2.4 5.0.1 MyBatis 通用 Mapper 最新版

JSON 与序列化

名称 旧版本号 新版本号 说明
fastjson 1.2.83 弃用→改用com.alibaba.fastjson2:2.0.56 FastJSON 1.x 存在安全漏洞且 JDK17 兼容性差
truelicense-core 1.33 4.0.0 TrueLicense 4.x 支持 JDK17

XML 与 JAXB

名称 旧版本号 新版本号 说明
jaxb-api 2.3.1 弃用→改用jakarta.xml.bind-api:4.0.2 JDK 17 移除了 JAXB,需显式依赖
jaxb-impl 2.3.1 4.0.5 JAXB 运行时实现
jaxb-runtime 2.3.1 4.0.5 替代旧版 JAXB
javax.activation 1.1.1 弃用→改用jakarta.activation.activation-api:2.1.3jakarta.persistence.persistence-api:3.2.0 Jakarta Activation 2.x

网络与协议

名称 旧版本号 新版本号 说明
io.netty 4.1.99.Final 4.1.119.Final Netty 4.1.100+ 支持 JDK17
netty-codec-http 4.1.65.Final 4.1.119.Final 与 Netty 主版本同步

其他关键依赖

名称 旧版本号 新版本号 说明
oshi-core 6.3.2 6.7.0 支持新硬件信息获取
bcprov-jdk18on 1.77 1.80 支持 JDK 17
lombok-mapstruct-binding 0.2.0 0.2.0 若与 Lombok 1.18.30+ 配合使用无需升级
mapstruct 1.5.5.Final 1.6.3 兼容 JDK 17

升级步骤建议

  1. 环境准备
    • 安装 JDK 17 并配置环境变量。
    • 更新 IDE 的编译目标和语言级别为JDK 17。
  2. 依赖升级
    • 按上述表格逐步升级依赖版本。
    • 优先升级 SpringBoot、Spring Cloud 和日志组件。
  3. 代码适配
    • 替换 javaxjakarta 包名。
    • 修复因依赖升级导致的API 变更(如 MyBatis、Jackson)。
  4. 测试与验证
    • 运行单元测试和集成测试。
    • 使用-XX:+ShowCodeDetailsInExceptionMessages 调试启动错误。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐