Java EE概述

Java EE概述

Java EE7 概述!

一、分布式多层应用

1. JAVA EE 多层应用

  • 客户端层组建运行在客户端主机上。
  • web 层组建运行在 Java EE 服务器上。
  • 业务层组建运行在 Java EE 服务器上。
  • 企业信息系统(Enterprise Information System,EIS)层软件运行在 EIS 服务器上。

多层应用

2. Java EE 客户端

  • Web 客户端
    • 包含不同类型标记语言(HTML、XML等)的动态 Web 页面,由运行在 Web 层的 Web 组件生成。
    • Web 浏览器,显示从服务器接收的页面。
  • 应用客户端
    • 应用客户端在客户端主机上运行。
  • applet
    • 从 Web 层接收的 Web 页面可以包含嵌入的 applet。applet 是用 Java 编程语言编写的一个小客户端应用,在 Web 浏览器上安装的 Java 虚拟机中执行。
    • 构成客户端层的各个元素。

服务器通信

3. Web 组件

  与客户端类似,Web 层也可以包含一个 JavaBeans 组件来管理用户输入,并将该输入发送到业务层上运行的企业 bean 进行处理。

Web层与Java EE应用

4. 业务组件

  业务代码是解决或满足一个特定业务领域(如银行、零售或金融)需求的逻辑,由业务层或 Web 层上运行的企业 bean 处理。

5. 企业信息系统层

  企业信息系统层处理企业信息系统软件(EIS),它包括企业基础设施系统,如企业资源计划(Enterprise Resource Planning,ERP)、主机事务处理、数据库系统,以及其他遗留信息系统。

业务层和 EIS 层

三、Java EE 容器

1. 容器服务

  容器(container)是组件与支持该组件的底层平台特定功能之间的接口。

2. 容器类型

  • 服务器和容器包括
    • Java EE 服务器 这是 Java EE 产品的运行时环境部分。Java EE 服务器提供了 EJB 容器和 Web 容器。
    • EJB 容器 管理 Java EE 应用中企业 bean 的执行。企业 bean 及其容器在 Java EE 服务器上运行。
    • Web 容器 管理 Java EE 应用中 Web 页面、servlet 和一些 EJB 组件的执行。Web 组件及其容器在 Java EE 服务器上运行。
    • 应用客户端容器 管理应用客户端组建的执行。应用客户端及其容器在客户端上运行。
    • applet 容器 管理 applet 的执行。applet 容器包括一个 Web 浏览器和一个 Java 插件,都在客户端上运行。

Java EE 服务器和容器

三、Web 服务支持

1. XML

  可扩展标记语言 XML(Extensible Markup Language)是一种跨平台、可扩展、基于文本的数据表示标准。交换 XML 数据的双方可以创建自己的标记(tag)来描述数据,建立模式来指定哪些标记可以用在某种特定的 XML 文档中,并使用 XML 样式表管理数据的显示和处理。

2. SOAP 传输协议

  客户端请求和Web服务响应都作为简单对象访问协议(Simple Object Access Protocol,SOAP)消息基于 HTTP 协议传输,使客户端和 Web 服务有充分的互操作性,即使它们在不同的平台上运行或者位于因特网的不同位置,也可以很好地执行信息交换。HTTP 协议是我们熟悉的请求-响应标准,用于在互联网上传送数据;SOAP 是一个基于 XML 的协议,同样遵循 HTTP 请求-响应模型。

  传输消息中的 SOAP 部分包括以下内容:

  • 定义一个基于 XML 的信封,描述消息的内容并解释如何处理消息。
  • 包括一些基于 XML 的编码规则,描述消息中应用定义的数据类型的实例。
  • 定义一个基于 XML 的约定,表示对远程服务的请求以及所得到的响应。

3. WSDL 标准格式

  Web 服务描述语言(Web Services Description Language,WSDL)是用来描述网络服务的标准化 XML 格式。这个描述包括服务名、服务位置以及服务通信的方式。WSDL 服务描述可以在 Web 上发布。

四、Java EE 7 API

Java EE 容器中的各种关系:

Java EE 容器

1. EJB 技术

  企业 JavaBeans(Enterprise JavaBeans,EJB)或企业 bean(enterprise bean)是实现业务逻辑模块的代码,包含字段和方法。可以把企业 bean 看作是“基础构件”,可以单独使用,也可以与其他企业 bean 一同用来执行 Java EE 服务器上的业务逻辑。

  企业 bean 可以是会话 bean 或消息驱动 bean。

  • 会话 bean(session bean)表示与客户端的一个临时会话。客户端执行结束时,会话 bean 及其数据都会消失。
  • 消息驱动 bean(message-driven bean)结合了会话 bean 和消息监听器的特性,允许业务组件异步地接收消息。通常情况下,这些消息都是 Java 消息服务(Java Message Service,JMS)。

Web容器中可用的Java EE API

EJB容器中可用的Java EE API

2. Java Servlet 技术

  Java Servlet 技术允许定义特定于 HTTP 的 servlet 类。通过一个请求-响应编程模型,servlet 类可以扩展宿主应用所访问的服务器的能力。

应用客户端容器中可用的Java EE API

3. JSF 技术

  JSF(JavaServer Faces)技术是一个用于构建Web应用的用户界面框架。JSF 技术主要包括:

  • 一个 GUI 组件框架。
  • 一个灵活的模型,可以采用不同的 HTML 或不同的标记语言和技术完成组件呈现。Renderer 对象生成标记来呈现组件,并将模型对象中存储的数据转换为可以在视图中表现的类型。
  • 一个标准 RenderKit,用来生成 HTML 4.01 标记。

以下特性支持 GUI 组件:

  • 输入验证
  • 事件处理
  • 模型对象和组件之间的数据转换
  • 托管模型对象创建
  • 页面导航配置
  • 表达式语言(Expression Language,EL)

4. JSF 技术

  利用 JavaServer Pages(JSF)技术,可以将 servlet 代码片段直接放在基于文本的文档中。JSP 页面是一个基于文本的文档,包含两类文本:

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

5. JSP 标准标记库

  JSP 标准标记库(JavaServer Pages Standard Tag Library,JSTL)封装了很多 JSP 应用共有的核心功能。

  JSTL 包括处理流控制的迭代器和条件标记、管理 XML 文档的标记、国际化标记、使用 SQL 访问数据库的标记以及完成一些常用功能的标记。

6. Java 持久化 API

  Java 持久化 API(Java Persistence API,JPA)是一个基于 Java 标准的持久化解决方案。持久化使用一种对象/关系映射方法在面向对象模型和关系数据库之间架起一座“桥梁”。Java 持久化包括以下几个方面:

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

7. Java 事务API

  Java 事务 API(Java Transaction API,JTA)为事务界定提供了一个标准接口。Java EE 架构提供了一种默认的自动提交来处理事务提交和回滚。自动提交是指查看数据的所有其他应用看到的都是数据库读写操作之后已更新的数据。不过,如果你的应用要完成两个单独的数据库访问操作,而且这两个操作相互依赖,可能就需要使用 JTA API 界定整个事务(包括两个操作)在哪里开始、回滚和提交。

8. RESTful Web 服务 Java API

  RESTful Web 服务 Java API(Java API for RESTful Web Service,JAX-RS)为根据 REST 架构构建的 Web 服务定义了一个开发 API,这里的 REST 含义为表示性状态转移(Representational State Transfer)。JAX-RS 应用是一个 Web 应用,其中的类作为 servlet 连同必要的库打包在一个 WAR 文件中。

9. 托管 bean

  托管 bean(managed bean)是有最低需求的轻量级容器托管对象(POJO),支持很少的一组基本服务,如资源注入、生命周期回调和拦截器。

10. Java EE 的上下文和依赖注入

  Java EE 的上下文和依赖注入(Contexts and Dependency Injection,CDI)定义了一组上下文服务,由 Java EE 容器提供,以便开发人员在 Web 应用中结合 JSF 技术使用企业 bean。CDI 原本设计用于有状态对象(stateful object),可以用一种松耦合但类型安全的方式集成不同类型的组件。

11. Java 的依赖注入

  Java 的依赖注入(dependency injection)定义了用于可注入类的一组标准的注解(和一个接口)。只能在支持 CDI 的应用中使用注入点。

12. bean 验证

  bean 验证(bean validation)规范定义了一个元数据模型和 API,用于验证 JavaBeans 组件中的数据。可以只在一处定义验证约束,并由多个不同的层共享这些验证约束。

13. Java 消息服务 API

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

14. JavaMail API

  Java EE 应用使用JavaMail API 来发送 email 通知。JavaMail API 包括两部分:

  • 应用组件用于发送邮件的应用级接口。
  • 服务提供者接口。

15. Java 容器授权契约

  Java 容器授权契约(Java Authorization Contract for Container,JACC)规范定义了 Java EE 应用服务器和授权策略提供者之间的一个契约。

16. Java 容器认证服务提供者接口

  Java 容器认证服务提供者接口(Java Authentication Service Provider Interface for Container,JASPIC)规范定义了一个服务提供者接口(Service Provider Interface,SPI),利用这个接口,实现消息认证机制的认证提供者可以集成到客户端或服务器端的消息处理容器或运行时环境。

17. WebSocket Java API

  WebSocket 是一个应用协议,可以在 TCP 上为通信双方提供全双工通信。

18. JSON 处理 Java API

  JSON 是由 JavaScript 发展而来的一种基于文本的数据交换格式,广泛用于 Web 服务和其他连接性应用。

19. Java EE 的并发工具

  Java EE 的并发工具(concurrency utility)是一个标准 API,通过以下各类对象为 Java EE 应用组件提供异步功能:托管执行器服务、托管调度执行器服务、托管线程工厂和上下文服务。

20. Java 平台的批处理应用

  批处理作业是无需用户交互也可以执行的任务。

五、Java 平台标准版 7 的 Java EE 7 API

1. Java 命名和目录接口 API

  Java 命名和目录接口(Java Naming and Directory Interface,JNDI)API 提供了命名和目录功能,允许应用访问多个命名和目录服务,如 LDAP,DNS 和 NIS。

2. XML 处理 Java API

  XML 处理 Java API(Java API for XML Processing,JAXP)是 Java SE 平台的一部分,支持使用文档对象模型(Document Object Model,DOM)、XML 简单 API(Simple API for XML,SAX)和可扩展样式表转换(Extensible Stylesheet Language Transformation,XSLT)处理 XML 文档。

3. Java XML 绑定架构

  Java XML 绑定架构(Java Architecture for XML Binding,JAXB)提供了一种很方便的方法,可以将 XML 模式绑定到 Java 程序中的一个表示上。

4. XML Web 服务 Java API

  XML Web 服务 Java API(Java API for XML Web Service,JAX-WS)规范为使用 JAXB API 将 XML 数据绑定到 Java 对象的 Web 服务提供支持。

5. 带附件 SOAP Java API

  带附件 SOAP Java API(SOAP with Attachment API for Java,SAAJ)是一个底层 API,JAX-WS 就以这个 API 为基础。

6. Java 认证和授权服务

  Java 认证和授权服务 (Java Authentication and Authorization Service,JAAS)为 Java EE 应用提供了一种方法,可以用来对运行该应用的特定用户或用户组进行认证和授权。

  JAAS 是标准可插式认证模块(Pluggable Authentication Module,PAM)框架的一个 Java 编程语言版本,它扩展了 Java 平台的安全架构,可以支持基于用户的授权。