
1.2 Java EE定义
在深入学习Java EE之前,首先要明确什么是Java EE。
1.Java EE是一个标准中间件体系结构
不要被名称Java Platform Enterprise Edition误导,与Java不同,Java EE是一种体系结构,而不是一门编程语言。Java是一门编程语言,可以用来编写各种应用程序。Java EE是一个标准中间件体系结构,旨在简化和规范分布式多层企业应用系统的开发和部署。
在Java EE出现之前,分布式多层企业应用系统的开发和部署没有一个被普遍认可的行业标准,几家主要的中间件开发商的产品各自为政,彼此之间缺乏兼容性,可移植性差,难以实现互操作。Java EE的出现,规范了分布式多层体系的应用开发。Java EE将企业应用程序划分为多个不同的层,并在每一层上定义对应的组件来实现它。典型的Java EE结构的应用程序包括四层:客户层、表示逻辑层(Web层)、业务逻辑层和企业信息系统层,如图1-3所示。

图1-3 Java EE多层体系结构
客户层可以是网络浏览器或者桌面应用程序。
表示逻辑层(Web层)、业务逻辑层都位于应用服务器上,它们都是由一些Java EE标准组件JSP(Java Server Page)、Servlet、EJB(Enterprise Java Beans)和Entity等来实现的,这些组件运行在实现了Java EE标准的应用服务器上,以实现特定的表示逻辑和业务逻辑。
企业信息系统层主要用于企业信息的存储管理,主要包括数据库系统、电子邮件系统、目录服务系统等。Java EE应用程序组件经常需要访问企业信息系统层来获取所需的数据信息。
Java EE出现之前,企业应用系统的开发和部署没有被普遍认可的行业标准。Java EE体系架构的实施可显著地提高企业应用系统的可移植性、安全性、可伸缩性、负载平衡和可重用性。
2.Java EE是企业分布式应用开发标准集
Java EE不但定义了企业级应用的架构体系,还在此基础上定义了企业级应用的开发标准。作为一个企业级应用开发标准集合,Java EE主要包含以下内容:
(1)Java EE规范了企业级应用组件的开发标准。Java EE定义的组件类型有Servlet、EJB、WebSocket等。Java EE标准规定了这些组件应该实现哪些接口方法。开发人员需要根据这些标准来开发相应的应用组件。
(2)Java EE规范了容器提供的服务标准。组件的运行环境称为容器,容器通过提供标准服务来支持组件的运行。不同的组件由不同的容器来支撑运行。如JSP组件和Servlet运行在Web容器中,EJB组件运行在EJB容器中。在Java EE规范中,容器实现的标准服务有安全、事务管理、上下文和依赖注入、校验和远程连接等。各容器厂商需要根据服务标准来开发相应的容器产品。
(3)Java EE规范了企业信息系统的架构标准。为规范大型企业应用系统设计中的导航控制、数据校验、数据持久化等共性问题,Java EE提出了JSF和JPA等架构,帮助程序设计人员改善应用开发的进度和质量。
Java标准制定组织(Java Community Process, JCP)领导着Java EE规范和标准的制定,开发人员可以从网址https://jcp.org/en/jsr/detail? id=366下载最新的Java EE 8规范。截至2017年10月,最新的Java EE 8规范包含了32个具体的标准。
需要强调的是,Java EE规范只是一个标准集,它不定义组件和容器的具体实现。容器由第三方厂商如Oracle、IBM来实现,通常被称为应用服务器。而组件由开发人员根据具体的业务需求来实现,各种不同类型的组件部署在容器里,最终构成了Java EE企业应用系统。
尽管不同的厂家有不同的容器产品实现,但它们都遵循同一个Java EE规范。因此遵循Java EE标准的组件,可以自由部署在这些由不同厂商生产,但相互兼容的Java EE容器环境内。企业级系统的开发由此变得简单高效。
说明:随着Java EE版本的升级,它所包含的技术规范越来越多。为了降低容器厂商支持Java EE规范的难度,Java EE提出了Profile的概念。Profile是针对特定应用领域的一个技术规范子集,它剪切掉了一些很少使用的技术,使得Java EE变得更加简洁,也便于开发商实现。目前Java EE规范中支持的唯一一个Profile是Web Profile,它用来专门支持企业Web应用的开发。例如,Apache Tomcat就是仅仅实现了Web Profile的应用服务器。