我已经做了几年的Java SE并继续使用Java EE。但是我在理解Java EE的某些方面时遇到了一些麻烦。
Java EE只是一个规范吗?我的意思是:EJB Java EE?
EJB / Spring是不同的Java EE实现吗?
我很抱歉,但是我很难理解Java EE是什么。有人能解释一下Java EE是什么吗?和EJB?
答案 0 :(得分:161)
Java EE只是一个规范吗?我的意思是:是EJB Java EE吗?
Java EE确实是一个抽象规范。任何人都愿意开发并提供规范的工作实现。 具体实现是所谓的应用程序服务器,如WildFly,TomEE,GlassFish,Liberty,WebLogic等还有一些servlet容器只实现了庞大的Java EE API的JSP / Servlet部分,例如Tomcat,Jetty等。
我们Java EE开发人员应该使用规范编写代码(即在我们的代码中仅导入 javax.*
类,而不是实现特定的类,例如org.jboss.wildfly.*
,{{ 1}}等等,然后我们就可以在任何实现上运行我们的代码(因此,在任何应用程序服务器上)。如果您熟悉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容器不支持。
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)开始,没有理由再次查看像em这样的另一个框架,使开发人员更容易开发服务层。
只有当你使用像Tomcat这样的准系统servlet容器并且无法转移到Java EE服务器时,Spring才会更有吸引力,因为在Tomcat上安装Spring更容易。无法安装,例如在没有修改服务器本身的情况下,Tomcat是一个EJB容器,你基本上就是在重新发明TomEE。
答案 1 :(得分:11)
Java企业版(Java EE)是一个伞形规范,它引用了许多其他更详细的规范,其中Enterprise JavaBeans(EJB)是其中一个更重要的规范。
阅读this - 它解释了Java EE和Spring之间的区别
...谢谢
答案 2 :(得分:4)
Source - Java 2平台企业版(J2EE)定义了开发基于组件的多层企业应用程序的标准。 J2EE简化了构建可移植,可伸缩且可与传统应用程序和数据轻松集成的企业应用程序。
Source - Enterprise JavaBeans(EJB)技术是Java平台企业版(Java EE)的服务器端组件体系结构。 EJB技术可以基于Java技术快速简化地开发分布式,事务性,安全性和可移植性应用程序。
Java EE只是一个规范吗?我的意思是:是EJB Java EE吗?
Java EE是一个规范。
EJB是Java EE的服务器端组件体系结构
EJB / Spring是不同的Java EE实现吗?
答案 3 :(得分:-4)
简单地说 - JavaEE是一个平台。
它由许多规范组成,它们只是API。这些API的具体具体实现是所谓的“参考实现”
EJB是Enterprise Java Beans