当前位置: 首页 > news >正文

Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE

Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE

历史背景

javax变成Jakarta的主要原因是因为Java EE项目从Oracle转移到了Eclipse Foundation,并改名为Jakarta EE。

JavaEE是从Java 1.2版本开始推出的Java企业级开发平台,最初的名称是J2EE(Java 2 Platform, Enterprise Edition)。 随着Java的发展,它的名称于Java1.5版本时更改为Java EE(Java Platform, Enterprise Edition)。2009年Oracle收购了Sun,JavaEE开始由Oracle通过JCP(Java Community Process)开发和维护。

直到2017年,Oracle将JavaEE提交给了Eclipse基金会,并命名为Eclipse Enterprise for Java。然而,由于“Java”这个名字的商标归Oracle所有,Eclipse基金会无法继续使用javax.*java.*,因此,项目名称改为Jakarta EE。这一变化是为了将Java EE作为一个独立的开源项目进行维护和发展。从Java EE 8开始,所有的API包名从javax.变更为jakarta.,以反映这一变化。例如,javax.servlet包更名为jakarta.servlet。

对开发者的建议

这一变化对 Java 开发者的影响主要体现在以下几个方面:

  1. 包名替换:
    在 JDK 11 及之后的版本中,一些原本属于 javax.* 包的 API 已经被替换为 jakarta.* 包下的 API。比如,javax.servlet.* 包中的 API 被替换为 jakarta.servlet.* 包。开发者需要注意在升级到 JDK 11 及以上版本后,应该使用新的包名来引用相关的类和接口。

  2. 兼容性:
    为了确保向后兼容性,JDK 11 以后的版本仍然会保留 javax.* 包中的 API,但是这些 API 将被标记为不推荐使用,开发者被建议尽快迁移到 jakarta.* 包中的 API。同时,JDK 中也提供了一些工具和脚本,来帮助开发者进行代码迁移。

  3. 迁移工具:
    为了帮助开发者进行代码迁移,JDK 中提供了一些工具和脚本,比如 jdeps 工具可以用来分析代码中是否存在使用了 javax.* 包的 API,以及 jdk.xml.bind 模块中的迁移工具可以用来将代码中的 JAXB 相关 API 迁移到 java.xml.bind 模块中。

  4. 迁移指南:
    Oracle 和 Eclipse 基金会也提供了一些迁移指南和文档,帮助开发者顺利地进行代码迁移。这些文档包括了从 javax.* 到 jakarta.* 包的替换规则、常见的迁移问题和解决方案等。

总的来说,对于从 JDK 11 开始的项目,开发者应该尽量避免使用 javax.* 包中的 API,而是使用对应的 jakarta.* 包中的 API,以便确保代码的向后兼容性和可维护性。同时,应该借助 JDK 中提供的工具和文档,尽快进行代码迁移。

Spring Boot 3.0废弃了JavaEE

Spring Boot 3.0.0的第一个里程碑版本M1发布,Java基线提升到Java 17,移除对Java EE APIs的支持并转向Jakarta EE。

  1. Spring Boot 3.0已将所有底层依赖项从Java EE迁移到了Jakarta EE API,基于Jakarta EE 9并尽可能地兼容Jakarta EE 10。这是因为Java EE已经正式更名为Jakarta EE,相关的名称都发生了变化,包括包名。这一变化使得使用Java EE的应用需要进行较大的改动。

  2. Spring Boot 3.0最低支持的Spring框架也变成了Spring 6.0.2+,虽然是框架自动集成依赖的,但需要注意这点。因为前段时间发布的Spring 6.0也有不少的底层升级。

参考文档

jakarta EE官网
Spring Boot 3.0 Release Notes
Spring Boot 3.0 Migration Guide

http://www.lryc.cn/news/490130.html

相关文章:

  • pdf文档动态插入文字水印,45度角,旋转倾斜,位于文档中央,多行水印可插入中文
  • [ 渗透测试面试篇-2 ] 针对大规模资产的攻击思路
  • 深入解析 Web 应用中的 CHIPS(Partitioned Cookie Attribute)
  • 从搭建uni-app+vue3工程开始
  • 归并排序与逆序对问题(C语言版)
  • 网络爬虫总结与未来方向
  • C++ 核心数据结构:Stack 与 Queue 类深度解析
  • Python枚举类详解:用enum模块高效管理常量数据
  • 企业OA管理系统:Spring Boot技术深度探索
  • 汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力
  • uniapp接入高德地图
  • (UI自动化测试)web自动化测试
  • 【es6进阶】如何使用Proxy实现自己的观察者模式
  • 住宅IP怎么在指纹浏览器设置运营矩阵账号
  • 表格数据处理中大语言模型的微调优化策略研究
  • CentOS7 如何查看kafka topic中的数据
  • VRRP实现出口网关设备冗余备份
  • 超详细:Redis分布式锁
  • Vue与React的Suspense组件对比
  • Spring框架深度剖析:特性、安全与优化
  • 硬盘文件误删:全面解析、恢复方案与预防策略
  • tcpdump抓包 wireShark
  • Android system_server进程
  • Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)
  • python实现猜数字游戏( 可视化easygui窗口版本 )
  • 自由学习记录(23)
  • Java语言程序设计 选填题知识点总结
  • 鸿蒙生态:开发者的新蓝海与挑战
  • 4.3 MySQL 存储函数
  • 【Python刷题】动态规划相关问题