Java EE 到底是啥?

Posted

技术标签:

【中文标题】Java EE 到底是啥?【英文标题】:What exactly is Java EE?Java EE 到底是什么? 【发布时间】:2011-11-09 20:09:57 【问题描述】:

我已经从事 Java SE 多年,然后转向 Java EE。但是,我在理解 Java EE 的某些方面时遇到了一些麻烦。

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

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

很抱歉,我很难理解 Java EE 是什么。

谁能解释一下 Java EE 是什么?还有 EJB?

【问题讨论】:

检查***.com/questions/1286019/starting-java-ee-mvc 你应该把这个问题分成两个问题,一个是重复的,另一个我认为那里的链接没有回答。 其实你看过[java-ee]tag wiki吗? 另请阅读:***.com/questions/106820/what-is-java-ee 还有:who-implement-the-specification 【参考方案1】:

您需要了解的有关 Java EE 的所有信息都可以通过 @Oracle official website 等找到。您可能还会对阅读specification APIs for release 8 感兴趣。值得花时间浏览Java EE 8 tutorial。您可能想从实际开始,因为它提供了对整个平台的非常好的概览。

【讨论】:

【参考方案2】:

J2EE/JEE/雅加达 EE

Java Enterprise Edition (JEE) 用于开发分布式应用程序& 网络服务。 这是一种基于组件的 Web 应用开发方法。 JEE Web 应用程序被视为 3 层应用程序,因为它分为 3 不同的机器/层 客户(演示) J2EE 服务器(应用程序/业务) 数据库(数据访问)

【讨论】:

【参考方案3】:

(2021 年 4 月更新)

首先,自 2019 年 9 月起,“Java EE”已重命名为“Jakarta EE”,从版本 8 开始。历史上,“J2EE”一词也涵盖了 1.2 版,直到1.4. “Java EE”涵盖了版本 5 到 8。另请参阅 Java Platform, Enterprise Edition, History on Wikipedia。


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

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

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

EJB 是 Jakarta EE 规范的一部分。看,it's in the Jakarta EE API。成熟的 Jakarta EE 应用服务器开箱即用地支持它,但简单的 JSP/Servlet 容器不支持。

另见:

Where can I find a list of all the reference implementations for Java EE 6? Java / Jakarta EE web development, where do I start and what skills do I need? What to learn for making Java web applications in Java EE 6?

EJB/Spring 是 Jakarta EE 的不同实现吗?

不,如上所述,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。

另见:

When is it necessary or convenient to use Spring or EJB3 or all of them together? Java EE 6 vs. Spring 3 stack Using JSF as view technology of Spring MVC

【讨论】:

那么 Java EE 可以说是定义了运行典型 JEE 应用程序应该存在哪些支持? @James:是的。 Java EE API 中几乎所有的东西都是抽象的。 Java SE API 也有几个抽象部分,例如JDBC、JAXP、JAXB 等 “没有真正的理由再次考虑像 Spring 这样的另一个框架来使开发人员更容易。” -> 真正有价值的信息。 @BalusC:您好,Sun Java EE 官方是不是...链接已损坏,如果您提供类似的链接,将对某人有所帮助。 要运行完整的Spring框架,Servlet容器就足够了,Servlet容器是[web server + web container(implements servlet api)],而要运行Java EE,你需要像Glassfish这样的应用服务器。 Servlet 容器是不够的。 Servlet 容器是应用服务器的一个子集。我怎么理解这个?【参考方案4】:

简单地说——JavaEE 是一个平台。

它由许多只是 API 的规范组成。这些 API 的具体具体实现就是所谓的“参考实现”

    EJB 只是 JavaEE 平台中的一种规范 不,Spring 是一个应用程序框架,可以让您/已经支持您开发 JavaEE 应用程序

EJB 是企业 Java Bean

【讨论】:

此答案不会对以前的答案添加任何内容。此外,它也不准确:只有一个具体实现是 Reference,其他都不是。次要一:Spring与JavaEE集成,但没有它也能正常工作。 @tair 是的,只有 1 个具体实现被视为“参考”,例如JPA 有许多实现,但只有 EclipseLink 是 RI。当我提到 RI 时,我的意思是跨越不同的 API。我想你误解了我上面的回答。另外,是的,Spring 与我上面提到的 JavaEE 集成。【参考方案5】:

Source -- Java 2 Platform, Enterprise Edition (J2EE) 定义了开发基于组件的多层企业应用程序的标准。 J2EE 简化了构建可移植、可扩展且易于与遗留应用程序和数据集成的企业应用程序。

Source -- Enterprise JavaBeans (EJB) 技术是 Java Platform, Enterprise Edition (Java EE) 的服务器端组件架构。 EJB 技术支持基于 Java 技术的分布式、事务性、安全和可移植应用程序的快速和简化开发。

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

Java EE 是一种规范。

EJB 是 Java EE 的服务器端组件架构

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

EJB 和 Spring 都是遵循 Java EE 的不同框架。

【讨论】:

从规范的古代版本 (J2EE) 中引用古代文本 (2005) 可能不是很有用。 OP 专门要求 Java EE,它是 J2EE 的现代化身。【参考方案6】:

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

阅读this - 它解释了 Java EE 和 Spring 之间的区别

谢谢...

【讨论】:

以上是关于Java EE 到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java SE 和 Java EE 之间的主要区别是啥? [复制]

对于第一个 Java EE Spring 项目,您的“最佳实践”是啥? [关闭]

OSGi 和 Java EE 之间的根本区别是啥? [关闭]

从 Java EE 登录到 SQL Server 的最佳方式是啥

在 Java 中,接收器到底是啥,或者接收器到底可以是啥?

官网Eclipse IDE for Java EE Developers是啥版本?