J2EE概述
J2EE的产生
J2EE的背景
随着Internet的飞快发展和企业信息电子化的速度加快,应用对新语言,新标准,新模式的需求越来越强烈。1995年Java语言应运而生了,Sun推出的这个专注于网络计算的语言在网络分布式应用中如鱼得水,并且取得了举足轻重的作用。
回顾计算机技术在网络中的应用:
最初我们在网络中所用的计算机主要是为了解决单机模式的天生缺陷,单机模式下计算机之间最大的问题就是共享非常困难,基本上资源的共享,应用的协同工作无法进行,于是我们所熟知的C/S(Client/Server)模式就产生了。虽然它解决了数据与资源的共享,但是协同工作并没有解决,并且产生了其他的新问题,比如系统的维护与升级变得非常困难;
随之产生的就是与C/S模式的胖客户端对应的瘦客户端,由于1994年Web技术的兴起,基于浏览器的B/S(Browser/Server)瘦客户端,代替了C/S模式,这种模式解决了前面所提到的问题,但是由于企业应用的推广,电子商务功能的复杂性,以及提出的各种非功能性和性能,安全方面的要求,B/S模式也随之面临被替代的命运;
接下来这个阶段是网络应用非常复杂,也是新技术涌现的年代。由于基于Web技术的服务器(我们称之为Web服务器),承担各种角色,也承载了各种非功能性的,以及业务流方面的工作,直接导致Web服务器成为了整个框架性能的最终瓶颈。于是我们常提到的中间层(业务流层)就被分离出来了,由原来的两层结构进化成了现在的多层结构。
在这里需要提出的是,中间件技术在对非功能性和性能,安全方面的管理起到了非常重要的作用,中间件作为与OS(Operating System),DBS(Database System)齐名的三大软件支柱,发展历史非常长,早在上世纪八十���代就已经出现了,在接下来的十年由于Web技术的诞生,中间件的作用更是异乎寻常的得到无论是企业还是科研机构的重视。中间件由开始的RPC(Remote Procedure Call)中间件,发展到消息中间件,对象中间件等等。
J2EE就是在这样的环境之下,于1999年底Sun推出了Java2技术为基础的J2EE规范,这个规范提供了平台无关的,可移植的,安全的并且完全基于Java技术的服务器端中间件标准。J2EE的推出,使得中间件市场走向成熟,从中间件本身的角度来看,实现了J2EE规范的应用服务器是对象中间件;从整体架构来看,应用服务器涵盖了Web服务器,以及其他的服务器。
什么是J2EE
正如上面提到的,J2EE的核心是一组规范与指南,定义了开发企业应用系统的标准平台,由J2EE应用服务器的供应商来确保不同J2EE平台之间的兼容。
Java 2平台有三个版本,标准版本(J2SE),企业版本(J2EE)和微版本(J2ME)。
这里首先介绍J2SE,因为J2EE是建立在J2SE(Java 2 Platform Standard Edition)。J2SE主要适用GUI的客户端程序,也就是通常所说的桌面应用,并且为我们提供了Java编程常用到的核心包;
J2EE的主要组成部分有J2EE平台,J2EE规范(Platform Specification),参考实现(Reference Implementation),兼容性测试套件(Compatibility Test Suite)和J2EE蓝图(J2EE BluePrints)。
J2EE平台主要就是利用Java2平台的标准版来为当前的企业级应用提供解决方案的设计,开发,装配和部署,并定义了一组核心API标准的接口。
J2EE规范,有相应的技术规范并对API进行了解释;
参考实现则是关于J2EE平台语法的正确范例;
兼容性测试套件可以使不同J2EE版本的产品可以运行的程序;
J2EE蓝图则是提供了基于J2EE多层应用的实例与文档,主要参考PetStore,Adventure Builder。
J2EE的发展
1997年Servlet技术的产生以及紧接着JSP的产生,为Java对抗PHP,ASP等等服务器端语言带来了筹码。1998年,Sun发布了EJB1.0标准,至此J2EE平台的三个核心技术都已经出现。于是,1999年,Sun正式发布了J2EE的第一个版本。并与1999年底发布了J2EE1.2,在2001年发布了J2EE1.3,在前年年底也就是2003年发布了J2EE1.4。
J2EE1.3
以下就是J2EE1.3的架构图,其中主要包含了Applet容器,Application Client容器,Web容器和EJB容器,并且包含了Web Component,EJB Component,Application Client Component,以JMS,JAAS,JAXP,JDBC,JAF,JavaMail,JTA等等技术做为基础。
1.3中引入了几个值得注意的功能:Java消息服务(定义了JMS的一组API),J2EE连接器技术(定义了扩展J2EE服务到非J2EE应用程序的标准),XML解析器的一组Java API,Servlet2.3,JSP1.2也都进行了性能扩展与优化,全新的CMP组件模型和MDB(消息Bean)。
J2EE1.4
J2EE1.4大体上的框架和J2EE1.3是一致的,1.4增加了对Web服务的支持,主要是Web Service,JAX-RPC,SAAJ,JAXR,还对EJB的消息传递机制进行了完善(EJB2.1),部署与管理工具的增强(JMX),以及新版本的Servlet2.4和JSP2.0使得Web应用更加容易。
J2EE基础与关键技术
J2EE相关的几个概念
J2EE框架是两个重要的概念之上,组件与容器。
组件是一个可以重复利用的单元,这里的组件不同与一般(我们常说的)组件,这是J2EE组件,也就是说组件属于Web组件,EJB组件,客户端组件,或者是应用组件其中的一种。每个组件都需要被打包,分别会打包成.war,.jar,.jar,.ear,每个组件由特定格式的xml描述符文件进行描述,而且服务器端的组件都需要被部署到应用服务器上面才能够被使���。
容器在应用服务器中就扮演了中间件的角色,
比如说Web容器就是为JSP,Servlet提供一个环境,使之不用关注系统问题;
EJB容器则是为EJB组件提供各种系统级别的服务,比如事务管理,安全管理,并且对EJB组件进行高效的管理。
J2EE基础
Java
Java语言是J2EE的基础,整个体系架构都是通过Java语言来描述的,而且所有的J2EE应用服务器都是通过Java语言来实现的。所以在J2EE的产品中Java无所不在。
Http(Hyper Text Transfer Protocol),SSL3.0(Secure Socket Layer)
Http(超文本传输协议)用于在Web服务器与本地浏览器之间进行文本的传输,保证文本传输的正确性,但是由于安全性方面的考虑,在J2EE的应用中使用了SSL协议与Http协议的结合,SSL(安全套接层协议)主要是通过X.509数字证书技术保护信息传输的机密性和完整性,适用于Web Server的点到点方式传输。
从J2EE的体系架构图中可看出客户端,无论是Applet容器还是Client Application容器都是通过Http,SSL协议经由网络来与Web容器,EJB容器中的组件进行交互的。若考虑多台应用服务器的集群,那么Web容器,EJB容器之间也将会通过Http,SSL协议进行交互。
Xml(eXtensible Marker Language)
XML是一种可扩展的标记语言,其主要的用途体现在其良好的数据表示能力和数据传输能力,通过DTD或者是XSD对数据元素进行描述,也可以通过XSLT将XML与HTML,WML等等进行匹配。
在J2EE中的应用主要集中在组件描述符文件和Web服务上面,通过描述符文件对各个组件进行非功能性或者安全方面的控制,以及管理。所以可以说XML是J2EE中最基本的技术之一。
J2EE框架的组成
基本上通过J2EE框架图可以大致看出层次的分解情况来,我们把J2EE整个框架分为客���端,表示(Web)层,业务逻辑(EJB)层,企业信息(EIS)层;
客户端:就是需求方,可以是Browser,也可以是一般的Application Client;
表示层:主要就是通过Servlet,JSP等技术进行服务器端的Web组件的编程,并且协调与客户端之间,与业务逻辑层之间的数据传递;
业务逻辑层:主要是通过EJB,JMS来实现比较复杂的业务逻辑以及数据库存储工作,并且可以通过容器来进行管理事务,安全问题,并且可以对业务逻辑层的组件进行生命周期的管理;
企业信息层:主要是指企业信息系统软件,包括企业基础设施系统,如ERP(企业资源计划),CRM(客户关系管理),DBS(数据库系统)和企业遗留系统。从J2EE1.3开始,就有Connector架构标准化了J2EE平台连接到EIS上的API。