1. 简介

你可能听说过 Java EE,也可能听过 J2EE 或者现在最新的叫法 Jakarta EE。其实这些名称指的都是同一个东西:一组扩展自 Java SE 的企业级规范集合

这篇文章我们就来聊聊 Java EE 是怎么一步步演变成 Jakarta EE 的。

2. 发展历史

在 Java 刚诞生的时候,企业级扩展功能其实是 JDK 核心的一部分

到了 1999 年,随着 Java 2 平台的发布,这些扩展被从标准版中剥离出来,形成了一个独立的平台:J2EE(Java 2 Platform Enterprise Edition)。这个名字一直用到了 2006 年。

2006 年 Java 5 发布时,J2EE 被更名为 Java EE(Java Platform Enterprise Edition),并沿用了十多年,直到 2017 年 9 月——一件大事发生了

2017 年 9 月,Oracle 决定将 Java EE 的权利转让给 Eclipse 基金会(Java 语言本身仍然归 Oracle 所有)。

3. 转型阶段

由于 Oracle 拥有 “Java” 这个品牌的所有权,所以 Eclipse 基金会必须为这个平台重新命名。

社区投票后选出了新名字:Jakarta EE。某种意义上来说,它依然是 JEE。

java evolution 1

⚠️ 注:上图展示了 Java EE 到 Jakarta EE 的演进路线

当然,这个转型仍在进行中,尘埃尚未落定。

一些遗留问题

  • ✅ Oracle 开源了代码,但并未开源所有文档,这引发了不少争议,特别是 JMS 和 EJB 等模块的相关文档。
  • ❌ Eclipse 基金会不能使用 javax 包名创建新的 Java 包,但可以在已有包下创建新类和子类。
  • ✅ Jakarta EE 的规范新增流程也发生了变化,我们后面会详细讲。

4. 展望未来

在以往的 Java EE 中,一个特性要想进入规范,需要满足三个要素:

  1. 规范(Specification)
  2. 参考实现(Reference Implementation)
  3. 测试套件(TCK)

这些可以由社区任何人提供,最终由执行委员会决定是否纳入。

接下来我们分别看看这些概念在 Oracle 和 Eclipse 基金会下的变化。

4.1. JCP 与 EFSP

过去,Java EE 新特性的诞生流程是由 JCP(Java Community Process) 驱动的。

现在,随着平台所有权的转移,Eclipse 基金会推出了自己的规范流程:EFSP(Eclipse Foundation Specification Process),它是 Eclipse Development Process 的扩展。

与 JCP 相比,EFSP 更强调以下几点:

  • ✅ 透明性(Transparency)
  • ✅ 开放性(Openness)
  • ✅ 共担责任(Shared Burden)
  • ✅ 厂商中立(Vendor Neutrality)

EFSP 提倡建立厂商中立的协作工作组、自助式的认证流程,以及基于贡献的治理结构。

4.2. JSR 的变化

在 JCP 体系中,新增一个特性首先要提交 JSR(Java Specification Request) —— 它相当于 EE 特性的“接口”。

例如 JSR-339(JAX-RS) 在 2011 年提出,2012 年通过,2013 年发布。

💡 实践证明,像 JSR 310(java.time)Joda Time 这样“实现先行”的方式更容易被社区接受。

EFSP 也体现了这一点,它的目标是:

“EFSP 将以动手实验和编码为先,只有经过验证的功能才会被写入规范。”

4.3. Glassfish 的角色转变

在 JCP 中,每个 JSR 都需要一个参考实现(Reference Implementation),类似于“接口的实现类”。

Java EE 一直使用 Glassfish 作为参考实现平台。

但这种集中化方式容易造成厂商偏向性。因此,EFSP 不再强制要求参考实现,而是只需要一个兼容实现(Compatible Implementation)

✅ 这一变化让平台更加公平,避免了对某个特定实现(如 Glassfish)的隐性偏好。

4.4. TCK 的延续

TCK(Technology Compatibility Kit)是一套用于验证 EE 特性是否符合规范的测试工具。

在 Oracle 时代,应用服务器必须实现所有 JSR 并通过 TCK 测试,才能称为“兼容 Java EE”。

好消息是:

✅ Oracle 已经开源了 TCK 和所有 EE JSR
✅ 未来的 TCK 和相关文档也将全部开源

5. 总结

Java EE 在这些年经历了巨大的变化,从 J2EE 到 Java EE 再到 Jakarta EE,平台正朝着更开放、更社区驱动的方向发展。

虽然转型过程中仍有不少挑战,但整体趋势是积极的。

希望 Jakarta EE 能够顺利落地,继续推动企业级 Java 的发展。


原始标题:Java EE vs J2EE vs Jakarta EE