jakarta和javax的区别

jakarta和javax的区别

Jakarta 和 javax 的区别

在Java开发领域,Jakarta和javax是两个经常出现的术语,它们各自代表了不同的含义和用途。以下是关于这两个术语的详细解释及其主要区别:

1. javax

  • 定义:javax是Java Extension的缩写,它代表Java平台扩展包的一部分。这些包最初是由Sun Microsystems(现为Oracle)开发的,用于提供对特定技术或框架的支持,如企业级应用(EE)、Web服务(WS)等。

  • 历史背景:随着Java EE(Enterprise Edition)的发展,许多核心API都被放置在javax命名空间中。例如,Servlet API、EJB(Enterprise JavaBeans)API等都位于javax.servlet、javax.ejb等包下。

  • 现状:尽管Oracle继续维护和发展Java SE(Standard Edition),但Java EE的控制权已经转移给了Eclipse Foundation,后者将其重新命名为Jakarta EE。然而,为了保持向后兼容性,现有的Java EE/Jakarta EE API仍然使用javax命名空间。

2. Jakarta

  • 定义:Jakarta是一个开源社区项目,旨在推动和维护原Java EE技术的进一步发展。当Oracle决定将Java EE移交给开源社区时,该项目应运而生,并接管了所有相关的规范和参考实现。

  • 历史背景:由于Oracle决定减少对Java EE的投入和支持,Eclipse Foundation于2017年宣布成立Jakarta EE工作组,以继续这一技术的发展。Jakarta EE作为Java EE的继承者,提供了相同的功能和API,但采用了新的品牌名称和治理模型。

  • 命名空间变化:虽然Jakarta EE API在技术上仍然使用javax命名空间以保持与现有系统的兼容性,但未来的发展方向可能会包括向新命名空间(如jakarta.*)的迁移。这种迁移尚未广泛实施,但在某些情况下已经开始讨论和规划。

主要区别

  • 起源与目的:javax起源于Sun Microsystems,用于Java平台的扩展功能;而Jakarta则是Eclipse Foundation领导的开源项目,旨在继续发展和维护Java EE技术。

  • 品牌与治理:javax是与Java EE紧密相关的旧品牌名称;而Jakarta是新的品牌名称,代表着更开放和协作的治理模式。

  • 命名空间:尽管目前Jakarta EE API仍使用javax命名空间,但未来可能会考虑迁移到jakarta.*命名空间以区分新旧版本。

综上所述,javax和Jakarta在Java开发中扮演着不同的角色。了解它们的区别有助于开发者更好地理解Java平台和其生态系统的发展趋势。