软件测试开发技术Java企业应用系统框架的比较与选择[2]

发表于:2009-10-30来源:作者:点击数: 标签:软件测试框架javaJavaJAVA
软件测试 开发技术 Java企业应用系统框架的比较与选择[2] Java开发 关键字: uml 对应于三个层次的框架比较 1、表现层框架比较 MVC设计模式不再是某一种表现层框架的特点而是这几种框架的共性。Struts框架由于出现时间早,所以使用相对广泛,它的社区非常活

软件测试开发技术Java企业应用系统框架的比较与选择[2] Java开发

关键字:uml

对应于三个层次的框架比较

  1、表现层框架比较

  MVC设计模式不再是某一种表现层框架的特点而是这几种框架的共性。Struts框架由于出现时间早,所以使用相对广泛,它的社区非常活跃,很容易找到很多现成的开源功能标签以供使用以及样例程序可供参考。但是它的组件在页面中显示的粗粒度,以及框架类的限制在很多情况下会表现得过于死板,给表示层的开发会带来一些额外的代码开销。JSF在很大程度上类似Struts,只是JSF的组件概念没有象Struts那样必须继承ActionForm的限制,JSF在事件粒度上要比Struts细腻。JSF有的另外一个优势就是其身后有Sun公司和其他的一些大公司的支持。Tapestry是一个完全组件的框架,Tapestry的组件可以被套嵌并包裹其它组件,因此可以组合形成一个更大的组件或逻辑页面。组件的行为模式为Web页面编程提供了很大的方便,事件处理也方便很多。所以,如果做一个对页面要求灵活度相当高的系统就可以考虑选用Tapestry。

表1 三种框架的表现层功能技术细节比较

  2、业务组件层框架比较

  EJB 2.1框架有些过于复杂了,有如下缺点:

  ① EJB模型需要建立许多组件接口和实现许多不必要的回滚方法;

  ② EJB的部署描述复杂而容易出错;

  ③ 开发人员不能脱离EJB容器测试。对于以上缺点JCP (Java Community Process)制订的EJB3.0标准框架做了相应的改进,该框架为所有主要的J2EE厂商支持。EJB3.0和Spring两个框架结构都有一个共同核心设计理念:将中间件服务传递给耦合松散的POJOs。

  EJB3.0框架与应用服务器高度整合,服务整合代码也包装在一个标准接口后面。EJB框架一方面有成熟的EJB容器支持,基于EJB框架的企业应用性能优良;另一方面EJB容器设计因为考虑了多方面的功能,所以在其内核上总是会显得臃肿,这也是一种重量表现。不需要的东西存在肯定会影响效率,EJB不能根据项目需求对EJB整体包括EJB容器进行可配置式的切割。

  Spring框架处于应用服务器和服务库的上方,服务整合的代码属于框架,并暴露于应用开发者。它与应用服务器整合的能力相对EJB3.0要弱。但是Spring框架模块的可分离配置体现了它优于EJB3.0的灵活性。

表2 EJB和Spring框架的具体细节比较

  3、持久层框架比较

  容器管理持久性(CMP)是对EJB中Entity Bean进行持久性管理的方式。EJB2.1 持久性模型过于复杂并且存在基础缺陷[3]。EJB3.0持久层针对EJB2.1的缺陷做了相应改进,采用与Hibernate类似的机制。

  Hibernate相对而言其基本优势如下:

  ①Hibernate 使用 Java 反射机制而不是字节码增强程序来实现透明性;

  ②Hibernate的使用简单;

  ③映射的灵活性很出色,它支持各种关系数据库,从一对一到多对多的各种复杂关系。Hibernate 也有一些缺点,它限制所使用的对象模型 (例如,一个持久性类不能映射到多个表)。

  使用iBATIS提供的O/R Mapping机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现O/R Mapping 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而iBATIS则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”O/R Mapping机制而言,iBATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,iBATIS的出现显得别具意义。

原文转自:http://www.ltesting.net