主要内容:
一、中间件是什么?
二、中间件的主要作用
三、中间件的优越性
四、中间件的应用领域与分类
五、中间件的设计原则
六、中间件的技术规范
七、中间件的复杂性
八、中间件的开发思路
九、中间件的开源模式
十、遵循J2EE的开源中间件
十一、开源应用服务器比较
最后:开源中间件将成为潮流
企业应用软件与桌面应用软件一样,是极为复杂的。企业应用软件具有特定的内涵,用来指称的软件种类非常广泛。在企业应用软件领域里,所谓“基础结构”(Infrastructure)是整个企业应用软件运行的基础,中间件技术也在其中发挥着非常关键的作用。过去十年中,基础结构(中间件)商业软件的主要供应商是IBM和Oracle等跨国软件公司。但现在的情况完全不同了,开源中间件技术及其服务业正在世界范围内迅速兴起,并得到了广泛应用.下面让我们从基础的地方聊起.
一、中间件是什么
目前,建立企业级管理信息系统往往要面对许多已经独立存在的应用子系统,并且需要把它们与新的应用系统整合集成起来。这种整合集成的过程必须妥善处理原有的应用子系统。对于任何遗留下来的子系统,一般只能通过其特定的“接口”调用,才能够重新使用它。事实上,这些子系统一般不能直接修改,因为重写所有遗留下来的子系统成本是极高的,有时甚至是不可能的。
许多实际系统都是经由网络将多个不同的信息处理设备相互连接起来,每一项信息处理设备执行的任务既涉及与真实世界的局部相互“作用”,也涉及与此系统中其他设备的远程“交互作用”。例如,计算机网络、通信系统、电力供应和非集中的生产制造管理信息系统等均是如此。
现在的信息系统规模愈来愈大,复杂网络结构不断出现,社会发展对于“布式计算系统”逐渐形成巨大的客观需求,使得基于“分布式计算系统”的网络应用成为一项“热门”技术。在一个“分布式计算系统”的每一个“结点”,操作系统和应用软件之间的“软件层面”被定义为“中间件”(Middleware)。
网络应用的强力推动日益突现中间件技术的重要性。中间件技术涵盖的软件领域包括了分布式对象、构件技术、通信和移动计算技术等。人们普遍认为,中间件技术构成现今网络应用的核心技术。
二、中间件的主要作用
在分布式网络应用中,这些处于操作系统和通信协议之上、各种应用程序之下的“中间层软件”所起的作用包括如下方面:
(1)隐藏应用软件是由运行在各处的、相互连接的部件组成的事实;
(2) 隐藏各种硬件、操作系统和通信协议的“异构性”;
(3) 为应用系统开发集成者提供统一的、标准的、高水平的“接口”,使应用系统易于组成、重用、移植和互操作;
(4) 为实现各种通用功能提供相应的“服务”(这里“服务”并非通常意义上的服务,而是一种“服务软件机制”),有助于各种应用系统之间的相互协作,减轻开发工作量。
中间件的作用是使开发工作更加简化,它提供了通用的编程抽象、掩盖了各种硬件和操作系统的异构性,并且将底层的编程细节隐藏起来。可以这样说,在现今的互联网时代,不借助中间件技术,进行网络开发几乎是不可能的。
三、中间件的优越性
中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。具体说来有以下是大好处。在The Standish Group 的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
(1) 应用开发:The Standish Group 分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。
(2) 系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。
(3) 开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。
(4) 减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。
(5) 合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet 应用系统。
(6) 应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。
(7) 系统维护:需要一提的是,基础(中间件)软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础(中间件)软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。
(8)质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。
(9)技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。
(10)增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。
具体地说,中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,在技术不断发展之后,使以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
四、中间件的应用领域与分类
随着计算机软件技术的发展,中间件技术也已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。按照IDC的分类方法,中间件可分为六类。分别是数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。
(1)数据访问中间件:是为了建立数据应用资源互操作的模式,对异构环境下的数据库实现联接或文件系统实现联接的中间件;
(2)远程过程调用中间件:通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程;
(3)消息中间件:用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同;
(4)交易中间件:是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;
(5)对象中间件:在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,实现对象重用。
目前国内外有不少厂商都开发出自己的中间件产品,其中有全球最大的独立中间件厂商BEA(原公司),还有像IBM、Oracle和Microsoft、HP等大厂商也早已涉足电子商务中间件。
面向对象的中间件是对象技术和分布式计算发展的产物,业界普遍认为面向对象是今后中间件发展的主流方向,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。
面向对象标准原本只有一个,即CORBA(公共对象请求代理体系结构),该标准由包括IBM、Oracle等公司在内的众多厂商一起制定,从而形成了一个庞大的CORBA联盟势力。后来,Sun(原厂家)推出了企业级JavaBeans(EJB),用自己易使用的程序模型来对CORBA做出了改进。微软COM(Component Object Model,组件对象模型)的出现,使面向对象中间件市场里又多了一个标准,这样,面向对象中间件产品实际上形成了两大标准,一是微软的COM,一是JavaBeans。
从宏观上看,中间件可以分为3大类:
数据类:用于数据的存取、利用和增值,此类中间件用于构建以数据为中心的应用
处理类:把分布在网络结点上的各个应用或处理连接在一起,形成一个统一的分布式应用。
分布式构件类:支持构件式应用,未来应用的发展方向,目前竞争激烈。
为了更加清晰起见,我们把中间件细分为12种,如下表:
序号 |
种类 |
优劣 |
产品 |
1 |
数据库系统的产品 管理数据库连接,抽象网络协议。一般由数据库厂商或支持多数据库的中间件提供 |
数据库厂商的产品功能较强、性能较好。而独立于数据库厂商的产品在用于多数据库环境时效率有所降低 |
Oracle Net8Sybase Netlib,Protocol services Intersolv Sequelink client |
2 |
数据库存取APIs 支持对数据库存取的编程,可以使用存储过程。OO数据库常为OO编程语言,如Java/C++提供适应ODMG的接口 |
数据库厂商的APIs可支持对数据库所有功能的存取,因而适合编写OLTP的应用。而ODBC或JDBC更适合多数据库的环境 |
IBM DB2 CLIOracle Net8,Call Interface Microsoft ODBC,OLE DBODI’s PSE |
3 |
数据迁移、转换 用于数据部署、转换、信息增值。常作为数据仓库解决方案的一部分 |
使完全不同的数据包和遗留的应用能协同工作,但需要建立诸如时间、数据优选和整合、以及资源等要素 |
IBM Data PropagatorSybase Replication ServerPlatinum InfoPumpD2K Tapestry |
4 |
底层的同步服务(RPC) 使调用远端的过程和在本地一样。在被调用的处理未完以前,调用进程处于阻塞状态 |
点但的代码抽象,只有在所有的Server 都是在线的情形才能工作。不适合移动或Internet应用 |
DCE-RPC (微软把它用在DOM中)Borland EnteraNoblenet RPC |
5 |
简单的异步消息 简单是消息发送和接收,有时扩展到可靠投递、智能路由和名字服务 |
对需要高性能的异步通讯的应用非常有用。但需要所有的Server 都在线 |
Peerlogic PipesMomentum XIPC东方通科技TongLINK |
6 |
应用级的消息队列 是简单的消息中间件的扩展,增加了队列、脱机处理能力、可靠投递和发布订阅等功能 |
使分布式处理可以在脱机、事件驱动等的方式,适合与电子商务、移动用户、工作流或其他的环境中 |
TIBCO RendenousIBM MQ SeriesMS Message QueueLevel8 FalconMQ东方通科技 TongLINK/Q清华北美 TH - MT |
7 |
应用协调器 通常是应用级消息队列的扩展,增加了许多工具用于建立适合事件服务的集成应用 |
有效地节约集成的时间特别是针对应用包或工作流产品 |
Vitria VelocitiActive Software,ActiveWebOberon ProsperpNEON NEONetTSI Mercator |
8 |
COM+/DNA 微软的分布式构件平台,使企业应用更加可扩充和可管理 |
从COM发展而来,是构件市场上的主流产品。尚需要增加针对企业应用的可靠性 |
MS,COM,DCOM,COM+MS MTSMessage Queue ServerActiveDirectory(future) |
9 |
CORBA 平台 OMG 标准,通过ORB 把分布的对象连接成一个逻辑上统一的整体 |
工业组织的标准,可用不同的方式实现,以提高互操作能力 |
Iona OrbixBorland/Visigenic,VisibrokerIBM ComponentBrokerBEA Iceberg东方通科技 TongBroker |
10 |
交易监控器 用于开发实时的OLTP应用的服务器和API,用于管理交易,共享资源 |
已证明是建造OLTP应用的有效手段。通常是非面向对象的,带有特有和复杂的API |
BEA TUXEDOIBM TX 系列东方通科技 TongEASY清华北美 JavaST |
11 |
应用服务器 针对Internet、Intranet和其他分布式构件应用,提供服务方构件的完整环境 |
与交易监控器类似,只不过是面向对象的、支持构件、具有标准API |
NetDynamicsIBM Compont – BrokerNetscape KivaOracle App. Ser东方通科技 TongWEB清华北美 WebFirst |
12 |
工作流/应用集成 大杂烩,把工作流和应用开发技术如消息及分布式构件结合在一起 |
使处理能方便自动地和构件、Script 应用、工作流行为结合在一起,同时集成文档和电子邮件 |
LSS FlowmanIBM FlowmarkAction,Technologies,ActionWorksVitria Business Agiliti |
五、中间件的设计原则
开发可重用的软件组件并使之产业化,一直是全球软件界的梦想。至今,虽然在这方面已经取得了很大的进步,但是,距离这一梦想的实现还有很长的路要走。
中间件的功能是“调停”各个应用系统的部件,或者说是“调停”各个应用系统之间的相互作用。因而,中间件的架构发挥着“中心角色”的作用。这种架构涉及到系统的组织和总体结构,以及应用系统和中间件本身之间的通信机制。除了结构方面的问题之外,中间件设计的主要问题包含分布式系统的各个方面。
任何中间件系统均依赖于能够保证其部件之间“相互操作”的通信机制。这里所说的通信就是由这些中间件本身提供给应用系统的一种功能,其中的“通信对象”(通信实体)担任着不同的角色,例如服务器与客户端,或者是端对端系统。人们对于中间件系统的要求是多变的、灵活的。因此,中间件应当允许以不同方式进行的交互模式,包括同步唤起、异步消息传递和共享对象进行协调等。
六、中间件的技术规范
1、 DCE体系
DCE是Distributed Computing Environment 分布式计算环境的缩写,它由Open Software Foundation 制定,现在这个组织被称为Open Group。
DCE由多个共同在一起工作的组件组成,它们是:远程过程调用(RPC)、本地和全局目录服务(CDS和GDS)、安全服务、DCE线程、分布式时钟服务(DTS)和分布式文件服务(DFC)。线程、RPC、CDS、安全服务和DTS组件通常被成为安全核心,并且是组成任何DCE环境所必须的组件,DTS是可选件。在DCE环境中,还包括用于管理这些组件的管理工具。
DCE被称作中间件或使其具有能力的技术,它不是独立存在的,而是被捆绑在供应商操作系统中,或者由第三方供应商进行集成。
2、 DTP模型
DTP模型是X/OPEN组织提出的一种软件结构,这种结构允许多个应用程序去共享多个资源管理器提供的资源,并且具有协调全局事物的能力。
X/OPEN是一个独立的、具有全球影响力的开放系统组织,它得到了世界大多数的最大的信息系统供应商的支持,其根本任何是通过规范开放系统的具体实现,从计算的观点考虑如何让用户获得更大的利益。
X/OPEN的DTP模型由5个基本模块组成:
应用程序(AP):用于定义事物的边界,并确定组成事物操作的动作。
资源管理器(RM):如数据库或文件系统用于存取文件。
事物管理器(TP):给事物分配标识,监督事物的处理过程并负责事物的完成以及协调事物失败的恢复。
通信资源管理器(CRM):在一个事物管理器内或两个事物管理器之间对通信进行控制。
在这5个模块之间X/OPEN模型定义了这样一些模块与模块之间的接口规范:
应用程序——资源管理器之间已经存在了一些X/OPEN的规范,如SQL和ISAM;在应用程序——事物管理器之间定义了TX接口;在交易管理器——资源管理器之间定义了XA接口;在交易管理器——通信资源管理器之间定义了XA+接口;在应用程序——通信资源管理器之间有3种接口:TXRPC、XATMI和CPI-C;在通信资源管理器——操作系统提供的底层通信协议之间提供了XAP-TP接口。
3、 CORBA
CORBA是Common Object Request Broker Architecture 的缩写,简称公共对象请求代理结构,它由国际对象管理组织OMG制定,这个组织是一个国际性组织,始建于1989年,现已拥有包括生产厂商与软件开发商800多个会员,其目的是在分布和已构计算机环境下为应用软件的开发提供一个公共框架,使开发出来的软件即面向对象又具有可重用性、可移植性以及可操作性等特点。有关CORBA的其他功能情况参见下面的第三部分说明。
4、 J2EE
J2EE是Java 2 Platform Enterprise Edition的缩写,是一种多层应用模式的结构体系。整个规范由SUN(原厂家)公司提出,它将业务逻辑从系统服务功能和用户界面中分离出去,放置在客户层和应用基础设施这两层之间的中间层,是目前应用的最为广泛的面向Web的应用系统结构规范。有关J2EE的其他功能情况参见下面的第三部分说明。
5、 互联网相关技术规范
Web(World Wide Web)是一种网络化的信息资源,它依赖于3个机制,使这些信息资源可以面对广大的使用者。
1) 一种唯一的命名机制,为网上的资源进行定位,如:URI。
2) 一种通信规程,以便在网上可以存取这些被命名的资源,如:HTTP。
3) 混合文本,以便更好地驾御这些信息资源,如:HTML。
URI(Universal Resource Identifier)全局资源标识,一种命名机制,它将在网上的一个资源的定位分为3个部分:用于存取资源的通信方式的名称,如HTTP、FTP;保存有资源的机器的名称,如:www.sohu.com;资源本身的名称,也就是存取这些资源的路径。
HTTP(HyperText Transfer Protocol)是一种用于分布式、相互协作、混合型媒体的信息系统的应用层的通信规程。使用这一规程,除了可以在信息系统中取得资料外,还可以进行资料查询,对前端进行更新以及进行信息发布等操作。 HTML(HyperText Markup Language)是一种网上使用的出版语言,它可以为作者提供这样的功能:在在线出版的文档中包括标题、文本、表格、列表和照片等;按下鼠标后,通过混合文本链路查找文本;与远端的服务为进行联机事物处理建立表格,以便进行信息查找、预定和订购产品等操作;在文档中直接包含独立页面、影像资料与声音资料等。
这些规范都是web技术的基础,除了这些技术规范以外,还有一些规范也非常重要,它的用途是实现企业与企业间通过Web实现数据交换。这些规范是XML、SOAP、UDDI和WSDL。
XML(Extensible Markup Language)通过提供更灵活和更容易被接收的信息标识方法来改进Web的功能。XML被称为可扩展的标注语言,它不像HTML是一种单一的、预先定义的语言,XML是一种用于描述其他语言的语言,使用XML,你可以定义你自己的、不受到类型限制的、其他类型的文档。
SOAP(Simple Object Access Protocol)是一种轻量级规程,用于在没有控制中心、分布式的环境中交换信息。它以XML为基础,由4个部分组成:一个信封,定义了是什么信息和如何对它进行处理的框架;一组编码规则,用于描述应用定义的数据类型的表示示例;一组表示远程过程调用和应答的规则方式,以及一组捆绑方式,这种方式用于使用低层通信规程交换信息。SOAP具有与其他规则相结合的可能性。
UDDI(Universal Description,Discovery and Integration)是一个规范,这个规范用于Web服务以分布式、以Web为基础的信息的注册。UDDI同时也是一个这样的规范的实现的公用的可接入的集合,这个规范是是某个企业的Web服务所能提供的内容用登记信息的方式提供出来,以便其他企业可以发现这些服务。Web服务是Web技术的下一步发展方向,它可以允许可编程的被放置在Web上,其他方可以使用分布式的方式进行存取。
WSDL(Web Service Description Language)是一组包含面向文档或面向过程消息的端点操作信息的xml格式网络服务描述;操作和消息首先被抽象的描述,然后捆绑到具体的网络规程和消息格式中,以便定义端点,相关的具体端点被组合进抽象的端点中(服务)。WSDL可以捆绑描述与SOAP、HTTP GET/POST和MIME相关。
七、中间件的复杂性
中间件技术的实际应用往往涉及到信息的“拦截和迂回机制”,这必然引起系统性能的“惩罚作用”(Penalty)。因而,即使使用了一种合适的中间件系统,也往往因为这种附加的“迂回”效应而降低应用系统的性能。随着系统规模的不断增大,系统间的相互连接和相互依赖也越来越紧密,致使系统的对象、用户和连接的设备数量越来越大,这将引起通信规模过大、对象管理算法困难的现实问题,提高系统管理的复杂程度。
“无处不在”(Ubiquitous)的计算将在不久以后成为现实,那时,各种嵌入物理对象的设备数量急剧上升,形成全球极为复杂的信息网络。设备的移动性和系统性能的动态配置是其首要的特性,因此迫切要求应用系统能够具备不断调整适应的性能。
总之,中间件的复杂性与大系统相关。这种异构的、分布的、不断演化中的大系统将引起的许多问题都将与中间件技术的应用有关,例如系统的一致性观察、系统的安全性、各子系统的自治性与相互间依存性的适当“折中”,以及各种网络资源管理策略的制定和执行等。
八、中间件的开发思路
国际上关于中间件技术的开发思路分为企业专有模式与开源开发模式两种。目前,企业专有开发模式已经取得很大的成绩,例如BEA(原公司)的WebLogic套件包、IBM公司的WebSphere套件包,以及HP、Sun(原厂家)和Oracle等公司推出的专有中间件产品。这些专有的商业中间件产品各有特色,价格昂贵 由于不同厂商开发的中间件开发工具包中含有各个厂商的不同专有技术和专利,致使使用这些商业中间件开发工具包开发的应用系统不易整合和统一管理。
在发展中间件技术方面,还存在另外一种开发思路和技术实现路线,这就是开源开发模式。采用开源开发模式的主要优势在于,因为中间件中如何一个功能的缺失和效率低下都会冲击到大范围应用系统的正常运行,甚至影响到整个分布网络系统的安全,所以,为了提高中间件的可靠性、安全性和系统性能,把隐藏在中间件直观表象背后的技术思路、实现方案、程序文档和软件源代码全部拿出来让充分多的人去仔细“审视”,以求发现其中的任何一点“瑕疵”,实为一种“必须”。
九、中间件的开源模式
目前,开源应用服务器包括JBoss应用服务器和JONAS应用服务器两种。两者的开发思路和追求的目标有很大的不同。
JBoss是1999年Sun公司软件工程师Marc Fleury开创,其目的是用Java开发一个商业开源服务器(Java Bossiness Open Source Server,简称JBoss)。他所创办的JBoss公司提供基于JBoss软件包的专业技术服务,享有很高的声誉,位列Oracle和IBM 公司之前。JBoss公司员工不到100人,在国际开源社区JBoss的实际开发者也不足1000人。JBoss公司的商业化运作非常成功,JBoss开源应用服务器至今已经下载近1000万次。
JONAS (Java Open Application Server,简称JONAS)项目是“Java开放应用服务器”的缩写,其开发活动由法国ObjectWeb主持。ObjectWeb是一个“联合体”(Consortium),创立于1999年年底,发起单位是法国电信研究发展中心和法国国立计算机科学与控制研究所(INRIA)。他们的技术开发思路和发展目标是,采用构件的形式开发分布式的开源中间件。这些构件所在的领域是从特定的软件框架与协议到软件集成平台。这一联合体的技术开发路线遵循基于组件的系统方法。2002年,Object Web发展成为一个“国际联合体”,法国国立计算机科学与控制研究所为主办单位 该国际联合体是一个独立的非赢利机构,有近百个单位会员和2000名个人会员,对所有企业、研究机构和个人都是开放的。他们认为,从近20年来经过验证的开源技术发展情况来看,开源开发模式已经成为软件产业的重要发展趋势。然而,一个开源项目仅仅开放源代码是不够的,为了它的生存和繁荣,这个开源项目必须具备一种复杂的生存环境,如同一棵植物必须生长在它的生态系统(Ecosystem)之中。Object Web的目标就是联合一切力量,不仅联合一切开发者和广大用户,而且联合一切相关的开源开发项目,组成一个统一的整体,帮助这些项目在其自身环境中顺利成长,最终建立开源中间件的发展生态链,真正地推进开源中间件技术及其服务业的形成、发展和繁荣。Object Web的最终目标就是在开放标准的指引下,为电子商务、EAI(企业应用集成)、家庭自动化、电信及数据仓库的连接、网格计算、企业信息处理和微内核设计等广大的软件开发领域提供传统商业化解决方案的“开源替代产品”。
十、遵循J2EE的开源中间件
用Java语言开发运行在服务器上的应用程序必须遵循Sun公司提出的J2EE规范,这种规范给出了在分布式环境下开发和部署面向“组件”的Java应用程序应当遵循的一些具体规则。该规范给出了如何开发、部署和集成应用程序“组件”的具体办法,特别是描述了“J2EE服务器”的运行机理。“J2EE服务器”提供了一种执行环境和一些系统服务(Service),例如事务处理服务、保持服务、消息服务和安全服务等。“J2EE服务器”是一种符合J2EE规范的抽象物,是Java应用程序的“活动场地”。典型的J2EE应用程序由两部分构成,一是表现组件,也叫Web组件,包括Servlets与JSP;二是企业组件(EJB,Enterprise JavaBeans),定义事务处理逻辑和应用数据。J2EE服务器则提供两种“容器”,一种是负责处理Web组
件的;另一种是负责处理企业组件的。
上面提及的JBoss和JONAS开源应用服务器也同样是“J2EE服务器”,它们分别在2004年6月和2005年2月通过J2EE测试认证。在J2EE服务器的发展史上,开放源码的应用服务器能够通过J2EE的性能测试并准予“认证”,确实是一件震动世界软件业的大事。开源应用服务器是开源中间件的集中体现,从此,对于开源中间件的各种怀疑论调都失去了根据。
十一、开源应用服务器比较
实际上,J2EE服务器从其文件数和源代码行数来看并不十分复杂。JBoss和JONAS应用服务器的文件数分别为618个和1434个,它们的源代码行数分别为8.5万行和l1.7万行,前者比后者少3万多行,但是从程序的注释行数来看,前者只有3多万行,后者却有l0万多行,是前者的3倍。根据这种情况,我们大致可以看出,JONAS程序要比JBoss更好理解一些。
与开放的Linux操作系统比较,Linux 2.6内核的文件数为9385个,源代码总行数为341万多行(C语言源代码),注释行为102万行。由此可见,Linux操作系统较之开源应用服务器要“复杂”5~l0倍以上。
值得注意的是,JONAS的源代码行数几乎与其注释行数一样多,源代码程序的这种状况似乎更容易为人们所理解。实际上,JONAS应用服务器的程序文档完备、叙述准确。更为重要的是,JONAS应用服务器的技术细节和技术讨论都可以在ObjectWeb网站上找到。虽然JONAS应用服务器在市场开拓方面不如JBoss取得的成绩,但是它的理论体系更加完备,应用的前景应该同样是美好的。
根据以上隋况,可以将JONAS应用服务器作为进入企业基础结构软件领域的出发点,l0多万行源代码加上相应的l0多万行注释,可以认为是在我们“可控范围”之内的。
十二、最后开源中间件将成为潮流
开源应用服务器已经在企业应用软件市场上占有不容忽视的地位。据BZ研究公司今年2月主持的一项有关Java使用与认知研究的调查结果显示,被调查对象回答使用IBM WebSphere应用服务器的占36.9%,使用BEA WebLogic应用服务器的占29.7%,使用Oracle应用服务器的占32%,使用开源JBoss应用服务器的占34.8‰ 开源应用服务器JBoss占据了应用服务器的第一位。HP、Novell和Unisys等公司也都把JBoss应用服务器作为“缺省(Default)应用服务器”用在他们的硬件和软件部署上。Red Hat公司则大力支持JONAS应用服务器。
几年前,IBM成功收购GlueCode,将成为Apache基金会Geronimo(开源应用服务器)项目的积极贡献者,并将扩展现有的开发人员群体,以推动这一项目并在此基础上进行创新。这是IBM最新主张“开源J2EE”的一项具体举措。IBM想将自己的WebSphere应用服务器作为高端领域产品,而将开源J2EE应用服务器作为中、低端领域产品。纵观以上情况,不难看出开源技术在企业应用市场上已经取得令人鼓舞的成绩。今后几年,企业软件市场上的开源中间件技术定会成为一股强劲而不可阻挡的发展潮流。