现在在 JSF 基础之上开发的扩展控件可谓说是层出不穷, 在这广袤的资源大海中, 我们如何找到最适合自己使用的搭档
框架呢. 这里笔者就结合自己的使用和了解来给大家交流下.
只要看看 ICEFaces,RESTFaces,RichFaces,AJAX4JSF, RSS4JSF,DFaces,JSF-Ext , ADFaces ... 等等扩展的名字就可以想象
出 Faces 已经在逐渐的步入良性的发展循环中了, 经过 sun 的大力推广和其他国际大型软件公司的支持 现在 Faces 已经
不是当你的阿斗了. JSF 目前所形成的产业环境比 Struts 等其他 web 框架要大多了,再加上 Seam 的出现,JSF 在企业级开
发中必将扮演重要的角色. 但新技术的发展和普及是需要时间和项目的检验的,等 JSF 2.0 发布的时候, 我希望看到 JSF 再
国内可以和 Struts 等框架一决高下.
当然了, 可选择的多了 未必就是件好事情, 选择是痛苦的, 长期框架之间的选择已经给开发者带来了前期的巨额投入,在
选择之前要考虑很多问题, 这也是为什么 rails 在出现的时候,由于其合理的程序结构和配置,让你没法选择只能按照其规
定来轻松的完成 web 开发的时候 让开发者看到了开发的乐趣的原因吧 . 但 Rails 毕竟还是 Rails, 用来做一个 web 应用是
完全可以胜任的, 要完全取代 java 来做企业级开发的老大还需要很长的路要走. 这里扯远了, 下面我们步入正题吧.
首先我要推荐的框架就是 Myfaces 了, 这是一个第三方的 JSF 实现并且包含的很多常用的组件扩展, 在使用 Myfaces core
的时候 只要经过简单的配置就可以了, 从 Sun Ri 移植比较方便. 使用其扩展控件库可以得到一些高级控件.
然后就要推荐 Facelets 了, 这是一个 JSF 的表现层扩展,可以实现模板机制,组件从用, 大多使用 Facelets 的都是主要使用
其模板功能,但是模板功能并不是 facelets 的主要功能, facelets 强大的地方是让你可以轻易的创建组件.
掌握了这两种框架以后,就该考虑 AJAX 的支持了, 目前 JSF 中可用的 AJAX 支持还是比较多的, 你可以直接使用 JS
库,如果对 js 不太熟悉的话也可以看看 dwr,这个东东可以让你在 js 中调用服务器端的 java 代码, 做的还是比较不错
的, 不过这两种用法都是在 jsp 上的应用,并没有发挥 jsf 的易于开发的优点, 在 JSF 基础之上提供支持的 AJAX 框架
常用的选择有 RichFaces(A4J 现在已经和 RichFaces 合并了),IceFaces,JMaki 和 JSF-ext(DynaFaces) , 后面 2 个框架
好像 sun 官方对其有直接的支持,并且也属于 GlassFish 家族(JSF RI 也属于 GlassFish 家族),ICEFaces 是以一个商业
AJAX 扩展库起家的,现在也已经开源转为卖服务了,RichFaces 开始也是商业扩展, 在加入 Jboss 后也开源了, 在这
几个中选择一个使用真的很不容易, 各有个的好处, 如果考虑使用 Seam 框架的话, 建议优先考虑 RichFaces, 毕竟
他们都是 JBoss 的产品, 集成性应该会好些, 不会出现一些不兼容的问题; 如果已经有 IceFaces 的经验的话,这个是
个不错的选择,并且 seam 也可以和 icefaces 集成,icefaces 和 richFaces 的底层实现机制是不同的,到底孰优孰劣这个
还不好说,虽然国内解除 richFaces 的多些,早先因为 iceFaces 收费的原因,没能在国内流行起来, 后来研究了下
iceFaces 的实现原理, 好像要比 ajax4jsf 好一些,具体架构是否好用,只有看项目整体情况来评定了, 不能为了框架
而框架, 如果和其他框架集成起来容易出 bug 的话 ,再好用也不会实用了。而 Dfaces 是属于 GlassFish 家族的,在
GlassFish 和 sun 的开发环境中应该会有比较好的支持(这个没有详细研究过,不清楚具体情况)。 这三种产品的选择
要综合考虑项目实用的框架,根据总体的集成性来定论。
AJAX 应用掌握后,就可以考虑更深层次的集成了, 如果是做企业级开发, 需要用到 EJB 的话, Seam 是比较好的选
择, 特别是 seam 2.0 发布后, 其产品的集成性和成熟性都比 1.X 有了很大的提高。集成了 JBoss 旗下的多种开发框
架, 可以说是 Java 企业级开发中的 rails,建议学习学习。
上面我们还有些有名的框架没有提起, 如 Myfaces 的 Tobago// Trinidad// Orchestra 等项目和其他一些比较小的,特殊的
JSF 扩展组建库。 Trinidad 是个比较好的组建库,有 oracle 的 adf 发展而来, 这个是比 Tomahawk 要好的一个组件
库,Trinidad Tomahawk 之间建议优先选择 Trinidad, 并且现在 Trinidad 支持 JSF 1.2 的版本已经发布了, 而 Tomahawk
好像还没有发布, 而在使用 seam 的时候 使用 Trinidad 要比使用 Tomahawk 更容易集成和调试。 而 Orchestra 是一个提
供持久成集成的框架, 如果只是做轻量级开发,如一个简单的网站,blog 等, 可以使用 Orchestra , 如果已经使用的
seam ,Orchestra 就没必要使用的。
目前主流的 JSF 扩展也就这些, 另外的扩展几本上都是比较特殊的组件库,并且数量也比较少, 如果大家有特殊应