Java EE与jakarta

2017 年 8 月,Oracle(甲骨文)决定将 Java EE(Java Enterprise Edition)移交给开源组织,最后 Eclipse 基金会接手。这应该是甲骨文实现对 Java 品牌控制的最新举措,尽管之前 Sun 的资产已经被甲骨文围剿得只剩一个 VirtualBox 还能喘口气。

不过,甲骨文可不允许开源组织用 Java 的名号,于是 Eclipse 选出了 "Jakarta EE" 和"Enterprise Profile"两个后续按名字,最终前者以 64.4% 的票数获胜。

也就是说,Java EE 已经正式更名为 Jakarta EE(雅加达)。

与此同时,Glassfish 正式更名为 Eclipse Glassfish,Java Community Process 更名为 Eclipse EE.next Working Group,就连 Oracle 开发管理团队现在也变成了 Eclipse Enterprise for Java 项目管理委员会。

Eclipse负责人Mike Milinkovich还特别强调,现在 Jakarta EE 是他们首要的项目,很快会完善开发的各种支持,另外,不要再用 EE4J 这个老名字了。

Jakarta EE 的由来:

这个名字来自于Jakarta,一个早期的Apache开源项目,用于管理各个Java子项目,诸如Tomcat, Ant, Maven, Struts, JMeter, Velocity, JMeter, Commons等。2011年12月,在所有子项目都被迁移为独立项目后,Jakarta名称就不再使用了。

参考:https://www.lmlphp.com/user/17742/article/item/549608/

-------------------------------------------------------

Eclipse 基金会最新发布的“2021 Jakarta EE Developer Survey Report”指出,Jakarta EE 的使用和对云原生 Java 的兴趣都实现了明显增长。

该调查旨在帮助 Java 生态系统的利益相关者更好地了解企业开发者社区的需求、优先事项和看法;帮助 Java 生态系统更好地了解企业 Java 的云原生世界是如何展开的,以及这对他们各自的战略和业务意味着什么。调查于 2021 年 4 月 6 日至 5 月 31 日进行,共有 940 人参与了调查。

针对最新的调查结果,Eclipse 基金会执行董事 Mike Milinkovich 表示,自从 Java EE 更名为 Jakarta EE ,以及该项目从 Oracle 转移到 Eclipse 基金会后,企业版 Java 正在经历一场复兴。“随着 Jakarta EE 10 计划的正式确定以及 Jakarta EE 9 使用的持续增长,开源企业版 Java 的云原生前景从未如此光明。”

报告指出,Java EE 8、Jakarta EE 8 和 Jakarta EE 9 以 75% 的采用率成为主流。Jakarta EE 以 47% 的使用率成为第二大最常用的云原生框架;而 Spring/Spring Boot 仍然是构建云原生应用程序的领先框架,其份额自 2020 年以来增长了 16 个百分点 — 使用率为 60%。MicroProfile 的采用率也已从 2020 年的 29% 增加到了 34%。

自去年以来,用于在云中实现 Java 系统的微服务架构的使用也略有增加,使用率从去年的 39% 增加到 43%。此外,有超过 48% 的受访者表示,其要么已经迁移到 Jakarta EE,要么计划在未来 6 到 24 个月内迁移到 Jakarta EE。

社区定义的 Jakarta EE 的三大优先事项为:

  • 与 Kubernetes 的本地集成

  • 更好地支持微服务

  • 更快的创新速度

IBM 应用平台和集成副总裁 Melissa Modjeski 称:“2021 年 Jakarta EE 开发者调查显示,开发者对 Jakarta EE 的认识和使用有了全面的提高,这也说明它是云原生Java创新的正确平台。”

参考:https://baijiahao.baidu.com/s?id=1711027990733774226&wfr=spider&for=pc 

Java EEJava Platform, Enterprise Edition) Jakarta EE 是同一套企业级 Java 技术规范的两个不同历史阶段,它们的核心目标都是为开发企业级分布式系统(如 Web 应用、微服务、消息系统、事务管理等)提供标准化的 API 编程模型。 --- ### 回答问题: #### 1. **Java EE 是什么?** Java EE 是由 Sun Microsystems 开发并在 Oracle 接管后维护的一套企业级 Java 规范。它基于 Java SE,扩展了用于构建大规模、多层、可伸缩、安全的企业应用的 API,包括: - Servlet、JSP、JSF(Web 层) - EJB、JMS、JTA(业务逻辑事务) - JPA、JDBC(数据持久化) - JAX-RS、JAX-WS(REST/SOAP Web 服务) - CDI、JNDI、Security API 等 Java EE 的实现由应用服务器提供,例如: - Oracle WebLogic - IBM WebSphere - WildFly(原 JBoss) - GlassFish(官方参考实现) #### 2. **Jakarta EE 是什么?** **Jakarta EEJava EE 的延续**,自 2017 年起,Oracle 将 Java EE 移交给 Eclipse 基金会管理。由于“Java”是 Oracle 的注册商标,Eclipse 基金会无法继续使用 “Java” 命名相关技术,因此将 Java EE 重命名为 **Jakarta EE**。 从 **Java EE 8** 之后,新版本称为 **Jakarta EE 9、10、11...**,并且所有包名从 `javax.*` 迁移到 `jakarta.*`。 > 示例: > - Java EE: `javax.servlet.http.HttpServlet` > - Jakarta EE 9+: `jakarta.servlet.http.HttpServlet` 这一变更对开发者影响较大,尤其是依赖第三方库时需确保兼容性。 #### 3. **主要区别总结** | 特性 | Java EE | Jakarta EE | |------|--------|------------| | 所属组织 | Oracle | Eclipse 基金会 | | 包命名空间 | `javax.*` | `jakarta.*`(从 EE 9 起) | | 开源程度 | 部分开放 | 完全开源,社区驱动 | | 版本演进 | 最终版本为 Java EE 8(2017) | 继承发展:Jakarta EE 9/10/11(支持 JDK 11+、21+) | | 支持的应用服务器 | GlassFish、WebLogic、WebSphere | WildFly、Payara、Open Liberty、TomEE、GlassFish(新版本) | #### 4. **迁移示例:代码变化** 如果你从 Java EE 迁移到 Jakarta EE 9 或更高版本,必须修改所有导入语句: ```java // Java EE 8 及之前 import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("Hello from Java EE!"); } } ``` 迁移到 **Jakarta EE 9+** 后变为: ```java // Jakarta EE 9+ import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("Hello from Jakarta EE!"); } } ``` > ⚠️ 注意:仅更改导入包名还不够,依赖库(如 Servlet 容器)也必须支持 `jakarta.*` 命名空间。 #### 5. **当前生态现状** - **Spring Framework 6+ Spring Boot 3+** 已全面升级支持 **Jakarta EE 9+**,使用 `jakarta.servlet` 替代 `javax.servlet`。 - 主流应用服务器已发布支持 Jakarta EE 的版本: - WildFly 26+ - Eclipse GlassFish 6+ - Open Liberty 22+ - Tomcat 10+(注意:Tomcat 10+ 使用 `jakarta.servlet`,而 Tomcat 9 及以前是 `javax.servlet`) --- ### 解释: Java EEJakarta EE 的转变不仅是名称变更,更是一次重要的开源化技术独立化进程。这次迁移使得企业 Java 标准不再受单一厂商控制,推动了更快的创新节奏,并更好地适配云原生、微服务架构。 然而,包名的改变导致了大量的兼容性断裂,尤其是在旧项目升级或集成老框架时需要特别小心。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值