Java EE - 它是什么?
Java EE是一个构建在 Java SE 之上的平台,为开发和运行大规模、多层、可扩展、可靠且安全的网络应用程序提供 API 和运行时环境。此类应用程序称为企业应用程序,因为它们解决大型企业面临的问题。然而,不仅仅是大公司和政府机构可以从这些类型的应用程序和 Java EE 提供的优势中受益。Java EE 平台提供的解决方案对于个人开发人员和小型组织来说非常有用,有时甚至是必要的。Java EE 开发
Java EE 是通过 1998 年成立的 Java Community Process (JCP) 开发的。它允许感兴趣的各方参与制定 Java 语言平台规范的未来版本。此过程的基础是 JSR(Java 规范请求),它是描述建议添加到 Java 平台的规范和技术的正式文档。此类请求是由社区成员——普通开发者和公司提出的。后者包括 Oracle、Red Hat、IBM、Apache 等。那些。这些人提出了他们希望包含在 Java 中的新功能和优点供考虑。然后他们进行投票,并在此基础上决定下一版本中包含哪些内容。Java EE 版本历史如下所示:- J2EE 1.2(1999 年 12 月)
- J2EE 1.3(2001 年 9 月)
- J2EE 1.4(2003 年 11 月)
- Java EE 5(2006 年 5 月)
- Java EE 6(2009 年 12 月)
- Java EE 7(五月)
- Java EE 8(2017 年 8 月)
- 雅加达 EE 8(2019 年 9 月)
Java EE 应用架构
简短的介绍。为了更容易理解,我们来谈谈 Java EE 应用程序的结构以及我们将进一步使用的一些术语。Java EE 应用程序的结构具有两个关键品质:- 一是多层次。Java EE应用程序是多层的,我们稍后会更详细地讨论这一点;
- 其次,筑巢。有一个 Java EE 服务器(或应用程序服务器),其中包含组件容器。这些容器容纳(宾果!)组件。
应用级别
多层应用程序是根据功能原则划分为独立模块(级别、层)的应用程序。通常(包括在 Java EE 开发的背景下),企业应用程序分为三个级别:- 客户;
- 平均水平;
- 数据访问级别。
-
客户端层是一个从Java EE服务器(中间层)请求数据的应用程序。服务器依次处理客户端的请求并返回响应。客户端应用程序可以是浏览器、独立应用程序(移动或桌面)或其他没有图形界面的服务器应用程序。
-
中间层又分为Web层和业务逻辑层。
-
Web 层由一些提供客户端和业务逻辑层之间交互的组件组成。
以下 Java EE 技术用于 Web 级别:
- JavaServer Faces 技术 (JSF);
- Java 服务器页面 (JSP);
- 表达语言(EL);
- Servlet;
- Java EE (CDI) 的上下文和依赖注入。
-
业务逻辑层由实现应用程序所有业务逻辑的组件组成。业务逻辑是提供满足某些特定业务领域(金融业、银行、电子商务)需求的功能的代码。这一层可以认为是整个系统的核心。
该级别涉及的技术:
- 企业 JavaBeans (EJB);
- JAX-RS RESTful Web 服务;
- Java持久化API实体;
- Java 消息服务。
-
-
数据访问级别。该级别有时称为企业信息系统级别(EIS)。EIS由各种数据库服务器、ERP(Enterprise Resource Planning)企业资源规划系统和其他数据源组成。业务逻辑层访问该层以获取数据。
在此级别,您可以找到以下技术:
- Java 数据库连接 API (JDBC);
- Java持久化API;
- Java EE 连接器架构;
- Java 事务 API (JTA)。
应用程序服务器、容器、组件
我们来看看维基百科上对Java EE的定义。Java EE 是一组 Java 语言的规范和相关文档,描述了用于中型和大型企业任务的服务器平台的体系结构。为了更好地理解“一组规范”在这种情况下的含义,我们用 Java 接口进行类比。Java 接口本身缺乏功能。它只是定义了一些合同,根据这些合同来实现一些功能。但其他类实现了该接口。此外,一个接口可以有多种实现,每种实现在某些细节上可能有所不同。规格完全一样。赤裸裸的Java EE只是一组规范。这些规范由各种 Java EE 服务器实现。Java EE 服务器是实现 Java EE 平台 API 并提供标准 Java EE 服务的服务器应用程序。Java EE 服务器有时称为应用程序服务器。服务器数据可以包含应用程序组件,每个组件都对应于多级层次结构中自己的级别。Java EE服务器以容器的形式为这些组件提供各种服务。容器是它们托管的组件与支持该组件的低级平台独立功能之间的接口。容器为其托管的组件提供特定的服务。例如,开发生命周期管理、依赖注入、并发等。容器隐藏了技术复杂性并提高了可移植性。Java EE 中有四种不同类型的容器:-
Applet 容器由大多数浏览器实现。开发小程序时,您可以专注于应用程序的视觉方面,而容器则提供安全的环境。
-
应用程序客户端容器 (ACC) 包含一组 Java 类、库以及在 Java SE 应用程序中实现注入、安全管理和命名服务等功能所需的其他文件。
-
Web 容器提供用于管理和执行 Web 组件(servlet、EJB Lite 组件、JSP 页面、过滤器、侦听器、JSF 页面和 Web 服务)的核心服务。它负责实例化、初始化和调用servlet,并支持HTTP和HTTPS协议。该容器用于向客户端浏览器提供网页。
-
EJB(企业Java Bean)容器负责管理和执行包含应用程序业务逻辑层的EJB 模型组件。它创建新的 EJB bean 实体,管理它们的生命周期,并提供事务、安全、并发、分发、命名或异步调用功能等服务。
-
Applet 是在浏览器中运行的图形用户界面 (GUI) 应用程序。他们利用丰富的 Swing API 来生成强大的用户界面。
-
应用程序是在客户端运行的程序。通常它们是图形用户界面(GUI)并用于批处理。
-
Web 应用程序(由 servlet 及其过滤器、Web 事件侦听器、JSP 和 JSF 页面组成)- 在 Web 容器中运行并响应来自 Web 客户端的 HTTP 请求。Servlet 还支持 SOAP 和 RESTful Web 服务端点。
-
企业应用程序(使用 Enterprise Java Bean、Java 消息服务、Java 事务 API、异步调用、时间服务构建)在 EJB 容器中运行。容器管理的 EJB 处理事务业务逻辑。它们可以在本地或通过 RMI(或用于 SOAP 和 RESTful Web 服务的 HTTP)远程访问。
技术
所以,我们已经整理好了架构。整体结构应该清晰。在描述架构组件的过程中,我们接触到了一些Java EE技术,例如EJB、JSP等。让我们仔细看看它们。下表显示了主要在客户端级别使用的技术:技术 | 目的 |
---|---|
小服务程序 | 动态处理客户端请求并生成响应(通常是 HTML 页面)的 Java 类。 |
Java 服务器界面 (JSF) | 用于构建具有用户界面的 Web 应用程序的框架。允许您在页面上包含用户界面组件(例如字段和按钮),转换和验证这些组件,并将这些数据存储在服务器端存储中。 |
Java Server Faces Facelets 技术 | 它是 JSF 应用程序的一个子类型,使用 XHTML 页面而不是 JSP 页面 |
Java 服务器页面 (JSP) | 编译成 servlet 的文本文档。允许您将动态内容添加到静态页面(例如 HTML 页面) |
Java 服务器页面标准标记库 (JSTL) | 一个标签库,封装了 JSP 页面上下文中的核心功能。 |
表达语言 | JSP 和 Facelets 页面中用于访问 Java EE 组件的一组标准标记。 |
Java EE 的上下文和依赖注入 (CDI) | 表示 Java EE 容器提供的一组服务,用于管理组件的生命周期,以及以安全的方式将组件注入客户端对象。 |
Java Bean 组件 | 充当应用程序页面的临时数据存储的对象。 |
技术 | 目的 |
---|---|
Enterprise Java Beans(企业 bean)组件 | EJB 是包含应用程序核心功能的托管 bean。 |
JAX-RS RESTful Web 服务 | 它是一个用于开发符合 REST 架构风格的 Web 服务的 API。 |
JAX-WS Web 服务端点 | 用于创建和使用 SOAP Web 服务的 API。 |
Java 持久性 API (JPA) 实体 | 用于访问数据存储中的数据并将该数据转换为 Java 编程语言对象(反之亦然)的 API。 |
Java EE 托管 bean | 提供应用程序业务逻辑但不需要 EJB 的事务或安全功能的托管 Bean。 |
Java消息服务 | Java 消息服务 (JMS) API 是一种消息传递标准,允许 Java EE 应用程序组件创建、发送、接收和读取消息。这确保了组件之间的分布式、可靠和异步通信。 |
技术 | 目的 |
---|---|
Java 数据库连接 API (JDBC) | 用于从数据存储访问和检索数据的低级 API。JDBC 的典型用途是针对特定数据库编写 SQL 查询。 |
Java 持久性 API | 用于访问数据存储中的数据并将该数据转换为 Java 编程语言对象(反之亦然)的 API。与 JDBC 相比,API 级别更高。向开发人员隐藏了 JDBC 的所有复杂性。 |
Java EE 连接器架构 | 用于连接其他公司资源的 API,例如:
|
Java 事务 API (JTA) | 用于定义和管理事务的 API,包括分布式事务和跨多个数据存储的事务。 |
GO TO FULL VERSION