前些天一直在研读JavaWorld上的一篇文章《put JSF to work》,有一些感触。
原文见:http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html
文章用了一个实际的例子(一个简单的购物网站)来阐述如何将JSF,Spring和Hibernate有机的结合,从中,我们不难看出未来在轻量级企业开发中这一组合的发展趋势。我将三种技术名称揉到了一起,称之为JSH。
OK,下面我们分别说说这三种技术,在这之前先想想看我们以前在设计一个Web应用时都要考虑哪些问题?应该至少包含三个方面:Web层显示逻辑与业务逻辑尽可能分离,中间层业务逻辑可配置化以及最大程度解藕,数据的持久。JSH正是分别解决了这三方面问题:
JavaServer Faces(简称JSF),这是Sun官方推出的Web框架,它以类似Java Swing组件的设计思想来解决Web层显示问题,是一套很不错的MVC架构。个人认为JSF最精彩的地方就是组件化,这就意味着利用JSF开发出来的Web页面是模块化的,可配置的,可扩展的,可重用的,这的确很让人兴奋,想想过去曾经开发过一套内容管理系统,那个时候我们自己利用XML+XSLT来实现Web页面的组件化,程序员和美工都很痛苦,再加上那个时候的解析器速度也不如现在,效果不是很理想。JSF应该可以很好的解决组件化问题。
其实Web框架已经是百花齐放,其中最熟悉的就是Struts,网上也看到些文章比较JSF和Struts,个人认为可比性不高:第一、JSF刚刚推出不久(印象中是今年3月份推出的1.0版本,目前最高版本是1.1_01,1.2版本已经在JCP日程中)而Struts已经有很长时间历史,并拥有众多书籍,文档资料,可以说是一套很成熟的框架,因此两者拿来比较就好像让小孩和大人比力气。第二、两者的侧重点不同,如果把Web开发的功能用栈来表示,Struts提供了更多底层的服务,而JSF更抽象,更偏重于上层,所以,二者在功能上有交集也有差别,不太适合做比较。
当然,任何框架都要经受时间考验,JSF也确实存在很多不足,比如,它的Bean实现并没有严格的在框架中定义,这样,业务逻辑与显示逻辑的划分依然在很大程度上依赖于程序员的实现方式,到目前为止,我还没有找到有关JSF最佳实践的文章,一直对如何划分各组成部分的关系感到头疼。
有关JSF的资料可以上这里来找http://www.jsfcentral.com/
下面说说数据持久层吧,Hibernate应该可以说大名鼎鼎了,由于接触的时间短,未能对它有足够的认识和了解,但是在数据持久O/RM领域,Hibernate是有口皆碑的,据说他的设计者已经进入Sun做J2EE的设计开发了。
要将组件化的表示层和对象化的数据持久层有机的结合起来,就要靠一套设计优秀的框架来完成了,Spring能够很好的实现与这两种技术的完美结合。Spring的最大特点就是出色的实现了IOC模式和AOP思想,并可以在每一个层面上与其他技术结合或替换使用,特别是与Hibernate(可以说是“即插即用”),我对Spring的学习处于起步阶段,无法在这里做过多评价,有兴趣的话可以访问其官方网站,上面有中文论坛的链接www.springframework.org
JSH的组合虽然不是天衣无缝,但就目前来讲,是近乎完美的组合,只等待成功案例来证明。
目前我正在学习JSH,并试图用这套技术开发自己的应用,希望能和大家多多交流。
初学不久,很多观点想法都不成熟,请大家多多指摘。