首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
您的位置:middleware->J2EE应用服务器的现状与发展趋势

J2EE应用服务器的现状与发展趋势2008-06-04 来自:xuejinyoulan  [收藏到我的网摘]

来源:博客
应用服务器中间件又称为“应用服务器软件平台”,是当代软件的基础设施,是最为重要的一类中间件。应用服务器可以把不同的应用软件作为构件整合到一个协同工作的环境里,并为应用提供了名字、事务、安全、消息、数据访问等服务,此外它还提供应用构件的开发、部署、运行及管理功能。

发展历程

传统的中间件有数据访问中间件、远程过程调用中间件、消息中间件、联机事务处理中间件等。Internet的出现又催生了早期的Web服务器,用于满足人们基于Web浏览器进行信息交换的需要。但由于Web服务器并不能为大规模商业应用提供高性能和高可靠性支持,因此使应用的扩展性受到了限制,与此同时软件体系结构也正在经历着从C/S、B/S到三层/多层的深刻变革。

面向对象技术和构件技术的兴起,出现了以Java/EJB、DNA/COM和CORBA为代表的分布式对象/构件计算模型,使用上述技术的应用服务器中间件涵盖了传统中间件的功能,完全支持三层/多层的软件体系结构发展和软件复用,逐渐成为中间件产品的主流。随着构件技术进一步发展,Java/EJB融合了CORBA的优点并演化成为J2EE,Microsoft DNA/COM演化为.NET,CORBA也吸收了J2EE的构件/容器思想推出CCM架构。由于.NET是一个封闭的体系,限制了它在其它平台,特别是企业级应用中的推广。J2EE是由SUN发起并由众多重要厂商参与制订的业界规范,为应用服务器的实现提供了一个开放和完整的底层框架,具有开放性、标准化、构件化、互操作和可扩展的特点,它可以使用户在此标准下创建的应用程序都能运行于其上。更重要的是,在满足J2EE兼容性的条件下,在不同的应用服务器上的应用构件可以很好地互操作,这样可以降低移植的风险和代价,提高应用的灵活性,有助于保护用户的投资,因此其业界接受程度很高。经过几年的发展,主要的应用服务器厂商都已经转向采用J2EE标准,J2EE成了事实上的应用服务器实现标准。

现状

J2EE自产生以来就在不断的发展中,应用服务器产品的发展紧紧跟随着J2EE的脚步。当前应用服务器厂商使用最广泛的是J2EE 1.3版本的规范。J2EE 1.4新版本也已在2003年的11月发布,核心架构基本没有改变,增加了一些增值服务并升级了一些原有规范。J2EE 1.4增加的新特性主要包括对Web Service的支持(Web Service、JAX-RPC、SAAJ、JAXR)、消息传递的完善(EJB2.1),部署和管理的增强(JMX、Mgmt),以及使Web应用开发变得更加容易(Servlet2.4、JSP2.0)。随着J2EE1.4的发布,已经开始有遵循J2EE1.4的应用服务器产品问世,并且越来越多的厂商开始着手或正在进行从J2EE1.3到J2EE1.4的产品升级。J2EE应用服务器体系结构如下图:

横向上,J2EE应用服务器作为衔接任何网络客户和各种数据存储层的桥梁,内部可以透明地完成业务逻辑、事务管理、消息传递、安全管理等等全面的任务;在纵向上逐渐向上延伸贴近应用,集成应用框架方面的内容,简化应用开发。

近年来,应用服务器产业的发展呈现百家争鸣的大好形势。不仅国外著名厂商IBM、BEA、Oracle等纷纷推出了自己的应用服务器,而且随着国内市场需求的扩大,中国中间件厂商也已经开始涉足应用服务器领域并形成了有竞争力的产品。目前,国内的J2EE应用服务器产品主要有中创软件的InforWeb应用服务器、金蝶软件的Apusic应用服务器、东方通科技的TongWeb应用服务器。虽然略晚几年,但从技术上讲,中国的J2EE应用服务器实际上已经可以与国外主流产品一争高下。

趋势

目前各应用服务器产品的基本功能已经趋于同质化,因此各厂商竞争热点将是如何为应用提供更多的增值功能服务和更好的性能。针对这一特点,Gartner提出了应用平台套件(Application Platform Suites,简称APS)的概念。根据Gartner的定义,APS由一批基础软件组装而成,这些基础软件提供了创建企业应用所需的架构,例如企业应用服务器、门户产品和企业应用集成包等;而且根据Gartner的报告,到2007年绝大多数中大型企业会在其项目中使用APS技术(概率0.8),那时市场上的绝大多数软件架构产品会是由专业的基础架构构件组成的模块化的集成套件(概率0.8)。另外许多应用服务器产品已经逐渐发展成为支持软件生命周期管理的平台套件,此类套件提供软件的定义、设计、开发、测试、部署与管理维护一系列的功能,企业通过它可以更快更好地构建应用系统,简化管理并降低系统运营和维护成本,获得最佳投资回报。

因此总的来看,应用服务器正朝着大而全的方向发展,“一个应用服务器,所有的中间件”可能成为下一代应用服务器追求的目标。

为什么要区分J2EE容器和J2EE应用系统?

  我们知道,J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么划分为J2EE容器和J2EE应用系统? 通过对J2EE容器运行机制的分析,我们可以发现:实际上J2EE容器分离了一般应用系统的一些通用功能,例如事务机制、安全机制以及对象池或线程池等性能优化机制。

  这些功能机制是每个应用系统几乎都需要的,因此可以从具体应用系统中分离出来,形成一个通用的框架平台,而且,这些功能机制的设计开发有一定难度,同时运行的稳定性和快速性都非常重要,必须经过长时间调试和运行经验积累而成,因此,形成了专门的J2EE容器服务器产品,如Tomcat JBoss、Websphere、WebLogic等。

  从J2EE系统划分为J2EE容器和J2EE应用系统两个方面,我们已经看到一种分散关注的思路(separation of concerns)。

  分散关注

  将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。

  AOP就是这种实现分散关注的编程方法,它将“关注”封装在“方面”中。

  AOP是什么?

  AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

  举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。

  为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再供其它访问类访问。

  使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继承这个抽象父类,如下:

abstract class Worker{

  abstract void locked();
  abstract void accessDataObject();
  abstract void unlocked();

}

  缺点:

  accessDataObject()方法需要有“锁”状态之类的相关代码。Java只提供了单继承,因此具体访问类只能继承这个父类,如果具体访问类还要继承其它父类,比如另外一个如Worker的父类,将无法方便实现。重用被打折扣,具体访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄。

  仔细研究这个应用的“锁”,它其实有下列特性:

  “锁”功能不是具体访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作。
  
  “锁”行为其实是和具体访问类的主要功能可以独立、区分开来的。

  “锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方法。如下图:

  因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能,这个新的程序结构就是aspect(方面)在这个应用中,“锁”方面(aspect)应该有以下职责:

  提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

  AOP有必要吗?

  当然,上述应用范例在没有使用AOP情况下,也得到了解决,例如JBoss 3.XXX也提供了上述应用功能,但是没有使用AOP。

  但是,使用AOP可以让我们从一个更高的抽象概念来理解软件系统,AOP也许提供一种有价值的工具。可以这么说:因为使用AOP结构,现在JBoss 4.0的源码要比JBoss 3.X容易理解多了,这对于一个大型复杂系统来说是非常重要的。

  从另外一个方面说,好像不是所有的人都需要关心AOP,它可能是一种架构设计的选择,如果选择J2EE系统,AOP关注的上述通用方面都已经被J2EE容器实现了,J2EE应用系统开发者可能需要更多地关注行业应用方面aspect。

  AOP具体实现

  AOP是一个概念,并没有设定具体语言的实现,它能克服那些只有单继承特性语言的缺点(如Java),目前AOP具体实现有以下几个项目:

  AspectJ (TM): 创建于Xerox PARC. 有近十年历史,技术成熟。

  缺点:过于复杂;破坏封装;需要专门的Java编译器。

  动态AOP:使用JDK的动态代理API或字节码Bytecode处理技术。

  基于动态代理API的具体项目有:

  JBoss 4.0 JBoss 4.0服务器
  
  基于字节码的项目有:

  aspectwerkz 
  spring

推荐人评论

应用服务器中间件又称为“应用服务器软件平台”,是当代软件的基础设施,是最为重要的一类中间件。

用户评论

正在载入评论列表...

是谁推荐了此篇文章

专家头像张翠萍
个人blog发送信息
张翠萍推荐的其他文章

赞助商精华文章

热点新闻

热点评论

    精彩专题

    资源下载

    
      网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京百联美达美数码科技有限公司 版权所有京 ICP 证 020026 号
    北京创新乐知广告有限公司 提供技术支持
    Copyright © 2000-2006, CSDN.NET, All Rights Reserved