我已经使用 Java SE 多年,然后转向 Java EE。但是,我在理解 Java EE 的某些方面时遇到了一些困难。
Java EE 只是一个规范吗?我的意思是:EJB 是 Java EE 吗?
EJB/Spring 是 Java EE 的不同实现吗?
很抱歉发问,但我在理解什么是 Java EE 时遇到了一些困难。
有人可以解释什么是 Java EE 吗?还有 EJB?
原文由 Frank Zimmer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经使用 Java SE 多年,然后转向 Java EE。但是,我在理解 Java EE 的某些方面时遇到了一些困难。
Java EE 只是一个规范吗?我的意思是:EJB 是 Java EE 吗?
EJB/Spring 是 Java EE 的不同实现吗?
很抱歉发问,但我在理解什么是 Java EE 时遇到了一些困难。
有人可以解释什么是 Java EE 吗?还有 EJB?
原文由 Frank Zimmer 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答6.4k 阅读
1 回答4.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
3 回答1.7k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
(2022 年 2 月更新)
首先,“Java EE”自 2019 年 9 月起更名为“ Jakarta EE ”,从版本 8 开始。历史上,还有术语“J2EE”涵盖版本 1.2 到 1.4。术语“Java EE”涵盖版本 5 到 8。另请参阅 Jakarta EE,维基百科上的历史。
Jakarta EE 确实是一个 抽象 规范。任何人都愿意开发和提供规范的工作 实施。 具体 实现就是所谓的应用服务器,如 WildFly 、 TomEE 、 GlassFish 、 Liberty 、 WebLogic 等。还有仅实现庞大的 Jakarta EE API 的 JSP/Servlet 部分的 servlet 容器,如 Tomcat 、 Jetty 、等等
我们,Jakarta EE 开发人员,应该使用规范编写代码(即 仅 导入
jakarta.*
我们代码中的类,而不是实现特定类,例如org.jboss.wildfly.*
,com.sun.glassfish.*
等等)然后我们就可以在任何实现上运行我们的代码(因此,在任何应用程序服务器上)。如果您熟悉 JDBC,它基本上与 JDBC 驱动程序的工作原理相同。另见 ao 简单来说,什么是工厂?EJB 是 Jakarta EE 规范的一部分。看, 它在 Jakarta EE API 中。成熟的 Jakarta EE 应用程序服务器开箱即用地支持它,但简单的 JSP/Servlet 容器不支持。
也可以看看:
不,如前所述,EJB 是 Jakarta EE 的一部分。 Spring 是一个独立的框架,它替代和改进了 Jakarta EE 的许多部分。 Spring 不一定需要 Jakarta EE 才能运行。像 Tomcat 这样的基本 servlet 容器就足够了。简单来说,Spring 是 Jakarta EE 的竞争对手。例如,“Spring”(独立)与 EJB/JTA 竞争,Spring MVC 与 JSF/JAX-RS/MVC 竞争,Spring DI/IoC/AOP 与 CDI 竞争,Spring Security 与 JAAS/JASPIC 竞争,等等。
回到旧的 J2EE/EJB2 时代,EJB2 API 的实现和维护都非常糟糕。 Spring 是 EJB2 的更好替代品。但是从 EJB3 (Java EE 5) 开始,EJB API 基于从 Spring 中吸取的教训进行了很大改进。自 CDI (Java EE 6) 以来,没有理由再次考虑 另一个 框架,如 Spring,以使开发人员更容易开发服务层等。
仅当您使用 Tomcat 等基本 servlet 容器且无法转移到 Jakarta EE 服务器时,Spring 才更具吸引力,因为它更容易在 Tomcat 上安装 Spring。在不修改服务器本身的情况下,不可能在 Tomcat 上安装 EJB 容器,您基本上是在重新发明 TomEE。
也可以看看: