第一部分
第1章 Java Web开发思想
随着IT技术的发展和企业对信息化需求的日益增加,在软件开发技术方面逐渐分为了两个阵营:Java和.NET。因为Java在安全性、跨平台性及分层次的架构方面有着不可比拟的优势,所以特别适合大型企业级应用的开发,JavaEE就是Java平台中专门为企业应用制订的标准框架。本章将从JavaEE的发展讲起,在读者了解了JavaEE的运行模式后,再逐个讲解JavaEE的核心技术,然后通过对MVC模式的讲解,使读者认识到MVC是如何实现JavaEE框架的,最后讲解Java Web开发所需的常用技术。
1.1 JavaEE简介
Java平台有3个版本,这使得软件开发人员、服务提供商和设备生产商可以针对特定的市场进行软件开发。这3个版本分别是JavaSE(Java Platform,Standard Edition)、JavaEE(Java Platform,Enterprise Edition)和JavaME(Java Platform,Micro Edition)。
JavaSE以前称为J2SE,适用于桌面系统开发,它包含了支持Java Web服务开发的类,并为JavaEE提供基础。JavaEE以前称为J2EE,适用于企业级应用开发,它是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的SOA(面向服务体系结构)和Web 2.0应用程序。JavaME以前称为J2ME,适用于小型设备和智能卡开发,基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。本书主要讲解JavaEE。
1.1.1 JavaEE的发展
网络从根本上改变了人类的生活,也改变了对企业软件的需求,每天企业都有成千上万的请求需要处理,这些请求和处理具有如下特点:
● 大部分来自网络。
● 需要支持并发请求。
● 需要提供事务支持。
● 需要在多个系统之间进行交互。
● 需要提供集群功能。
● 需要提供分布式功能。
● 需要安全性支持。
● 需要持久化数据处理功能。
然而传统的Client/Server(客户机/服务器)结构已经不能完全适应新的要求,正是基于这个背景,Sun公司推出了JavaEE,试图通过构建一个新的架构来满足互联网对性能、安全性、易用性、可用性、可扩充性和分布式的需求。
JavaEE通过提供如下的技术来满足上述需求。
● Servlet/JSP:提供了对网络请求进行处理的功能。
● JTA/JTS:提供了事务服务和分布式事务管理功能。
● JMS/JDBC/WebSerivce/Mail/RMI/EJB:提供了交互支持,不同系统之间可以通过多种方式交互。
● JAAS:Java认证与授权服务,提供了对Java组件的安全保护功能。
● JPA:提供了O/R Mapping(对象/关系映射)。相对于其他O/R Mapping工具来说,JPA提供了最小的特性。
● JavaEE Application Server:提供了集群、负载平衡支持功能。
当然,JavaEE还提供了其他的技术来满足企业应用,这里就不一一举例了。
在1997年,Sun公司发布了Servlet技术和JSP技术;1998年,发布了EJB1.0标准;1999年,Sun正式发布了J2EE的第一个版本;2000年,发布了J2EE1.2;在2001年发布了J2EE 1.3;在2003年发布了J2EE 1.4;在2005年年底又发布了J2EE 1.5,即JavaEE。JavaEE的发展路线图如图1.1所示。
图1.1 JavaEE的发展路线图
最初,JavaEE叫做J2EE,随着J2EE 1.5标准的发布,Sun将J2EE正式更名为JavaEE,与此对应,J2SE和J2ME平台也更名为JavaSE和JavaME。之所以改名,目的还是让大家清楚J2EE只是Java企业应用,而企业需要一个跨J2SE/Web/EJB的微容器,以保护业务核心组件,延续它的生命力,而不是依赖于J2SE/J2EE版本。
在2007年底,Bill Shannon已经向JCP(Java Community Process)提交了JavaEE 6草案。JavaEE 6主要在扩展性、Profiles、裁减和SOA方面有一些新的改善。
JavaEE 6中新的改善主要表现在:把一些技术以插件的形式而不是以扩展的形式增加到JavaEE应用服务器,通过增加可扩展性的点和更多服务接口,其他技术能够以插件的形式添加到平台实现中显得更加有效和整洁,对开发者来说使用起来更加容易。
JavaEE平台应该引入JavaEE Platform Profiles,Profiles将参考JavaEE Platform,由JCP定义,包括JavaEE Platform的一些技术,增加一些JCP技术,而这些技术不是基于JavaEE Platform技术的一部分,将那些不太需要的技术以合理的方式从JavaEE中裁减出去。JavaEE 6需要增强对Web Services的支持。
说明:JCP(Java Community Process)是一个开放的国际组织,主要由Java开发者及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。JCP维护的规范包括JavaME、JavaSE、JavaEE、XML、OSS、JAIN等。
1.1.2 JavaEE运行模式
JavaEE并非一个产品,而是一系列技术和标准的集合。它为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。具体的JavaEE平台产品由各厂商实现并遵循同一个标准。JavaEE平台继承了Java语言的安全性和高可靠性,为企业应用的设计、开发、部署和管理提供了一套完善的解决方案,它包括了从前端Web界面到中间件,再到后端数据库系统的一系列技术和规范。
JavaEE提供了一套标准的API和以组件为基础的企业架构。尤其值得注意的是,JavaEE提出了一个新的容器概念,通过容器来提供标准的系统底层服务,大大降低了企业级开发的复杂度。JavaEE的服务和容器示意图如图1.2所示。
JavaEE的服务包含Web容器和EJB容器,它所提供的Servlet和JSP技术都可以实现Web容器。Servlet是一个Java类,它可以动态地处理请求并做出响应;JSP是在HTML页面中嵌套Java代码的文本,它编译后的源代码就是Servelt,但它比Servlet提供了更好的展现方式。EJB容器主要用来进行业务逻辑的处理,这种方式能够提供较好的安全性和可靠性,它由运行在业务逻辑层的Enterprise JavaBean处理。一个Enterprise JavaBean从客户端接收数据,然后进行业务逻辑处理,还可以将处理后的数据进行存储,同时它也可以从存储器获取数据,处理后将其发送到客户端。
JavaEE平台使用了一个多层的分布式应用程序模型。它主要分为客户端层、Web层、业务层和EIS(企业信息系统)层,JavaEE的分层结构如图1.3所示。
图1.2 JavaEE的服务和容器示意图
图1.3 JavaEE的分层结构
JavaEE中各层之间的运行模式如图1.4所示。
图1.4 JavaEE中各层之间的运行模式