Java EE 到底是什么? [英] What exactly is Java EE?

查看:31
本文介绍了Java EE 到底是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从事 Java SE 多年了,现在正在转向 Java EE.但是,我在理解 Java EE 的某些方面时遇到了一些困难.

I have been doing Java SE for some years now and moving on to Java EE. However, I have some trouble understanding some aspects of Java EE.

  1. Java EE 只是一种规范吗?我的意思是:EJB 是 Java EE 吗?

  1. Is Java EE just a specification? What I mean is: Is EJB Java EE?

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

Are EJB/Spring different implementations of Java EE?

我很抱歉问这个问题,但我在理解 Java EE 是什么方面有些困难.

I am sorry to ask but I have some difficulties to understand what Java EE is.

谁能解释一下 Java EE 是什么?和 EJB 吗?

推荐答案

(2021 年 4 月更新)

首先,Java EE"自 2019 年 9 月起更名为Jakarta EE",从版本 8 开始.其中涵盖了 1.2 版到 1.4 版.Java EE"涵盖版本 5 到 8.另请参阅Java 平台、企业版、维基百科历史.

First of all, "Java EE" has since Sep 2019 been renamed to "Jakarta EE", starting with version 8. Historically, there was also the term "J2EE" which covered versions 1.2 until 1.4. The "Java EE" covered versions 5 until 8. See also Java Platform, Enterprise Edition, History on Wikipedia.

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

Jakarta EE 确实是一个抽象规范.任何人都愿意开发并提供规范的实现.具体实现是所谓的应用服务器,例如WildFlyTomEEGlassFish自由WebLogic 等,也有 servlet 容器,只实现了庞大的 Jakarta EE API 的 JSP/Servlet 部分,例如 TomcatJetty

Jakarta EE is indeed an abstract specification. Anybody is open to develop and provide a working implementation of the specification. The concrete implementations are the so-called application servers, like WildFly, TomEE, GlassFish, Liberty, WebLogic, etc. There are also servlet containers which implement only the JSP/Servlet part of the huge Jakarta EE API, such as Tomcat, Jetty, etc.

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

We, Jakarta EE developers, should write code utilizing the specification (i.e. import only jakarta.* classes in our code instead of implementation specific classes such as org.jboss.wildfly.*, com.sun.glassfish.*, etc) and then we'll be able to run our code on any implementation (thus, on any application server). If you're familiar with JDBC, it's basically the same concept as how JDBC drivers work. See also a.o. In simplest terms, what is a factory?

EJB 是 Jakarta EE 规范的一部分.看,它在 Jakarta EE API 中.成熟的 Jakarta EE 应用服务器支持开箱即用,但简单的 JSP/Servlet 容器不支持.

EJB is part of the Jakarta EE specification. Look, it's in the Jakarta EE API. Full-fledged Jakarta EE application servers support it out the box, but simple JSP/Servlet containers don't.

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

不,如前所述,EJB 是 Jakarta EE 的一部分.Spring 是一个独立的框架,它替代并改进了 Jakarta EE 的许多部分.Spring 不一定需要 Jakarta EE 才能运行.像 Tomcat 这样的基本 servlet 容器已经足够了.简单来说,Spring 是 Jakarta EE 的竞争对手.例如.《春天》(standalone)竞争EJB/JTA,Spring MVC竞争JSF/JAX-RS/MVC,Spring DI/IoC/AOP竞争CDI,Spring Security竞争JAAS/JASPIC等

No, as said, EJB is part of Jakarta EE. Spring is a standalone framework which substitutes and improves many parts of Jakarta EE. Spring doesn't necessarily require Jakarta EE to run. A bare-bones servlet container like Tomcat is already sufficient. Simply put, Spring is a competitor of Jakarta EE. E.g. "Spring" (standalone) competes EJB/JTA, Spring MVC competes JSF/JAX-RS/MVC, Spring DI/IoC/AOP competes CDI, Spring Security competes JAAS/JASPIC, etc.

在旧的 J2EE/EJB2 时代,EJB2 API 的实现和维护非常糟糕.Spring 是 EJB2 的一个更好的替代品.但是从 EJB3 (Java EE 5) 开始,EJB API 基于从 Spring 中吸取的教训得到了很大改进.从 CDI (Java EE 6) 开始,真的没有理由再考虑另一个像 Spring 这样的框架来让开发人员更轻松地开发服务层.

Back during the old J2EE/EJB2 times, the EJB2 API was terrible to implement and maintain. Spring was then a much better alternative to EJB2. But since EJB3 (Java EE 5), the EJB API was much improved based on lessons learnt from Spring. Since CDI (Java EE 6), there's not really a reason to look at again another framework like Spring to make the developers more easy as to developing among others the service layer.

只有当您使用基本的 servlet 容器(例如 Tomcat)并且无法转移到 Jakarta EE 服务器时,Spring 才更具吸引力,因为它更容易在 Tomcat 上安装 Spring.无法安装,例如Tomcat 上的 EJB 容器,而无需修改服务器本身,您基本上是在重新发明 TomEE.

Only when you're using a bare-bones servlet container such as Tomcat and can't move on to a Jakarta EE server, then Spring is more attractive as it's easier to install Spring on Tomcat. It isn't possible to install e.g. an EJB container on Tomcat without modifying the server itself, you would basically be reinventing TomEE.

这篇关于Java EE 到底是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆