2.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的灵活性。
|
框架 |
EJB2/EJB3 |
Spring 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),男,河北,北京航空航天大学副教授,研究方向信息安全、电子政务
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)
| 共2页: 上一页 [1] 2 | ||
|
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |