在JavaSE的基础复习了一遍之后,继续复习一下JavaEE相关知识体系。
这篇博客的相当内容是从Oracle官网copy下来的,目的用于复习巩固。关于J2EE相关体系也只是了解即可,毕竟像JSP等一些已经淘汰亦或者被其他框架更好地实现了,但是常用的和思想还是需要结合SE深入理解,举一反三。spring或者其他框架也只是站在EE容器的肩膀上的

Oracle文档说明

在Oracle官网不管是Oracle、MySQL、JavaSE或者EE亦或者OCI等等都有相关说明或者下载(万恶的Oracle)。
https://www.oracle.com/cn/technical-resources/
image.png
开源的背景下学习一门技术访问官网,观看官方文档是最直接的
image.png
目前在Oracle官网中只找到Java EE7比较体系的文档。有关Oracle的相关认证体系中关于JavaEE也只有7的认证,并没有更高级别的认证。
当然并不是说JavaEE8或者17没有了
https://www.oracle.com/java/technologies/javaee/javaee8-sdk-release-notes.html
image.png
https://javaee.github.io/tutorial/
J2EE8的官方文档
image.png

由于整体上大差不差,且EE7官网整理地较好也只开放了EE7的相关认证,就根据EE7来记录学习吧
J2EE7的javadoc文档
https://docs.oracle.com/javaee/7/api/toc.htm

EE体系概述

Java EE 平台的目的是为开发人员提供一组功能强大的 API,同时缩短开发时间、降低应用程序复杂性并提高应用程序性能。根据Java Community Process (JCP)相关体系开发
相当多的开源框架或中间件是根据J2EE相关规范来实现的,例如tomcat、jetty、spring等。
在 Java EE 平台中,依赖注入可以应用于组件所需的所有资源,从而有效地从应用程序代码中隐藏资源的创建和查找。依赖关系注入可用于企业 JavaBeans (EJB) 容器、Web 容器和应用程序客户端。依赖关系注入允许 Java EE 容器使用注释自动插入对其他必需组件或资源的引用。

关于J2EE7相关的
Java EE 7 平台最重要的目标是通过为 Java EE 平台中的各种组件提供通用基础来简化开发。开发人员可以通过更多的注释和更少的 XML 配置、更多的普通旧 Java 对象 (POJO) 和简化的打包,从生产力的提高中受益。Java EE 7 平台包括以下新功能:

Java EE应用程序模型

Java EE 应用程序模型将用于将服务实现为多层应用程序的体系结构定义为提供企业级应用程序所需的可伸缩性、可访问性和可管理性。此模型将实现多层服务所需的工作划分为以下部分:

  • 开发人员要实现的业务和表示逻辑
  • Java EE 平台提供的标准系统服务
    开发人员可以依靠该平台为开发多层服务的硬系统级问题提供解决方案。
    换言之,JavaEE提供了框架,不需要我们重复使用SE造轮子。根据JCP

分布式多层应用程序

这里的分布式多层和我们理解的不一样,是垂直划分,不是水平划分。虽然也可以用于多个机器上
image.png

  • 客户端层组件在客户端计算机上运行。
  • Web 层组件在 Java EE 服务器上运行。
  • 业务层组件在 Java EE 服务器上运行。
  • 企业信息系统 (EIS) 层软件在 EIS 服务器上运行。
    组成 Java EE 应用程序的应用程序组件根据应用程序组件所属的多层 Java EE 环境中的层安装在各种计算机上。

安全性

Java EE 平台提供标准的声明性访问控制规则,这些规则由开发人员定义,并在服务器上部署应用程序时进行解释。

组件

可插拔组件Java EE 组件是一个独立的功能软件单元
规范定义了以下组件:

  • 应用程序客户端和小程序是在客户端上运行的组件。(例如在浏览器上执行的组件)
  • Java Servlet、JavaServer Faces 和 JavaServer Pages (JSP) 技术组件是在服务器上运行的 Web 组件。
  • EJB 组件(企业 Bean)是在服务器上运行的业务组件。
    Java EE组件和"标准"Java类之间的区别在于,Java EE组件被组装到Java EE应用程序中,它们被验证为格式良好并且符合Java EE规范,并且它们被部署到生产环境中,在那里它们由Java EE服务器运行和管理。

Java EE 客户端

通常是 Web 客户端或应用程序客户端

  • web客户端
    含各种类型的标记语言(HTML、XML 等)的动态网页,这些标记语言由在 Web 层中运行的 Web 组件生成(J2EE的体系范围)
  • web浏览器
    web端通常不查询数据库、执行复杂的业务规则或连接到旧版应用程序。,这些重量级操作将在 Java EE 服务器上执行的企业 Bean 中,在那里它们可以利用 Java EE 服务器端技术的安全性、速度、服务和可靠性。
  • 程序客户端
    比web标记语言提供的用户界面更丰富的用户界面(现在反过来了...H5开始吊打Swing...)。应用程序客户端通常具有从 Swing API 或抽象窗口工具包 (AWT) API 创建的图形用户界面 (GUI),或命令行
    程序客户端直接访问在业务层中运行的企业 Bean。但是,如果应用程序要求需要,应用程序客户端可以打开 HTTP 连接,以便与在 Web 层中运行的 servlet 建立通信。用 Java 以外的语言编写的应用程序客户机可以与 Java EE 服务器进行交互,从而使 Java EE 平台能够与遗留系统、客户机和非 Java 语言进行互操作

小程序Applets

Java的惊人从Applets开始,虽然已经被淘汰
从 Web 层接收的网页可以包含嵌入式小程序。小程序是用 Java 编程语言编写的小型客户端应用程序,它在 Web 浏览器中安装的 Java 虚拟机中执行。但是,客户端系统可能需要 Java 插件,并且可能需要一个安全策略文件,以便小程序在 Web 浏览器中成功执行。

JavaBeans 组件架构

具有属性,并具有用于访问这些属性的方法。以这种方式使用的 JavaBeans 组件在设计和实现中通常很简单,但应符合 JavaBeans 组件体系结构中概述的命名和设计约定。getset
用于管理以下组件之间的数据流:

  • 在 Java EE 服务器上运行的应用程序客户机或小程序和组件
  • 服务器组件和数据库

注意:JavaBeans 组件不被 Java EE 规范视为 Java EE 组件。

JavaEE服务器通信

image.png
可以构成客户端层的各种元素。客户机直接或通过浏览在 Web 层中运行的网页或 servlet 与在 Java EE 服务器上运行的业务层进行通信,就像在浏览器中运行的客户机一样。

Web 组件

image.png
使用 JavaServer Faces 技术和/或 JSP 技术(JSP 页面)创建的 servlet 或网页。
**Servlet 是动态处理请求和构造响应的 Java 编程语言类。**JSP 页面是基于文本的文档,它们以 servlet 的形式执行,但允许使用更自然的方法来创建静态内容。JavaServer Faces 技术建立在 servlet 和 JSP 技术之上,并为 Web 应用程序提供了一个用户界面组件框架。
虽然JSP被淘汰,但是Servlet规范并不会

业务组件

image.png
CRUD程序员撸代码的地方。。。
业务代码是解决或满足特定业务域(如银行、零售或金融)需求的逻辑,由在业务层或 Web 层中运行的企业 Bean 处理。图 1-4显示了企业 Bean 如何从客户端程序接收数据、处理数据(如有必要),并将其发送到企业信息系统层进行存储。企业 Bean 还从存储中检索数据,对其进行处理(如有必要),然后将其发送回客户端程序。

Java EE 容器

想使用JavaEE就必须要有容器,在其规范之下
Java EE 服务器以容器的形式为每个组件类型提供底层服务。因为您不必自己开发这些服务,所以您可以自由地专注于解决手头的业务问题。

容器服务

容器是组件与支持该组件的特定于平台的低级功能之间的接口。在执行之前,必须将 Web、企业 Bean 或应用程序客户机组件组装到 Java EE 模块中并部署到其容器中。
组装过程涉及为 Java EE 应用程序中的每个组件以及 Java EE 应用程序本身指定容器设置。容器设置定制 Java EE 服务器提供的基础支持,包括安全性、事务管理、Java 命名和目录接口 (JNDI) API 查找以及远程连接等服务。

  • Java EE 安全模型允许您配置 Web 组件或企业 Bean,以便只有授权用户才能访问系统资源。
  • Java EE 事务模型允许您指定组成单个事务的方法之间的关系,以便将一个事务中的所有方法视为单个单元。
  • JNDI 查找服务为企业中的多个命名和目录服务提供了统一的接口,以便应用程序组件可以访问这些服务。(此次apach的log4j2就是jndi注入,本身只是打印日志,但是却调用了JNDI去远程调用目的地址服务
  • Java EE 远程连接模型管理客户端和企业 Bean 之间的低级通信。创建企业 Bean 后,客户端会调用其上的方法,就好像它位于同一虚拟机中一样。
  • 容器还管理不可配置的服务,例如企业 Bean 和 servlet 生命周期、数据库连接资源池、数据持久性以及对 Java EE 平台 API 的访问

容器类型

image.png
部署过程即 Java EE 应用程序组件安装在 Java EE 容器中
项目需要容器即tomcat等等其他的EE容器。springboot只是内置了容器而已,也是需要容器,我们写的业务代码只是作为组件注入。没有我们的业务代码,项目也可以启动,但是没有容器却无法启动

容器和作用

  • Java EE 服务器:Java EE 产品的运行时部分。Java EE 服务器提供 EJB 和 Web 容器。
  • EJB 容器:管理 Java EE 应用程序的企业 Bean 的执行。企业 Bean 及其容器在 Java EE 服务器上运行。
  • Web 容器:管理 Java EE 应用程序的网页、servlet 和一些 EJB 组件的执行。Web 组件及其容器在 Java EE 服务器上运行。
  • 应用程序客户端容器:管理应用程序客户端组件的执行。应用程序客户端及其容器在客户端上运行。
  • 小程序Applet容器:管理小程序的执行。由一个 Web 浏览器和一个在客户端上运行的 Java 插件组成。

网络服务支持

Web 服务是基于 Web 的企业应用程序,它们使用基于 XML 的开放标准和传输协议与调用客户端交换数据。这些服务和客户端可与在基于 Java 或非 Java 的平台上运行的其他 Web 服务和客户端完全互操作
要使用Java EE XML API编写Web服务和客户端,您需要做的就是将参数数据传递给方法调用并处理返回的数据;对于面向文档的 Web 服务,可以来回发送包含服务数据的文档。不需要低级编程,因为 XML API 实现执行将应用程序数据转换为通过基于 XML 的标准化传输协议发送的基于 XML 的数据流或从中转换应用程序数据的工作。
将数据转换为基于 XML (现在使用json比较多)的标准化数据流是使使用 Java EE XML API 编写的 Web 服务和客户端完全可互操作的原因。这并不一定意味着要传输的数据包括 XML 标记,因为传输的数据本身可以是纯文本、XML 数据或任何类型的二进制数据,例如音频、视频、地图、程序文件、计算机辅助设计 (CAD) 文档等。

XML

html的弟弟,可扩展标记语言 (XML) 是一种跨平台、可扩展、基于文本的标准,用于表示数据。
xml用于处理数据,html用于展示数据

SOAP 传输协议

HTTP 是用于通过 Internet 发送消息的熟悉的请求和响应标准,而 SOAP 是遵循 HTTP 请求和响应模型的基于 XML 的协议
传输消息的 SOAP 部分执行以下操作:

  • 定义基于 XML 的信封来描述消息中的内容并说明如何处理消息
  • 包括基于 XML 的编码规则,以在消息中表达应用程序定义的数据类型的实例
  • 定义基于 XML 的约定,用于表示对远程服务的请求和生成的响应

WSDL 标准格式

Web 服务描述语言 (WSDL) 是用于描述网络服务的标准化 XML 格式。描述包括服务的名称、服务的位置以及与服务通信的方式。

Java EE 应用程序组装和部署

Java EE 应用程序被打包到一个或多个标准单元中,以便部署到任何符合 Java EE 平台的系统。
包含

  • 一个或多个功能组件,如企业 Bean、网页、servlet 或小程序applet
  • 描述其内容的可选部署描述符
    部署通常涉及使用平台的部署工具指定特定于位置的信息,例如可以访问它的本地用户列表和本地数据库的名称。部署在本地平台上后,应用程序即可运行。

Java EE 7 API

虽然这些技术有些已经被淘汰了,但思想是需要知道的

  • Java EE 容器之间的关系
    image.png
  • Java EE 7 API 在 Web 容器中的可用性
    image.png
  • EJB 容器中 Java EE 7 API 的可用性
    image.png
  • 应用程序客户机容器中 Java EE 7 API 的可用性
    image.png

企业 JavaBeans 技术

企业JavaBeans(EJB)组件,或企业Bean,是一个代码体,具有实现业务逻辑模块的字段和方法。您可以将企业 Bean 视为一个构建块,可以单独使用,也可以与其他企业 Bean 一起使用,以在 Java EE 服务器上执行业务逻辑。
企业 Bean 可以是会话 Bean,也可以是消息驱动的 Bean。

  • 会话 Bean表示与客户端的瞬态会话。当客户端完成执行时,会话 Bean 及其数据将消失。
  • 消息驱动的 Bean结合了会话 Bean 和消息侦听器的功能,允许业务组件异步接收消息。通常,这些是 Java 消息服务 (JMS) 消息。
  • EJB Lite 中的异步本地会话 Bean
  • EJB Lite 中的非持久性计时器
    Java EE 7 平台需要 Enterprise JavaBeans 3.2 和 Interceptors 1.2。拦截器规范是 EJB 规范的一部分

Java Servlet 技术

Java Servlet 技术允许您定义特定于 HTTP 的 Servlet 类。servlet 类扩展了托管通过请求-响应编程模型访问的应用程序的服务器的功能。尽管 servlet 可以响应任何类型的请求,但它们通常用于扩展由 Web 服务器托管的应用程序。
在 Java EE 7 平台中,新的 Java Servlet 技术特性包括:

  • 无阻塞 I/O
  • HTTP 协议升级
    Java EE 7 平台需要 Servlet 3.1。

JavaServer Faces 技术

GUI 88

JavaServer Pages (JSP)技术

前后端分离后被淘汰
JavaServer Pages (JSP) 技术允许您将 servlet 代码片段直接放入基于文本的文档中。JSP 页是基于文本的文档,其中包含两种类型的文本:

  • 静态数据,可以用任何基于文本的格式表示,如 HTML 或 XML
  • JSP 元素,确定页面如何构造动态内容

JavaServer Pages 标准标记库 (JSTL)

装了许多 JSP 应用程序通用的核心功能。
88

Java Persistence API (JPA)

是一个基于 Java 标准的持久性解决方案。持久性使用对象/关系映射方法来弥合面向对象模型和关系数据库之间的差距。Java Persistence API 还可以在 Java EE 环境之外的 Java SE 应用程序中使用。Java 持久性包括以下几个方面:

  • Java持久性API
  • 查询语言
  • 对象/关系映射元数据

Java 事务 API

提供了用于划分事务的标准接口。Java EE 体系结构提供了缺省自动提交来处理事务提交和回滚。自动提交意味着正在查看数据的任何其他应用程序将在每次数据库读取或写入操作后看到更新的数据。但是,如果应用程序执行两个相互依赖的单独数据库访问操作,那么您将需要使用 JTA API 来划分整个事务(包括这两个操作)的开始、回滚和提交位置。

RESTful Web Services 的 Java API

用于 RESTful Web Services (JAX-RS) 的 Java API 定义了用于开发根据具象状态传输 (REST) 体系结构风格构建的 Web 服务的 API。JAX-RS 应用程序是一个 Web 应用程序,它由打包为 WAR 文件中的 servlet 中的类以及所需的库组成。

Managed Beans管理

轻量级容器管理对象(POJO),具有最低的要求,支持一小组基本服务,如资源注入,生命周期回调和拦截器。Managed Beans 代表了 JavaServer Faces 技术指定的托管 Bean 的推广,可以在 Java EE 应用程序中的任何位置使用,而不仅仅是在 Web 模块中。

Java EE 的上下文和依赖注入

Contexts and Dependency Injection for Java EE (CDI) 定义了一组由 Java EE 容器提供的上下文服务,使开发人员能够轻松地在 Web 应用程序中使用企业 Bean 和 JavaServer Faces 技术。CDI 专为与有状态对象一起使用而设计,还具有许多更广泛的用途,使开发人员能够非常灵活地以松散耦合但类型安全的方式集成不同类型的组件。

Java 的依赖注入

Java 的依赖注入定义了一组标准的注释(和一个接口),用于可注入类。
在 Java EE 平台中,CDI 提供了对依赖注入的支持。具体来说,您只能在启用了 CDI 的应用程序中使用注入点。

Bean Validation

验证 JavaBeans 组件中数据的元数据模型和 API。您可以在一个位置定义验证约束,并在不同层之间共享它们,而不是将数据验证分布在多个层(如浏览器和服务器端)上。

Java 消息服务 API

Java 消息服务 (JMS) API 是一种消息传递标准,它允许 Java EE 应用程序组件创建、发送、接收和读取消息。它支持松散耦合、可靠和异步的分布式通信。

Java EE Connector Architecture

工具供应商和系统集成商使用 Java EE 连接器体系结构来创建资源适配器,这些适配器支持访问可插入任何 Java EE 产品的企业信息系统。
Java EE 连接器体系结构还提供了基于性能、安全、可扩展且基于消息的事务性集成,将基于 Java EE 平台的 Web 服务与现有的 EIS(可以是同步的或异步的)集成。通过使用 JAX-WS 和 Java EE 组件模型,可以通过 Java EE 连接器体系结构集成到 Java EE 平台中的现有应用程序和 EIS 公开为基于 XML 的 Web 服务。因此,JAX-WS 和 Java EE 连接器体系结构是企业应用程序集成 (EAI) 和端到端业务集成的互补技术。

JavaMail API

使用 JavaMail API 来发送电子邮件通知。JavaMail API有两部分:

  • 应用程序组件用于发送邮件的应用程序级界面
  • 服务提供程序接口

Java Authorization Contract for Containers

规范定义了 Java EE 应用程序服务器和授权策略提供程序之间的协定。所有 Java EE 容器都支持此合约。

Java Authentication Service Provider Interface for Containers

Java 认证服务提供程序容器接口 (JASPIC) 规范定义了一个服务提供程序接口 (SPI),通过该接口,实现消息认证机制的认证提供程序可以集成到客户机或服务器消息处理容器或运行时中。

Java API for WebSocket

WebSocket 是一种应用程序协议,它通过 TCP 在两个对等体之间提供全双工通信。Java API for WebSocket 使 Java EE 应用程序能够使用注释来创建端点,这些注释指定端点的配置参数并指定其生命周期回调方法。

用于 JSON 处理的 Java API

JSON 是一种基于文本的数据交换格式,派生自 JavaScript,用于 Web 服务和其他连接的应用程序。用于 JSON 处理的 Java API (JSON-P) 使 Java EE 应用程序能够使用对象模型或流模型来解析、转换和查询 JSON 数据。

Java EE 的并发实用程序

适用于 Java EE 的并发实用程序是一个标准 API,用于通过以下类型的对象为 Java EE 应用程序组件提供异步功能:托管执行程序服务、托管计划执行程序服务、托管线程工厂和上下文服务。

Java 平台的批处理应用程序

批处理作业是无需用户交互即可执行的任务。Java 平台批处理应用程序规范是一个批处理框架,它为在 Java 应用程序中创建和运行批处理作业提供支持。批处理框架由批处理运行时、基于 XML 的作业规范语言、用于与批处理运行时交互的 Java API 以及用于实现批处理工件的 Java API 组成。

Java EE 7 APIs

J2EE定义标准,通过SPI实现

Java Database Connectivity API

Java 数据库连接 (JDBC) API 允许您从 Java 编程语言方法调用 SQL 命令。当您让会话 Bean 访问数据库时,您可以在企业 Bean 中使用 JDBC API。您还可以从 servlet 或 JSP 页面使用 JDBC API 直接访问数据库,而无需通过企业 Bean。
JDBC API 由两部分组成:

  • 应用程序组件用于访问数据库的应用程序级接口
  • 用于将 JDBC 驱动程序附加到 Java EE 平台的服务提供程序接口

Java Naming and Directory Interface API JNDI

Java 命名和目录接口 (JNDI) API 提供了命名和目录功能,使应用程序能够访问多个命名和目录服务,如 LDAP、DNS 和 NIS。JNDI API 为应用程序提供了执行标准目录操作的方法,例如,将属性与对象相关联以及使用对象属性搜索对象。使用 JNDI,Java EE 应用程序可以存储和检索任何类型的命名 Java 对象,从而允许 Java EE 应用程序与许多遗留应用程序和系统共存。
Java EE 命名服务为应用程序客户机、企业 Bean 和 Web 组件提供了对 JNDI 命名环境的访问。命名环境允许自定义组件,而无需访问或更改组件的源代码。容器实现组件的环境,并将其作为 JNDI命名上下文提供给组件。

JavaBeans Activation Framework

JavaBeans Activation Framework (JAF) 由 JavaMail API 使用。JAF 提供标准服务来确定任意数据片段的类型,封装对它的访问,发现其上可用的操作,并创建适当的 JavaBeans 组件来执行这些操作。

Java API for XML Processing

Java API for XML Processing (JAXP) 是 Java SE 平台的一部分,它支持使用 Document Object Model (DOM)、Simple API for XML (SAX) 和 Extensible Stylesheet Language Transformations (XSLT) 处理 XML 文档。JAXP 使应用程序能够独立于特定的 XML 处理实现来分析和转换 XML 文档。

Java Architecture for XML Binding

Java Architecture for XML Binding (JAXB) 提供了一种将 XML 模式绑定到 Java 语言程序中的表示的便捷方法。JAXB 可以单独使用,也可以与 JAX-WS 结合使用,在这种情况下,它为 Web 服务消息提供标准数据绑定。所有 Java EE 应用程序客户机容器、Web 容器和 EJB 容器都支持 JAXB API。

Java API for XML Web Services

Java API for XML Web Services (JAX-WS) 规范为使用 JAXB API 将 XML 数据绑定到 Java 对象的 Web 服务提供支持。JAX-WS 规范定义了用于访问 Web 服务的客户机 API 以及用于实现 Web 服务端点的技术。"实现企业 Web 服务"规范描述了基于 JAX-WS 的服务和客户机的部署。EJB 和 Java Servlet 规范也描述了这种部署的各个方面。可以使用这些部署模型中的任何一种来部署基于 JAX-WS 的应用程序。

SOAP with Attachments API for Java

SOAP with Attachments API for Java (SAAJ) 是 JAX-WS 所依赖的低级 API。SAAJ 支持生产和使用符合 SOAP 1.1 和 1.2 规范以及 SOAP 带附件说明的消息。大多数开发人员不使用 SAAJ API,而是使用更高级别的 JAX-WS API。

Java Authentication and Authorization Service

Java 认证和授权服务 (JAAS) 为 Java EE 应用程序提供了一种对特定用户或用户组进行认证和授权以运行它的方法。

Common Annotations for the Java Platform

注释支持 Java 平台中声明式编程风格。

GlassFish Server工具

Java EE 7 平台的兼容实现。除了支持前面几节中描述的所有 API 之外,GlassFish Server 还包括许多 Java EE 工具,这些工具不属于 Java EE 7 平台,但是为了方便开发人员而提供的


这个家伙很懒,啥也没有留下😋