Java EE 程序设计(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-09 02:10:00

点击下载

作者:郝玉龙

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Java EE 程序设计

Java EE 程序设计试读:

前言

为什么写作本书

随着社会信息化程度的不断提高,越来越多的软件开发人员需要开发企业级应用程序。目前,企业应用开发主要有两大技术体系:基于Java EE的应用开发和基于.NET的应用开发。Java EE技术以其开放性、灵活性、安全性和技术成熟度,赢得了诸多程序设计人员的青睐,熟练掌握Java EE程序设计已经成为软件开发人员的重要技能。

本书的特色

本书最大的特色在于坚持理论与实践相结合的原则,既注重Java EE基本原理的讲解,又注重Java EE程序设计实践应用的示范,使读者既能够透彻理解Java EE的基本原理和概念,又能够切实提高Java EE编程能力。在Java EE基本原理讲解方面,结合作者自身的理解和体会,以通俗、简练的语言对Java EE核心概念和原理进行重点讲解,尽量避免在一些烦琐的技术细节上过多纠缠,不求面面俱到,力争使读者能够在较短的时间内掌握在实际应用开发中必需的基本概念和技术,并对Java EE的体系框架有整体认识。书中所有示例都是作者结合多年教学实践和实际工程项目经验严格挑选的,力求简洁明了、切中要害、使读者能够快速理解并运用到实践中。

本书的另一大特色是系统完整、结构合理。Java EE是一个包含众多开发技术的标准规范,涵盖了企业应用开发的各个层面。本书首先对Java EE编程技术进行概述;然后选取Java EE编程中最核心的技术进行深入讲解,力求使读者在学习后能够对整个Java EE技术体系和编程思想有全面清晰的了解;最后通过一个综合示例对之前所学内容进行总结归纳和升华提高。

开发环境的选择

为方便Java EE程序开发技能的示范,本书采用目前流行的免费Java EE开发环境NetBeans IDE和GlassFish Server。首先,因为NetBeans是目前唯一一个集成了完全兼容Java EE 8规范的应用服务器的集成开发环境,减少了在开发环境搭建方面的难度;其次,NetBeans对硬件配置要求不高,且能够满足学习培训的需求。

适用读者

本书适合已经掌握了Java语言,希望学习Java EE程序设计的读者。由于Java EE 8规范中吸收了当今流行框架的设计思想和理念,在学习完本书的内容后再深入学习Struts 2、Spring和Hibernate等流行架构技术将会有更好的效果。

致谢

本书的整体设计与内容安排由郝玉龙完成。郝玉龙完成了本书第1~4章以及第11~13章的编写,季平完成本书第5~8章的编写,周旋和沈力斌共同完成了本书第9章的编写,张莉和田丽共同完成了本书第10章的编写。关静和胡志宇对本书的整体内容进行了审阅,并提出了一些宝贵的修改意见。庄薇和张琪两位同学完成了本书所有图表的绘制和文字校对。全书由郝玉龙负责校审定稿。

由于作者水平有限,加之编写时间仓促,书中难免出现错误和不足。对于书中的任何问题和建议,请发E-mail至:haoyulongsd@163.com。作 者2018年6月于北京第1章 Java EE概述本章要点: 企业应用的特征 Java EE的定义 Java EE的编程思想 Java EE的技术框架 Java EE的优点

本章首先介绍Java EE产生的背景,随后对Java EE的基本概念、编程思想、技术框架等内容进行详细讲解,最后对Java EE编程技术进行评析。1.1 Java EE产生的背景

随着社会信息化程度不断提高,越来越多的程序设计人员需要开发企业级的应用程序。为了满足开发企业级应用的需求,1998年,Sun公司在J2SE(Java 2 Platform Standard Edition)基础上,提出了J2EE(Java 2 Platform Enterprise Edition)。

说明:自2005年J2EE 5.0版本推出以后,Sun正式将J2EE的官方名称改为Java EE。因此在本书以后的描述中,统一使用Java EE这一名称。2009年Sun公司被Oracle公司收购,因此Java EE也转归Oracle公司所有。1.1.1 企业级应用程序特征

所谓企业级应用程序,并不是特指为企业开发的应用软件,而是泛指那些为大型组织部门创建的应用程序。与常见的应用程序相比较,企业级应用程序一般具有以下特征。(1)多用户。企业级应用通常需要服务大量用户群体,少则是一个单位或组织内的几十名员工,多则是数以亿计的社会人群。(2)分布式。企业级应用程序通常不是运行在某个单独的PC上,而是通过局域网运行在某个组织内部,或通过Internet连接分布在世界各地的部门或用户。(3)连续性。企业级应用通常需要24×7连续不停地运转,即使是短暂的服务中断也可能是无法接受的,例如,铁路调度系统、电子商务网站等。(4)多变性。社会环境瞬息万变,企业组织必须不断地改变业务规则来适应社会信息的高速变化,相应地,对应用程序也不断提出新的需求。企业级应用程序必须具备弹性来及时适应需求的改变,同时又尽可能地减少资金的投入。(5)可扩展性。在网络环境内,应用的潜在用户可能成百上千,企业级应用除了要考虑能够更加有效地利用企业不断增长的信息资源,还要充分考虑用户群体的膨胀给应用带来的性能上的扩展需求。(6)安全性。维护应用系统的正常操作和运转,对于企业的成功来说至关重要。但仅仅做到这一点还不够,企业应用还必须保证企业信息的安全和系统运行的可靠性。(7)集成化。企业应用除了满足自身的需求外,还经常需要与其他信息系统进行交互对接。例如,一个电子商务网站通常需要与物流信息系统和电子支付系统进行交互。

注:Java EE是专为解决企业级应用开发提出的,牢记企业应用的上述特征是深入理解和灵活运用Java EE开发技术的前提和基础。1.1.2 企业级应用程序体系结构

应用程序体系结构是指应用程序内部各组件间的组织方式。企业级应用程序的体系结构的设计经历了从两层结构到三层结构再到多层结构的演变过程。1. 两层体系结构应用程序

如图1-1所示,两层体系结构应用程序分为客户层(Client)和服务器层(Server),因此又称为C/S模式。在两层体系结构中,客户层的客户端程序负责实现人机交互、应用逻辑、数据访问等职能;服务器层由数据库服务器来实现,主要职能是提供数据库服务。这种体系结构的应用程序有以下的缺点:图1-1 两层体系结构应用程序(1)安全性低。客户端程序与数据库服务器直接连接,非法用户容易通过客户端程序侵入数据库,造成数据损失。(2)部署困难。集中在客户端的应用逻辑导致客户端程序肥大,而且随着业务规则的不断变化,需要不断更新客户端程序,大大增加了程序部署工作量。(3)耗费系统资源。每个客户端程序都要直接连到数据库服务器,使服务器为每个客户端建立连接而消耗大量宝贵的服务器资源,导致系统性能下降。2. 三层体系结构应用程序

为解决两层体系结构应用程序带来的问题,软件开发领域又提出三层体系结构应用程序,在两层体系结构应用程序的客户层与服务器层之间又添加了一个第三层——应用服务器层。这样应用程序共分为客户层、应用服务器层、数据服务器层三个层次,如图1-2所示。与两层体系结构的应用相比,三层体系结构应用程序的客户层功能大大减弱,只用来实现人机交互,原来由客户层实现的应用逻辑、数据访问职能都迁移到应用服务器层上来实现,因此客户层通常被称作“瘦客户层”。数据服务层仍旧仅提供数据信息服务。由于客户层应用程序通常由一个通用的浏览器(Browser)程序实现,因此这种体系结构又被称作B/S模式或“瘦客户端”模式。应用服务器层是位于客户层与数据服务器层中间的一层,因此应用服务器被称作“中间件服务器”或“中间件”,应用服务器层又被称作“中间件服务器层”。图1-2 三层体系结构应用程序

相对于两层体系结构的应用程序,三层体系结构的应用程序具有以下优点:(1)安全性高。中间件服务器层隔离了客户端程序对数据服务器的直接访问,保护了数据信息的安全。(2)易维护。由于业务逻辑在中间件服务器上,当业务规则变化后,客户端程序基本不做改动,只需要升级应用服务器层的程序即可。(3)快速响应。通过中间件服务器层的负载均衡以及缓存数据能力,可以大大提高对客户端的响应速度。(4)系统扩展灵活。基于三层分布体系的应用系统,可以通过在应用服务器部署新的程序组件来扩展系统规模;当系统性能降低时,可以在中间件服务器层部署更多的应用服务器来提升系统性能,缩短客户端的响应时间。3. 多层体系结构应用程序

可以将中间件服务器层按照应用逻辑进一步划分为若干个子层,这样就形成了多层体系结构的应用程序。关于多层体系结构应用程序,类似于三层体系结构,此处不再赘述。在有些文献中也将三层以及三层以上体系结构应用程序统称为多层体系结构应用程序。

为了满足开发多层体系结构的企业级应用的需求,Sun公司在早期的J2SE基础上,针对企业级应用的各种需求提出了Java EE。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的应用服务器。1.3 Java EE编程思想

Java EE为满足开发多层体系结构的企业级应用的需求,提出“组件-容器”的编程思想。Java EE应用的基本软件单元是Java EE组件。所有的Java EE组件都运行在特定的运行环境之中。组件的运行环境被称为容器。Java EE组件分为Web组件和EJB组件,相应地,Java EE容器也分为Web容器和EJB容器。

容器为组件提供必需的底层基础功能,容器提供的底层基础功能被称为服务。组件通过调用容器提供的标准服务来与外界交互。为满足企业级应用灵活部署,组件与容器之间必须既松散耦合,又能够高效交互。为实现这一点,组件与容器都要遵循一个标准规范。这个标准规范就是Java EE。

Java EE容器由专门的厂商来实现,容器必须实现的基本接口和功能由Java EE规范定义,但具体如何实现完全由容器厂商自己决定。常见的Java EE服务器中都包含Web容器或EJB容器的实现。组件一般由程序员根据特定的业务需求编程实现。

所有的Java EE组件都是在容器的Java虚拟机中进行初始化的,组件通过调用容器提供的标准服务来与外界交互。容器提供的标准服务有命名服务、数据库连接、持久化、Java消息服务、事务支持、安全服务等。因此在分布式组件的开发过程中,完全可以不考虑复杂多变的分布式计算环境,而专注于业务逻辑的实现,这样可大大提高组件开发的效率,降低开发企业级应用程序的难度。

那么组件与容器之间是如何实现交互的呢?即容器如何知道要为组件提供何种服务,组件又是如何来获取容器提供的服务呢?Java EE采用部署描述文件来解决这一难题。每个发布到服务器上的应用除了要包含自身实现的代码文件外,还要包括一个XML文件,称为部署描述文件。部署描述文件中详细描述了应用中的组件所要调用的容器服务的名称、参数等。部署描述文件就像组件与容器间达成的一个“契约”,容器根据部署描述文件的内容为组件提供服务,组件根据部署文件中的内容来调用容器提供的服务。

从上面的介绍中开发人员可以感觉,部署描述文件的配置是Java EE开发中的一项重要而又烦琐的工作。值得庆幸的是,自Java EE 5规范推出以来,Java EE支持在组件的实现代码中引入注解来取代配置复杂的部署描述文件。所谓注解,是JDK 5版本后支持的一种功能机制,它支持在Java组件的源代码中嵌入元数据信息,在部署或运行时应用服务器将根据这些元数据对组件进行相应的部署配置。关于注解,后面的章节中还会详细论述。容器在组件部署时通过提取注解信息来决定如何为组件提供服务。注解的出现大大简化了Java EE应用程序的开发和部署,是Java EE规范的一项重大进步。

更值得一提的是,从Java EE 6规范开始,还引入了一种“惯例优于配置”或者称为“仅异常才配置”的思想。通俗一点讲,就是对于Java EE组件的一些属性和行为,容器将按照一些约定俗成的惯例来自动进行配置,此时开发人员甚至连注解都可以省略。只有当组件的属性和行为不同于惯例时,才需要进行配置。这种编程方式大大降低了程序人员的工作量,也是需要开发人员逐渐熟悉和适应的一种编程技巧。1.4 Java EE技术框架

作为一个企业分布式应用开发标准集,Java EE由一系列的企业应用开发技术来最终实现。Java EE技术框架可以分为四个部分:组件技术、服务技术、通信技术和架构技术。整个Java EE技术框架体系如图1-4所示。图1-4 Java EE技术体系结构1.4.1 组件技术

组件是Java EE应用的基本单元。Java EE 8提供的组件主要包括三类:客户端组件、Web组件和业务组件。1. 客户端组件

Java EE客户端既可以是一个Web浏览器、一个Applet,也可以是一个应用程序。

1)Web浏览器

Web浏览器又称为瘦客户。它通常只进行简单的人机交互,不执行如查询数据库、业务逻辑计算等复杂操作。

2)Applet

Applet是一个用Java语言编写的小程序,运行在浏览器上的虚拟机里,通过HTTP等协议和服务器进行通信。

3)应用程序客户端

Java EE应用程序客户端运行在客户端机器上,它为用户处理任务提供了比标记语言更丰富的接口。典型的Java EE应用程序客户端拥有通过Swing或AWT API建立的图形用户界面。应用程序客户端直接访问服务器在EJB容器内的EJB组件。当然,Java EE客户应用程序也可像Applet客户那样通过HTTP连接与服务器的Servlet通信。与Applet不同的是,应用程序客户端一般需要在客户端进行安装,而Applet是通过Web下载,无须专门安装。2. Web组件

Web组件是在Java EE Web容器上运行的软件程序。它的功能是基于HTTP协议对Web请求进行响应。这些响应其实是动态生成的网页。用户每次在浏览器上单击一个链接或图标,实际上是通过HTTP请求向服务器发出请求。Web服务器负责将Web请求传递给Web组件。Java EE平台的Web组件对这些请求进行处理后生成动态内容再通过Web容器返回给客户端。

Java EE Web组件包括Servlet、JSP和WebSocket。

Servlet是Web容器里的程序组件。Servlet实质上是动态处理HTTP请求和生成网页的Java类。

JSP是Servlet的变形,它像是文本格式的Servlet,它的写法有些像写网页,这样就为应用开发者(特别是不熟悉Java语言的)提供了方便,JSP在Web容器内会被自动编译为Servlet,编写JSP比编写Servlet程序更简洁。

WebSocket用来实现客户端与服务器之间基于连接的交互。3. 业务组件

业务组件指运行在图1-3所示的业务逻辑层的组件,它们主要完成业务逻辑处理功能。业务组件包含EJB组件和Entity组件两大类。EJB组件用于实现特定的应用逻辑,而不是像Web组件一样负责处理客户端请求并生成适应客户端格式要求的动态响应。EJB组件能够从客户端或Web容器中接收数据并将处理过的数据传送到企业信息系统来存储。由于EJB依赖Java EE容器进行底层操作,使用EJB组件编写的程序具有良好的扩展性和安全性。

Java EE支持两种类型的EJB组件:Session Bean(会话Bean)和Message-Driven Bean(消息驱动Bean)。

Entity组件主要用来完成应用数据的持久化操作。1.4.2 服务技术

Java EE容器为组件提供了各种服务,这些服务是企业应用经常用到但开发人员难以实现的,例如,命名服务、部署服务、数据连接、数据事务、安全服务和连接框架等。现在这些服务已经由容器实现,因此Java EE组件只要调用这些服务就可以了。1. 命名服务

Java EE命名服务提供应用组件(包括客户、EJB、Servlet、JSP等)程序命名环境。在传统的面向对象编程中,如果一个类A要调用另一个类B,A需要知道B的源程序然后在其中创建一个B的实例。当一方程序改变时,就要重新编译,而且类之间的连接比较混乱。JNDI(Java Naming and Directory Interface,Java命名和目录服务接口)简化了企业应用组件之间的查找调用。它提供了应用的命名环境(Naming Environment)。这就像一个公用电话簿,企业应用组件在命名环境注册登记,并且通过命名环境查找所需其他组件。

JNDI API提供了组件进行标准目录操作的方法,例如,将对象属性和Java对象联系在一起,或者通过对象属性来查找Java对象。2. 数据连接服务

数据库访问几乎是任何企业应用都需要实现的。JDBC(Java DataBase Connectivity,Java数据库连接)API使Java EE平台和各种关系数据库之间连接起来。JDBC技术提供Java程序和数据库服务器之间的连接服务,同时它能保证数据事务的正常进行。另外,JDBC提供了从Java程序内调用SQL数据检索语言的功能。Java EE 8平台使用JDBC 4.1。3. Java事务服务

JTA(Java Transaction API,Java事务API)允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JTA用于保证数据读写时不会出错。当程序进行数据库操作时,要么全部成功完成,要么一点也不改变数据库内容。最怕的是在数据更改过程中程序出错,那样整个系统的业务状态和业务逻辑就会陷入混乱。所以,数据事务有一个“不可分微粒”的概念,是指一次数据事务过程不能间断,JTA保证应用程序的数据读写进程互相不干扰。如果一个数据操作能整个完成,它就会被批准;否则,应用程序服务器就当什么都没做。应用程序开发者不用自己实现这些功能,从而简化了数据操作。数据事务技术使用JTA的API,它可以在EJB层或Web层实现。4. 安全服务

JAAS(Java Authentication Authorization Service,Java验证和授权服务)提供了灵活和可伸缩的机制来保证客户端或服务器端的Java程序。Java早期的安全框架强调的是通过验证代码的来源和作者,保护用户避免受到下载下来的代码的攻击。JAAS强调的是通过验证谁在运行代码以及他/她的权限来保护系统免受用户的攻击。它让用户能够将一些标准的安全机制,例如Solaris NIS(网络信息服务)、Windows NT、LDAP(轻量目录存取协议)或Kerberos等通过一种通用的可配置的方式集成到系统中。5. Java连接框架

JCA(Java Connector Architecture,Java连接框架)是一组用于连接Java EE平台到企业信息系统(EIS)的标准API。企业信息系统是一个广义的概念,它指企业处理和存储信息数据的程序系统,譬如企业资源计划(ERP)、大型机数据事务处理以及数据库系统等。由于很多系统已经使用多年,这些现有的信息系统又称为遗产系统(Legacy System),它们不一定是标准的数据库或Java程序,例如,非关系数据库等系统。JCA定义了一套扩展性强、安全的数据交互机制,解决了遗留系统与EJB容器和组件的集成问题。这使Java EE企业应用程序能和其他类型的系统进行通话。6. Web服务

Web服务通过基于XML的开放标准使企业之间进行信息连接,企业使用基于XML的Web服务描述语言(Web Services Description Language, WSDL)来描述它们的Web服务(比如银行转账、价格查询等);通过Internet,系统之间可以使用Web服务注册来查找被登记的服务目录,这样实现了真正在Internet上的信息查询和交换。Java的Web服务实现主要提供与XML和Web服务协议有关的API等。7. 上下文和依赖注入

上下文和依赖注入(Contexts and Dependency Injection, CDI)使得容器以类型安全的松耦合的方式为EJB等组件提供一种上下文服务。它将EJB等受控组件的生命周期交由容器来管理,降低了组件之间的耦合度,大大提高了组件的重用性和可移植性。1.4.3 通信技术

Java EE通信技术提供了客户和服务器之间及在服务器上不同组件之间的通信机制。Java EE平台支持几种典型的通信技术:Internet协议、RMI(Remote Method Invocation,远程方法调用)、OMGP(Object Manage Group Protocol,对象管理组协议)、消息技术(Messaging)等。1. Internet协议

Java EE平台能够采用通用的Internet协议实现客户服务器和组件之间的远程网络通信。

TCP/IP(Transport Control Protocol over Internet Protocol,互联协议之上的传输控制协议)是Internet在传输层和Web层的核心通信协议。

HTTP是在互联网传送超文本文件的协议。HTTP消息包括从客户端到服务器的请求和从服务器到客户端的响应,HTTP协议和Web浏览器被称为Internet最普及和最常用的功能。大多数Web服务器都提供HTTP端口和互联网进行通信,在HTTP之上的SOAP(Simple Object Access Protocol,简单对象访问协议)成为受到广泛关注的Web服务基础协议。目前使用最广泛的版本为HTTP 1.1,不过随着HTTP 2以更优异的性能和安全性被广泛应用,Java EE 8规范中也提供了对HTTP 2的支持。

SSL 3.0(Secure Socket Layer,安全套接字层)是Web的安全协议。它在TCP/IP之上对客户和服务器之间的Web通信信息进行加密而不被窃听,它可以和HTTP共同使用(即HTTPS)。服务器可以通过SSL对客户进行验证。2. RMI

RMI是Java的一组用于开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象(在不同机器操作系统的程序对象),它结合了Java序列化(Java serialization)和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用。由于Java EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RMI调用网络上另一台机器上的EJB远程方法。3. OMGP

OMGP协议允许在Java EE平台上的对象通过CORBA技术和远程对象通信。CORBA对象以IDL(Interface Define Language,接口定义语言)定义,程序对象以IDL编译器使对象和ORB(Object Request Broker,对象请求中介)连接;ORB就像是程序对象之间的介绍人,它帮助程序对象相互查找和通信,ORB使用IIOP(Internet Inter-ORB Protocol,Internet间对象请求代理协议)和对象进行通信;OMG是一个广义的概念,Java EE平台要使用Java IDL和RMI-IIOP来实现OMG。4. Java通信服务技术

Java EE结合使用RMI和OMG来提供组件间的通信服务。Java IDL允许Java客户通过CORBA调用使用IDL定义了的远程对象,它属于Java标准版的技术,它提供的编译器可以根据CORBA对象生成桩(stub,Java客户端接口);Java客户连接桩并以CORBA API访问CORBA对象,编写Java RMI和CORBA的程序比较复杂,Java EE应用服务器的好处是将此过程进行了简化,开发人员可以不必考虑很多多层RMI和CORBA的细节,只要理解其基本概念和使用方法就够了。5. Java消息技术和邮件技术

JMS(Java Message Service,Java消息服务)API允许Java EE应用程序访问企业消息系统,例如,IBM MQ系列产品和JBoss的JBossMQ。在Java EE平台上,消息服务依靠消息EJB来实现。

Java邮件(Java Mail)API提供能进行电子邮件通信的一套抽象类和接口。它们支持多种电子邮件格式和传递方式。Java应用可以通过这些类和接口收发电子邮件,也可以对其进行扩充。1.4.4 架构技术

在Java EE 6之前的Java EE规范中,主要从微观的角度来规范企业应用的开发,关注的重点在组件级别上如何处理应用服务器与客户端的交互以及Java EE组件与容器之间的交互。但随着Java EE的广泛应用,在Java EE企业应用的构建过程中一些架构层面上的共性问题(如页面导航、国际化、数据持久化、输入校验等)逐渐显现。这些问题是每个Java EE开发人员构建企业应用时几乎必然遇到的,但Java EE规范并没有对此给出答案,因此,各种第三方架构大行其道,如Struts 2、Hibernate、Spring、Seam等。这些众多的框架给开发人员带来很大的学习压力,也给Java EE服务器厂商带来更多的麻烦,限制了他们为Java EE应用提供更高级的支持。因此,从Java EE 6规范开始,Java EE吸收了业界流行的架构的优点,增加了架构方面的一些标准规范。1. JSF

JSF(Java Server Faces)是一种用于构建Java EE Web应用表现层的框架标准。它提供了一种以组件为中心的事件驱动的用户界面构建方法,从而大大简化了Java EE Web应用的开发。通过引入基于组件和事件驱动的开发模式,使开发人员可以使用类似于处理传统桌面应用界面的方式来开发Web应用程序。JSF还通过将良好构建的模型-视图-控制器(MVC)设计模式集成到它的体系结构中,使行为与表达清晰分离,确保了应用程序具有更高的可维护性。Java EE 8规范中包含的JSF的版本为2.3。2. JPA

持久化对于大部分企业应用来说都是至关重要的,因为企业应用中的大部分信息都需要持久化存储到关系数据库等永久介质中。尽管有不少选择可以用来构建应用程序的持久化层,但是并没有一个统一的标准可以用在Java EE环境中。作为Java EE规范中的一部分,JPA(Java Persistence API,Java持久化应用接口)规范了Java平台下的持久化实现,大大提高了应用的可移植性。Java EE 8规范中包含的JPA的版本为2.2。3. Bean Validation

输入校验是企业应用中一项重要又十分烦琐的任务。在Java EE分层架构的应用中,每一层都需要对企业数据进行校验。然而对于同一个业务数据多次重复实现同样的验证逻辑并不是好的设计方法,它既容易出错,还降低了应用可维护性。为实现企业数据的统一校验,Java EE提出了Bean Validation规范。Java EE 8规范中包含的Bean Validation的版本为2.0。4. Java EE优点

Java EE体系架构具有以下优点:(1)独立于硬件配置和操作系统。Java EE应用运行在JVM(Java Virtual Machine,Java虚拟机)上,利用Java本身的跨平台特性,独立于硬件配置和操作系统。JRE(Java 2 Runtime Environment,Java运行环境)几乎可以运行于所有的硬件/操作系统组合之上。因此Java EE架构的企业应用使企业免于高昂的硬件设备和操作系统的再投资,保护已有的IT投资。(2)坚持面向对象的设计原则。作为一门完全面向对象的语言,Java几乎支持所有的面向对象的程序设计特征。面向对象和基于组件的设计原则构成了Java EE应用编程模型的基础。Java EE多层结构的每一层都有多种组件模型。因此开发人员所要做的就是为应用项目选择适当的组件模型组合,灵活地开发和装配组件,这样不仅有助于提高应用系统的可扩展性,还能有效地提高开发速度,缩短开发周期。(3)灵活性、可移植性和互操作性。利用Java的跨平台特性,Java EE组件可以很方便地移植到不同的应用服务器环境中。这意味着企业不必再拘泥于单一的开发平台。Java EE的应用系统可以部署在不同的应用服务器上,在全异构环境下,Java EE组件仍可彼此协同工作。这一特征使得装配应用组件首次获得空前的互操作性。(4)轻松的企业信息系统集成。Java EE技术出台后不久,很快就将JDBC、JMS和JCA等一批标准归纳于自身体系之下,这大大简化了企业信息系统整合的工作量,方便企业将诸如遗产系统、ERP和数据库等多个不同的信息系统进行无缝集成。(5)旺盛的生命力。Java EE规范秉着兼容包并的原则,版本一直在持续进化,对企业应用开发中不断涌现的新技术(如HTML5、JSON等)及时提供支持。小结

企业级应用开发所面临的分布式、安全性、高速变化等挑战要求企业应用程序采用分布式多层体系架构。为规范分布式多层应用系统的开发和部署,Java EE应运而生。Java EE既是标准中间件体系结构,同时又是一个为企业分布式应用的开发提供的标准集合。Java EE的核心编程思想是“组件-容器”,应用程序由组件组成,组件运行在容器中,容器为组件提供一些通用服务,如事务处理、安全认证等,组件专注于应用逻辑的实现,并通过调用容器提供的服务实现应用程序所需的功能。Java EE体系技术框架可以分为4部分:组件技术、服务技术、通信技术和架构技术。Java EE体系架构具有独立性、可移植性、集成性等优点。

习题1

1. 什么是Java EE?

2. 为什么提出Java EE体系架构?

3. Java EE核心设计思想是什么?

4. 简述Java EE体系包含的主要技术。

5. Java EE应用有哪些优点?第2章 搭建开发环境本章要点: Java EE开发环境搭建 Java EE开发环境测试

本章首先讲解如何利用JDK、NetBeans IDE和GlassFish Server来搭建Java EE开发环境,然后通过一个具体示例对开发环境进行测试。2.1 概述

Java EE应用开发环境分为两大类:基于命令行的开发环境和集成开发环境。基于命令行的开发环境利用简单的文本编辑器编写程序代码,通过运行Java命令实现程序的编译、发布、运行等操作。这种开发方式对于开发人员要求较高,且比较烦琐、易出错,不易为初学者掌握。因此对于初学者来说最适合使用集成开发环境进行入门学习。收费的Java EE应用集成开发环境有Genuitec公司的MyEclipse、IBM的WSAD(Websphere Studio Application Developer,WebSphere应用开发者工作室)等,但这些集成开发环境价格昂贵,且运行时对机器的硬件配置要求比较高。网络上一些免费集成开发环境如NetBeans IDE、Eclipse等为Java EE开发环境的构建提供了另一条途径。

NetBeans IDE是Oracle公司为软件开发者提供的一个免费、开放源代码的集成开发环境。NetBeans IDE易于安装和使用。它为Java EE开发者创建其应用程序提供了所需的全部工具。Java EE编程属于服务器端应用的编程,因此Java EE程序的运行还需要一个应用服务器的支持。NetBeans IDE 8内置了开源的应用服务器GlassFish,它全面支持最新的Java EE规范,为开发人员部署、调试程序提供了一个良好的平台。因此,本书将基于NetBeans IDE来讲解Java EE的各项编程技术。

下面就详细介绍在Windows 10操作系统下如何利用NetBeans IDE来搭建Java EE集成开发环境。

说明:本书所有Java EE编程示例,都将使用本章搭建的Java EE开发环境配置——Windows 10(64bit)+JDK8+NetBeans 8.2。由于Java EE跨平台的优点,本书中的代码完全可以运行在其他兼容Java EE 8规范的应用服务器上。需要特别说明的是,在编写此书时,支持Java EE 8规范的GlassFish Server 5开源版尚未集成到NetBeans IDE 8.2中。因此在2.3节将演示如何在NetBeans IDE中配置GlassFish Server 5开源版。2.2 安装JDK+NetBeans IDE

JDK(Java Development Kit,Java开发包)是用于构建发布在Java平台上的组件和应用程序的开发环境。它是Java应用程序开发的基础,所有的Java应用程序都构建在JDK之上。开发人员可以到Oracle网站上下载JDK最新版本。

说明:NetBeans IDE 8.2至少需要JDK 8以上的版本。

为方便开发人员使用,Oracle已经将JDK和NetBeans IDE集成到一个安装包,开发人员可从http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp-142931.html下载此集成安装包。

双击安装包文件jdk-8u151-nb-8_2-windows-x64.exe,开始安装Java EE开发环境,如图2-1所示。图2-1 开始安装过程

单击“下一步”按钮继续安装过程,得到如图2-2所示的对话框。图2-2 选择JDK安装路径

这里可选择JDK的安装路径。采用默认路径选项设置,单击“下一步”按钮,得到如图2-3所示的对话框。图2-3 选择NetBeans安装路径

这里可选择NetBeans IDE的安装路径以及NetBeans IDE所使用的JDK的安装路径。默认所有路径选项设置,单击“下一步”按钮,得到如图2-4所示的对话框。图2-4 确认安装选项

确认图2-4中所示信息无误后,单击“安装”按钮开始开发环境安装,最后得到如图2-5所示对话框,单击“完成”按钮,安装过程结束。图2-5 完成JDK+NetBeans IDE安装2.3 安装GlassFish Server 5

GlassFish Server 5开源版是一个免费的Java EE应用服务器,提供了Java EE 8规范的参考实现。本书所有的示例都运行在此服务器上。由于写作本书时,NetBeans IDE内置的仍旧是GlassFish的老版本,因此开发人员需要单独从网址https://javaee.github.io/glassfish/download下载GlassFish Server 5开源版的安装包。安装包是一个压缩文件,只需要解压缩即可完成GlassFish Server 5开源版的安装。

下一步开发人员还需要在NetBeans IDE中配置GlassFish Server 5开源版。具体操作为:在NetBeans IDE顶部的菜单单击“工具”→“服务器”命令,弹出如图2-6所示的对话框。图2-6 NetBeans服务器对话框

单击左下角的“添加服务器”按钮,弹出如图2-7所示的对话框。图2-7 选择添加服务器实例的种类

在“服务器”列表中选中GlassFish Server,单击“下一步”按钮,得到如图2-8所示的对话框。图2-8 选择GlassFish Server 5安装路径

单击右侧的“浏览”按钮来选择GlassFish Server 5安装路径。单击“下一步”按钮,在随后的操作中默认所有选项设置,最终完成GlassFish Server 5在NetBeans IDE中的配置。2.4 开发环境测试

下面通过创建一个包含动态JSP页面的Java EE应用来对新搭建的Java EE开发环境进行测试。关于JSP编程的详细指导将在第4章展开。

打开NetBeans IDE,选择“文件”菜单的“新建项目”选项,弹出“新建项目”对话框,如图2-9所示。图2-9 新建测试项目

在“类别”列表框中选中Java Web选项,在“项目”列表框中选中“Web应用程序”。单击“下一步”按钮,得到如图2-10所示的对话框。图2-10 设置测试Web应用选项

在“项目名称”文本框输入test。单击“浏览”按钮选择项目文件夹位置,单击“下一步”按钮得到如图2-11所示的对话框。图2-11 设置Web应用服务器

Web应用程序必须发布到Java EE Web服务器上才能够运行。因此从“服务器”下拉列表框中选择2.3节配置的GlassFish Server,默认其他选项设置,单击“完成”按钮,Web应用程序创建完毕。

下面在Web应用程序中添加一个动态JSP页面。在NetBeans IDE的项目视图中选中新建的项目test,右击,选择“新建”→JSP命令,弹出如图2-12所示的对话框。默认所有选项设置,单击“完成”按钮,JSP页面创建完成。图2-12 新建JSP测试页面

newjsp.jsp可动态显示Java EE服务器当前时间,完整代码如程序2-1所示。

程序2-1:newjsp.jsp <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> 测试页面

<%out.print(new java.util.Date());%>

下面发布newjsp.jsp到应用服务器上。在“项目”视图中选中文件newjsp.jsp,右击,在弹出的快捷菜单中选择“运行文件”命令,则Web应用程序test被打包、部署且内置的应用服务器GlassFish Server 5被启动,在自动弹出的浏览器窗口中,将得到如图2-13所示的运行结果页面。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载