读书人

Java企业使用系统框架的比较与选择

发布时间: 2012-10-28 09:54:44 作者: rapoo

Java企业应用系统框架的比较与选择
框架 EJB2/EJB3Spring Framework 1.x灵活性(松耦合) EJB3比EJB2更具灵活性,EJB3支持应用系统POJO支持应用系统POJO,框架本身可分离配置功能完整性全面,支持异步JMS 分布式事务较为全面。有自己的表现层和持久层模板,可支持异步领域范围支持业务逻辑Session不支持,需要开发者额外基于ThreadLocal编制代码IoC/AOP支持EJB3支持IoC, JBoss等EJB3服务器支持AOP;基于业务组件的较粗粒度基于JavaBeans类的细粒度支持AOP单台性能一般,批量查询等大数据量业务处理须小心,存在本地不透明缺陷一般,应用程序可配置cache/Pool以提高性能可伸缩性可支持多台服务器分布式计算不支持,可依靠EJB实现开发效率学习曲线长,导致熟练掌握难。借助商业开发工具可加快熟练者的开发速度可挑选只适合自己的功能实现。相对EJB稍简单系统规模EJB2适合大型系统;EJB3适合中大型系统可挑选只适合自己的功能实现。相对EJB稍简

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

2.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的出现显得别具意义。

3 企业应用系统框架选择

设计和性能是实际框架选择的两个基本点,善于平衡才是框架选择的主要宗旨。轻量级框架和重量级框架解决问题的侧重点是不同的。

轻量级框架侧重于减小开发的复杂度,相应的它的处理能力便有所减弱(如事务功能弱、不具备分布式处理能力),比较适用于开发中小型企业应用。采用轻量框架一方面因为尽可能的采用基于POJOs的方法进行开发,使应用不依赖于任何容器,这可以提高开发调试效率;另一方面轻量级框架多数是开源项目,开源社区提供了良好的设计和许多快速构建工具以及大量现成可供参考的开源代码,这有利于项目的快速开发。例如目前Tomcat+Spring+Hibernate已经成为许多开发者开发J2EE中小型企业应用偏爱的一种架构选择。随着可供选择的框架层出不穷,开发者可以根据需要对应于企业应用三个层次的轻量级框架选择,本文第2节的内容可供选择参考。

而作为重量级框架EJB框架则强调高可伸缩性,适合与开发大型企业应用。在EJB体系结构中,一切与基础结构服务相关的问题和底层分配问题都由应用程序容器或服务器来处理,且EJB容器通过减少数据库访问次数以及分布式处理等方式提供了专门的系统性能解决方案,能够充分解决系统性能问题。

轻量级框架的产生并非是对重量级框架的否定,甚至在某种程度上可以说二者是互补的。轻量级框架在努力发展以开发具有更强大,功能更完备的企业应用;而新的EJB规范EJB3.0则在努力简化J2EE的使用以使得EJB不仅仅是擅长处理大型企业系统,也利用开发中小型系统,这也是EJB轻量化的一种努力。对于大型企业应用以及将来可能涉及到能力扩展的中小型应用采用结合使用轻量级框架和重量级框架也不失为一种较好的解决方案。

4 总结

目前适用Java企业应用的系统框架可谓百花齐放,各种框架都有长短,选择应用系统框架时不可盲目的追求流行,首先需要明确所要实现的应用系统的系统处理能力需求,然后在熟悉比较各种框架细节的基础上从设计以及开发效率方面进行考虑。本文旨在为系统框架选择提供一个参考,限于篇幅本文只对其中的几种框架做了比较,开发者可以根据需要对更多其他框架细节进行比较。

参考文献

[1] EJB3.0 Expert Group JSR 220,Enterprise JavaBeans,Version 3.0
[2] Martin Fowler 撰文,透明编译,《Ioc 容器和Dependency Injection 模式》,2002 年2 月
[3] Spring - java/ j2ee Application Framework reference,Spring中文论坛
[4] 孙卫琴,《精通Struts:MVC 的Java Web 设计与开发》,电子工业出版社
[5] Clinton Begin,《iBATIS SQL Maps Tutorail》,http: //www.ibatis.com
[6] 孙卫琴,《精通Hibernate Java对象持久化技术详解》,电子工业出版社

作者简介

许晓曼(1977.6),女,重庆,北京航空航天大学硕士在读,电子政务;
唐文忠(1968.12),男,河北,北京航空航天大学副教授,研究方向信息安全、电子政务

读书人网 >软件架构设计

热点推荐