Java EE到底是什么?
我已经做Java SE好几年了,后来转向Java EE。但是,我在理解Java EE的某些方面时遇到了一些麻烦。
Java EE只是一个规范吗?我的意思是:EJB Java是EE吗?
EJB/Spring是Java EE的不同实现吗?
我很抱歉地问,但我有一些困难来理解Java EE是什么。
有人可以解释一下Java EE是什么吗?而EJB呢?
我已经做Java SE好几年了,后来转向Java EE。但是,我在理解Java EE的某些方面时遇到了一些麻烦。
Java EE只是一个规范吗?我的意思是:EJB Java是EE吗?
EJB/Spring是Java EE的不同实现吗?
我很抱歉地问,但我有一些困难来理解Java EE是什么。
有人可以解释一下Java EE是什么吗?而EJB呢?
(更新时间 2022 年 2 月)
首先,“Java EE”自2019年9月起更名为“Jakarta EE”,从版本8开始。从历史上看,还有术语“J2EE”,它涵盖了1.2至1.4版本。术语“Java EE”涵盖版本 5 至 8。另见Jakarta EE,维基百科上的历史。
雅加达EE只是一个规范吗?我的意思是:EJB雅加达是EE吗?
Jakarta EE确实是一个抽象的规范。任何人都可以开放开发和提供规范的工作实现。具体的实现是所谓的应用程序服务器,如WildFly,TomEE,GlassFish,Liberty,WebLogic等。还有一些servlet容器只实现了巨大的Jakarta EE API的JSP / Servlet部分,例如Tomcat,Jetty等。
我们,Jakarta EE开发人员,应该使用规范编写代码(即在我们的代码中仅导入类,而不是实现特定的类,例如,等),然后我们将能够在任何实现上运行我们的代码(因此,在任何应用程序服务器上)。如果您熟悉 JDBC,它的概念基本上与 JDBC 驱动程序的工作原理相同。另见a.o.用最简单的术语来说,什么是工厂?jakarta.*
org.jboss.wildfly.*
com.sun.glassfish.*
EJB 是 Jakarta EE 规范的一部分。看,它在Jakarta EE API中。成熟的Jakarta EE应用程序服务器开箱即用地支持它,但简单的JSP / Servlet容器不支持。
EJB/Spring是Jakarta EE的不同实现吗?
不,如前所述,EJB是Jakarta EE的一部分。Spring是一个独立的框架,它取代并改进了Jakarta EE的许多部分。春天并不一定需要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。
Java Enterprise Edition(Java EE)是一个总括性规范,它引用了许多其他更详细的规范,其中Enterprise JavaBeans(EJB)是其中比较重要的规范之一。
阅读本文 - 它解释了Java EE和Spring之间的区别
谢谢。。。