无忧技术网 - RSS订阅 
无忧技术网

JSF 2006年大事记下篇(2)


作者:麻地河 - 发布:2010-4-22 17:35:38 - 来源:无忧技术网
 

 

3. Exadel携RichFaces加入JSF组件库竞赛

Exadel无疑是2006年度JSF天空上最耀眼的明星之一。继年初以一款支持JSF的开发工具Exadel Studio一举攻下JSF可视化页面编辑器的城池之后,年中凭借Ajax4jsf又占领了JSF Ajax框架的制高点。年尾的Exadel马不停蹄,携RichFaces加入了JSF组件库的竞赛。

RichFaces是建立在Ajax4jsf之上的JSF组件库。由于Ajax4jsf是一个先进的Ajax框架,能够非常容易地在应用中集成Ajax的特性,因此,RichFaces同样有着丰富的Ajax特征就不足为怪了。在Ajax4jsf的支撑下,RichFaces甚至具备“换肤”的能力。

RichFaces的所有组件都是“开箱即用”的,利用RichFaces,JSF应用的开发者可以立即为他们的应用加入Ajax特性,改善用户体验。无需浪费开发者任何时间,RichFaces以一种可靠和快速的方式给JSF应用打通了Ajax之路。除了一组预置的Ajax组件外,RichFaces还具备给现有JSF组件增加Ajax功能的特征。这是开发快速响应web应用所必须的,更为重要的是,这一切都不需要任何JavaScript。

RichFaces的组件由两个组件库组成。一个是Ajax组件库,另一个是UI组件库。Ajax组件库包含5个组件,其中有3个组件,用于支持桌面应用中常见的“drag-and-drop”操作:clicktodrop组件定义一个“可点击(clickable)”区域,draggable组件定义一个“可拖(draggable)”区域,dropzone定义一个“可放(target zone)”区域,三个组件结合使用,即可完成典型的“drag-and-drop”操作。

UI组件库包含14类组件,涵盖用户界面开发的诸多方面。令人感兴趣的,有可“换肤”且可自定义的日历组件,用来输入数值的滑块组件inputNumberSlider和inputNumberSpinner,像Swing那样允许用户动态生成图像的paint2D组件,可折叠和展开的纵向菜单组件panelMenu、panelMenuNode和panelMenuItem,模拟Microsoft Outlook中滑块面板功能的slidePanel和slidePanelItem组件,用来显示进度条的speedometer组件,等等。

可惜的是,RichFaces是商业软件,不是免费的。Exadel的收费方式比较奇特,并非如常规按软件授权收费,而是按年收费,称为订阅费。支付订阅费后,开发者可以在一年之内获得该软件的所有版本的使用权。第一年的订阅费是799美元,以后每年的订阅费则是399美元。姑且不论费用的高低贵贱,这种收费方式颇具Exadel特色,相当于把一条鞭子交到用户手里,要保持用户不流失,Exadel唯有不断驱策自己,推陈出新。这不但需要勇气,显然更需要相当的实力,尤其是在开源时代。

站在用户的角度,我们当然希望看到越来越多的开源软件,开源意味着免费,不过,失之东隅,收之桑榆,已经有很多公司在开源运动中尝到了甜头。在开源软件大行其道的时候,RichFaces是否也会在不久的将来,加入开源的行列?也许2007年我们就会见到答案。

4. JBoss推出框架粘合剂Seam 1.1

自从Gavin King加盟JBoss后,JBoss在Java世界里名声大振。Gavin King是Java技术领域的奇才,其发明的Hibernate以雄厚的用户基础,成为Java持久化事实上的标准,以至于Sun在Java EE 5中,不得不改弦易辙,放弃自己的Entity Beans,采用了几乎是“克隆”Hibernate概念的JPA。

有Gavin King加盟的JBoss,继续着Gavin King的神话,在Hibernate成功打入Java EE 5核心之后,又看准了一个新的方向,那就是JSF和EJB3.0的集成。Gavin King无疑是一个眼光独到的探险家,当别人都在费力地攀登一座座山峰时,Gavin King想到的,却是在两座山峰之间搭一座桥梁。JSF是表现层框架,EJB是应用层框架,当建立一个Java EE 5下的Web企业级应用时,JSF和EJB缺一不可,但是,如何让这两个侧重点不同的框架无缝地协同工作,是开发者面临的一个挑战。Gavin King抓住了这个机会,于是号称框架粘合剂的Seam在JBoss诞生了。

Seam的1.0版是2006年6月份推出的,短短半年后就发布1.1版,JBoss动作非常迅速。这符合Gavin King的做事风格,在Seam项目上,我们可以看到Hibernate成功的足迹:独特的见解,完善的文档,有问必答的论坛支持,详尽的例子,仔细的聆听,快速的新版本响应。历史证明,技术的成功,往往不唯一地取决于技术本身,谁更关注客户的需求,谁就可能笑到最后。

虽然Seam声称要用一种新的思维,去重新定义Web应用的架构,但实际上,Seam只是JSF、EJB和应用过程管理(business process management,jBPM)的组合,如同Ajax一样,没有什么值得称道的新技术,只是把几种相关技术捏合在一起,然后冠以一个新名词。当然,由于Seam已经替程序员做了框架捏合的工作,程序员的工作量肯定减少了,所以,Seam很受程序员的欢迎。

Seam的特征可以从许多方面来描述。Seam是一个以EJB为核心的、统一的组件模型。Seam打破了Web端和业务端的划分,试图用一个统一的组件框架来包含所有的组件,不论是业务层的,还是表示层的。这样处理的结果,是EJB几乎可以在任何地方使用。例如,Session Beans可以用作JSF的动作监听器或者后台bean,而Entity Beans可以被直接绑定到表单上。很显然,对于小规模的应用,Seam给程序员带来极大的方便性,但是,在大规模应用场合,在表示层和业务层之间定义明确的界线,被证明是一种正确的做法,因此,Seam可能只适用于小规模应用。当然,小规模应用的数量要远远超过大规模应用,所以,Seam获得很多程序员的喝彩就不足为怪了。

Seam在简化Java Web应用方面,有一个亮点,那就是更高级别的Http会话状态管理,称为Conversation Context。Seam的会话状态管理比HTTPSession有着更高的抽象度,也更容易理解。Seam负责在同一context的不同事件之间传播这些context。Seam以conversation context的方式,解决了web应用中,由于页面回退、刷新、重复提交、多窗口浏览等,带来的一些问题。Conversation context的实现方式利用了所谓的ConversationID,ConversationID在服务器和客户端之间来回传递,Seam根据ConversationID从HTTPSession中提取与该ConversationID相关的状态信息。由于Seam与JSF深度集成,因此,ConversationID对应用来说是透明的。

Gavin King一如既往地关注范围更广的中小规模应用,Hibernate成功了,相信Seam的未来也是乐观的。

5. 结束语

对JSF来说,2006年最值得欣慰的,是JSF阵营的不断壮大。Sun、IBM、Oracle、Apache、JBoss、Exadel以及ICEsoft等等,你方唱罢我登场,上演了一轮又一轮精彩剧目,推动JSF稳步前进。JSF有着良好的架构,开放的体系和先进的思想,新技术在JSF中的集成,并非难事,有时候甚至是非常自然的,Ajax已经证明这一点。2006年已经成为历史,不过,JSF还将继续,我们期待着2007年的JSF更加辉煌,也相信2007年的JSF一定不会令广大程序员失望。

责任编辑:liqwei
打印本页】【关闭本页】【返回列表
·上一篇:JSF 2006年大事记下篇(1)
·下一篇:如何监控你的JDBC执行效率
 文章评分
  • current rating
-5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5
 相关文章
·[Java/JSP]JSF 2006年大事记下篇(1) (2010-04-22)
·[Java/JSP]JSF 2006年大事记上篇(2) (2010-04-22)
·[Java/JSP]JSF 2006年大事记上篇(1) (2010-04-22)
 相关评论
 站点最新文章 更多>> 
·[经典影音]弱点
·[经典影音]萨利机长
·[经典影音]天空之眼
·[管理知识]康奈尔笔记法,提高100%学习效率
·[管理知识]刘强东:我管75000人靠这4张表格
·[管理知识]跟壳牌学HSE管理
·[运营策划]编辑工作内容整理
·[至理名言]奋斗与决定
·[瀚海拾遗]盲人打灯笼之各家论道
·[搞笑段子]中国男足
 站点浏览最多 更多>> 
·[协议规范]http断点续传原理:http头 Range、…
·[JS/CSS/HTML]HTML 空格的表示符号 nbsp / en…
·[NoSQL]Mongo数据库简介
·[协议规范]什么是SPF记录?如何设置、检测SP…
·[协议规范]图解 HTTPS 通信过程
·[PHP]精选国外免费PHP空间推荐
·[程序综合]常用IP地址查询接口
·[程序综合]什么是 DNS Prefetch ?
·[程序综合]获取客户端IP地址的三个HTTP请求…
·[Linux]/usr 目录的由来