Java EE究竟是什么?

问题

我已经做了几年的Java SE并继续使用Java EE。但是我在理解Java EE的某些方面时遇到了一些麻烦。

  • Java EE只是一个规范吗?我的意思是:EJB Java EE?
  • EJB / Spring是不同的Java EE实现?

很抱歉,但是我很难理解Java EE是什么。有人可以解释一下Java EE是什么吗?和EJB?


#1 热门回答(144 赞)

Java EE只是一个规范吗?我的意思是:EJB Java EE?

Java EE确实是抽象规范。任何人都愿意开发并提供规范的工作实现。具体实现是所谓的应用服务器,如WildFly,TomEE,GlassFish,Liberty,WebLogic等。还有servlet容器,它们只实现巨大的Java EE API的JSP / Servlet部分,如Tomcat,Jetty等。

我们Java EE开发人员应该使用规范编写代码(即代码中的importonlyjavax.*classes而不是实现特定的类,如org.jboss.wildfly.*,com.sun.glassfish.*等),然后我们就可以在任何实现上运行我们的代码(因此,在任何应用程序上)服务器)。如果你熟悉JDBC,它与JDBC驱动程序的工作方式基本相同。另见a.o.In simplest terms, what is a factory?

来自Oracle.com的Java EE SDK download基本上包含GlassFish服务器以及一堆文档和示例,还有NetBeans IDE。如果你需要不同的服务器和/或IDE,则不需要它。

EJB是Java EE规范的一部分。你看,it's in the Java EE API。成熟的Java EE应用程序服务器支持它,但简单的JSP / Servlet容器却不支持。

也可以看看:

  • 在哪里可以找到Java EE 6的所有参考实现的列表?
  • Java EE Web开发,我从哪里开始,我需要什么技能?
  • 在Java EE 6中制作Java Web应用程序需要学习什么?

EJB / Spring是不同的Java EE实现?

不,如上所述,EJB是Java EE的一部分。 Spring是一个独立的框架,可以替代和改进Java EE的许多部分。 Spring不一定需要运行Java EE。像Tomcat这样的准系统servlet容器已经足够了。简而言之,Spring是Java EE的竞争对手。例如。 "Spring"(独立)竞争EJB / JTA,Spring MVC竞争JSF / JAX-RS,Spring DI / IoC / AOP竞争CDI,Spring Security竞争JAAS / JASPIC等。

在旧的J2EE / EJB2期间,EJB2 API实现和维护非常糟糕。然后Spring是EJB2的一个更好的替代品。但是从EJB3(Java EE 5)开始,基于从Spring学到的经验教训,EJB API得到了很大的改进。从CDI(Java EE 6)开始,没有理由再次考虑像Spring那样的其他框架,以使开发人员更容易开发服务层。

只有当你使用像Tomcat这样的准系统servlet容器并且无法移动到Java EE服务器时,Spring才会更有吸引力,因为在Tomcat上安装Spring更容易。无法安装,例如在没有修改服务器本身的情况下,Tomcat的EJB容器,你基本上会重新发明TomEE。

也可以看看:

  • 何时需要或方便地将Spring或EJB3或它们全部一起使用?
  • Java EE 6与Spring 3堆栈
  • 使用JSF作为Spring MVC的视图技术

#2 热门回答(9 赞)

Java Enterprise Edition(Java EE)是一个伞形规范,它引用了许多其他更详细的规范,其中Enterprise JavaBeans(EJB)是其中一个更重要的规范。

Readthis-它解释了Java EE和Spring之间的区别

谢谢...


#3 热门回答(3 赞)

  • 源 - Java 2平台企业版(J2EE)定义了开发基于组件的多层企业应用程序的标准。 J2EE简化了构建可移植,可伸缩且可与传统应用程序和数据轻松集成的企业应用程序。
  • 源 - Enterprise JavaBeans(EJB)技术是Java平台企业版(Java EE)的服务器端组件体系结构。 EJB技术可以基于Java技术快速简化地开发分布式,事务性,安全性和可移植性应用程序。
  • Java EE只是一个规范吗?我的意思是:EJB Java EE? Java EE是一个规范。 EJB是Java EE的服务器端组件体系结构
  • EJB / Spring是不同的Java EE实现? EJB和Spring都是遵循Java EE的不同框架。