查看完整版本: JSF 2006年大事记上篇(1)(转自51cto.com)

bufegar 2007-3-16 09:19

JSF 2006年大事记上篇(1)(转自51cto.com)

【导读】2006年是JSF迈向实用的第一个年头。这一年的上半年,JSF发生了几件大事:1)获得Framework of the Year荣誉称号;2) Sun发布Java Studio Creator 2;3) Exadel实现JSF对Ajax的支持;4) Apache推出Myfaces Core 1.1.3和Tomahawk 1.1.2;5) Sun推出JavaServer Faces 1.2。

1. 引子

随着新年脚步的临近,2006终于要离我们而去了。如同所有的新旧交替一样,在2006的最后几天里,人们一如既往地忙碌着,向着自己年初设定的目标发起最后的攻击。盘点自己的收获,计算自己的得失,岁末的时光里,有人欢喜有人愁。成功者踌躇满志,急切地规划着来年的蓝图;失败者卧薪尝胆,暗暗许下东山再起的誓言。物竞天择,适者生存,伴随着孔子“逝者如斯夫,不舍昼夜”的声声叹息,生活在斗转星移中继续着沧海桑田的变化。

对于JSF来说,2006意味着什么?是功成名就还是碌碌无为?作为JSF的始作俑者,Sun应该举杯痛饮胜利的香槟,还是低头咽下自己酿造的苦酒?没有人可以一言以蔽之,因为在JSF身上,发生了太多的事情。现在,就让我们站在公正的角度,按时间顺序,回顾一下JSF在2006走过的路程,成功也好,失败也罢,让事实去给JSF作个总结吧!

2. JSF获得Framework of the Year荣誉称号

2006年JSF有个好的开端。元月10日,来自Develop.com的消息让Sun十分开心,JSF赢得了Framework of the Year的荣誉称号。与JSF同台竞争的,全是大名鼎鼎的框架,包括Eclipse platform,Microsoft .NET 2.0 Framework,Spring Framework和Ruby on Rails,对手的不凡,让JSF这块金牌显得特别有份量。

如同上一个年头,Sun在本年赢得了Developer.com的许多奖项,这主要是由于Sun发明了Java语言,Sun所制定的规范,现在成为了绝大部分Java工业的技术标准。Java及其多不胜数的规范,继续占领着企业开发领域的制高点,尤其是在Web领域。

在过去的十年中,借助JCP(Java Community Process)的威力,Sun不遗余力地倾听开发人员的呼声,顺应软件开发市场的趋势,持续地改进和提高Web技术。最初的Web技术是Servlet,人们抱怨太多Java里有太多的HTML,然后是标准的JavaServer Pages技术,人们的抱怨变成了HTML里有太多的Java。最终Sun开发了一个新的Web框架标准JavaServer Faces。JSF的第一个规范发布于2004年3月(JSR 127),现在这项技术得到了大多数主要厂商的支持,包括IBM,Oracle,BEA,Borland,和Apache 基金等,也正因为如此,市场上大多数主要的IDE都内置了对JSF的支持,或者将要提供内置的JSF支持。

JSF获得Framework of the Year的原因,是因为JSF是一项基于JSP技术的Java Web应用框架,其目标是简化J2EE应用中用户界面的开发。JSF有一组完整的API,用来表达用户界面组件,管理组件状态,处理事件,验证输入,定义页面导航和支持国际化和可访问性。除了Managed Beans技术和客户端状态管理,JSF还全面支持标签库和服务器端事件模式。

JSF获奖的另一个原因,是J2EE应用开发中对于标准GUI组件的需求。在JSF规范推出之前,不同的软件开发商都用JSF和HTML开发自己的用户界面,各自为政,一盘散沙,直接导致维护的困难。JSF有点类似ASP.NET的web forms,不过,JSF是纯Java的。JSF和最流行的Struts框架有着良好的集成性,弥补了Struts在用户界面上的不足。事实上,Struts的主要贡献者Craig MacLanahan,也是JSF的首席设计师。

总之,JSF是一项可信赖的标准技术,能极大地促进J2EE应用的GUI开发。JSF在开发人员当中的流行,使之成为Developer.com当之无愧的Framework of the Year赢家。

3. Sun发布Java Studio Creator 2

JSF从设计上就是面向工具的,因此,工具的支持,对JSF的推广和应用尤为重要。Sun为此作出了不懈的努力,2006年元月26日,Sun的JSF集成开发环境Java Studio Creator 2在人们的长久期待中,终于推出了。Sun对JSC2的发布非常慎重,因此,JSC2经历了一个非常长的beta测试阶段。JSC是一个快速的、可视化的开发环境,用于开发基于JSF的Web应用,同时支持portlet的开发。JSC2是建立在NetBeans平台之上的,其特征包括带Ajax功能的JSF组件,方便的数据库访问,流线型的应用模式等。

可视化编程是RAD的核心。在JSC2中,几乎所有的编程工作,都被简化为JSF组件的拖放,从组件面板中拖放一个JSF组件到网页上,JSC2自动生成所有代码。页面导航设计也是可视化的,页面导航路径在一个导航图中直观显示,通过JSC2的页面导航器,导航路径可以在页面之间自由拖放。SQL查询设计也支持可视化,从数据库表中选择的查询字段,可以图形、表格或文本的方式呈现。JSC为CSS格式表单提供图形化接口,改变页面的外观非常容易,而页面上JSF组件的显示格式可以通过一个可视化的格式编辑器方便地调整。JSC2还有一个HTML页面导入功能,允许程序员从一个已有的HTML网页中导入外观格式。

JSC2是一个完整的集成开发环境,包含了Web应用开发所需要的所有系统和模块,涵盖从安装、开发到部署的全过程。JSC2的下载版本中,带有全套JSF组件,Sun Application Server应用服务器,一个带范例库的Java 数据库。JSC2可以访问所有主流的数据库,并与流行的版本控制软件有着良好的集成。JSC2是免费的,而且,在Sun Developer Network(SDN)注册一个免费的会员资格后,还可以从开发社区中获得大量的技术支持。

JSC2的数据访问功能值得称道。数据访问是几乎所有Web应用的基础,在JSC2中,通过简单的拖放就可以从关系数据库中获取数据,无需编写任何代码。表的设计、查询的设计也是可视化的。组件可以绑定到很多数据源,例如,web service的method或EJB的method都可以被拖放的组件上。运行时,应用会自动建立和数据源的连接,查询、数据显示等都会按预期的方式工作。

流线型的应用模式是JSC2的一项高级特征。JSC2的应用事件处理生命周期,只有4个生命周期方法。由于模式是事件驱动的,只需关注主要的事件,例如页面即将被显示,或者数据以从交易或操作中返回。这样做是为了简化web应用开发,程序员无需掌握复杂的JSF请求处理生命周期的全部细节,将业务逻辑代码放入合适的事件处理例程中即可

bufegar 2007-3-16 09:19

4. Exadel实现JSF对Ajax的支持

Exadel是一家软件开发、服务和技术支持公司,主要业务是为企业应用提供解决方案。这家公司很幸运地抓住了JSF的时机,开发支持可视化编程的JSF工具,这两年知名度得以迅速提升。Exadel的产品线中,有一款称为Exadel Studio Pro的Web应用开发工具集,支持JSF、Struts、Hibernate和Spring等许多框架。

2006年元月的最后一天,Exadel发布了Exdel Studio Pro的新版本,3.5版,这个版本最吸引人的特征是,它支持Ajax。Ajax(Asynchronous JavaScript And XML)是一项用于开发交互式Web应用的Web开发技术,正在受到全球开发社区的关注。Ajax应用依赖JavaScript,不可避免地要在客户端运行复杂的JavaScript代码,因此,开发人员需要一个框架,协助他们高效地编写支持Ajax的Web应用。

Excadel认为,Ajax功能丰富,但工具一直是Ajax应用的最大障碍,一旦工具的障碍被突破,Ajax将很快得到大面积的普及,并且发挥其作为富互联网应用技术的全部潜力,所以,支持Ajax的开发工具越多,越有利于Ajax的发展。利用Exadel Studio Pro 3.5对Ajax的支持,开发团队可以在一个全集成的开发环境中编写Ajax应用,从而提高开发人员的效率,增加产品的可靠性,加快整个应用开发周期。

Exadel是基于Eclipse的企业级Web应用开发环境,充分利用了开源、J2EE和Ajax技术带来的好处。Exadel提供可视化和面向代码的两种编程手段,支持包括JSF、Struts、Hibernate、MyFaces、Oracle ADF、Shale、Spring 等在内的多种开源技术,允许程序员在一个单独的集成开发环境中,同时与多个框架协同工作。

Exadel Studio Pro 3.5对Ajax的支持体现在几个方面。Exadel Studio Pro 3.5有一个可视化的页面编辑器,编辑器带有一个组件面板,开发人员可以通过面板选取Ajax组件。当开发人员在组件面板上拖放一个Ajax组件到页面上时,编辑器会自动启动一个高级向导,指导开发人员设置组件在页面上的用法,而且,当直接编辑Ajax组件的源代码时,代码辅助(code assist)功能可用。

5. Apache推出Myfaces Core 1.1.3和Tomahawk 1.1.2

Apache基金是Java开源领域最著名的参与者,有着众多脍炙人口的力作,包括Tomcat、Struts、Tapestry、Shale以及Jakarta Commons系列等。Myfaces是Apache一个开源的JSF实现(Implementation),在JSF社区如雷贯耳,推出时间很早,几乎与JSF的规范同步发布。这是因为Apache是JSF专家委员会的成员之一,尽管最初Apache对JSF的规范请求投了反对票,但专家委员会的身份让Apache在JSF实现(Implementation)上占了先机。

Apache的Myfaces项目是由两个子项目组成的,一个子项目称为Myfaces Core,是JSF规范的一个具体实现(Implementation),符合JSR-127的要求,并且通过了Sun的TCK,因此与规范100%兼容。另一个子项目称为Myfaces Tomahawk,是一组用户自定义的和扩展的标准组件。2006年5月9日,Apache同时发布了Myfaces两个子项目的新版本,分别是Myfaces Core 1.1.3和Myfaces Tomahawk 1.1.2。

Myfaces Core是JSF的标准实现,与Sun的参考实现RI大同小异,事实上,JSF的所有标准实现都是类似的。Myfaces对JSF的贡献表现在Tomahawk。在Myfaces Tomahawk中,Apache对所有的JSF标准组件进行了扩展,并且提供了一组附加的高级组件。

对JSF标准组件的扩展包括几个方面,例如,Web应用中常常需要对不同的角色显示不同的页面内容,Tomahawk通过增加enabledOnUserRole和visibleOnUserRole两个属性来达到这一目的;又如,Tomahawk还扩展了一个称为displayValueOnly的属性,用于控制文本框的可读可写特性;Data Table是JSF最有价值的组件之一,Toamhawk的扩展Data Table比标准Data Table功能更强大,可以对Data Table按列排序,按列分组,并且允许单独为每个列设置列头和列尾。

Tomahawk的附加高级组件非常丰富,有四、五十种之多,而且还在不断增加。值得一提的是Tomahawk的文件上传组件。文件上传是Web应用中最常见的任务之一,可是,不管是Servlet、JSP还是JSF,都不直接支持文件上传操作,因此,网络上文件上传的解决方案满天飞。将复杂的文件上传编程进行了极大的简化,只需在tag中设置几个属性,一切就都成为现实了。

另一个独具特色的附加高级组件是Tree组件,最新版本称为Tree2组件。这个组件可以将一个后台bean的数据以树的方式展示在网页上,节点的外观可以根据其类型进行控制,包括文本、图像和checkbox等在内的几乎任何JSF组件都可以被包含在节点之内,而且节点的展开状态既可以在客户端控制,也可以在服务器端控制。

Apache是JSF曾经的反对者,现在成了JSF最积极的推动力量。JSF的魅力由此可见一斑。

6. Sun推出JavaServer Faces 1.2

2006年年终,当日历快要翻过一半时,JSF社区期待已久的JavaServer Faces新版本,终于闪亮登场。5月11日,Sun的JSF专家组完成了最后的文档修订,JavaServer Faces 1.2规范的最终版本,出现在Sun公司网站的下载页面上。10天后的5月20日,java.net宣布,作为GlassFish开源项目一部分的JSF参考实现RI 1.2正式发布。大批JSF爱好者纷纷下载最新的JSF规范和参考实现,期待着旧版本中困扰他们的问题,在新版本中得到解决。

与JSP的混合,一直是JSF中存在的最大问题。在JSF1.2之前,当在一个页面上混合JSF和JSP标签时,会出现一些非预期的页面行为。例如,在某些情形下,页面上的信息会以不正确的顺序显示出来,而在另一些情形下,有些组件在首次访问页面时不可见,只有当再次访问时才出现。导致这些异常结果的原因,是JSF和JSP大相径庭的请求处理生命周期。

JSF1.2的专家组,将解决上述问题列为新版本的首要目标。为此,他们作出了将EL独立出来的重大决定。EL是表达式语言,在JSF和JSP页面上均有采用,是联系页面上动态信息和后台JavaBeans属性的纽带。由于JSF和JSP请求处理生命周期的差异,JSF上的EL和JSP上的EL虽然有着相同的概念,但格式和处理逻辑不尽相同。

从JSF1.2开始,EL已经独立出来,不再是JSF的一部分,也不再是JSP的一部分,EL有了自己的规范,成为一个统一的EL。事实上,EL的应用领域并不局限于JSF和JSP,也许我们将来会在其他领域看到EL的应用。

对于开发人员来说,JSF1.2所带来的最大好处是,他们可以在一定的规则之下,随心所欲地混合JSF和JSP的标签了。这对于JSF的发展至关重要,因为JSP的用户基础非常庞大,虽然“纯”的JSF页面完全可以适用于绝大部分的web应用,但开发人员与JSP藕断丝连的关系,使得他们无法立即割舍JSP,所以,很多web应用将会是JSF和JSP的混合体。

bufegar 2007-3-16 09:20

JSF 2006年大事记下篇(1)

【导读】2006年下半年度的JSF精彩异常。先是ICEsoft发布ICEfaces企业版,接着Exadel的Ajax4jsf为JSF开了Ajax框架之先河,然后Exadel携RichFaces加入JSF组件库竞赛,最后是JBoss推出框架粘合剂Seam 1.1,为JSF 2006划上了圆满的句号。

请参看:JSF 2006大事记上篇

1. ICEsoft发布ICEfaces企业版

ICEsoft是一家动态Web应用开发商,Ajax和Web 2.0的概念出现之前,ICEsoft已经在动态Web领域积累了丰富的经验。ICEsoft的著名产品是ICEfaces,这是集ICEsoft丰富的应用经验和ISF技术于一体的一个Java软件产品。

2006年7月19日,时间刚刚跨过2006年年中,ICEsoft宣布,其ICEfaces的企业版1.0正式发布。在当时,这是Java EE下唯一的Ajax集成应用框架。ICEfaces扩展了JSF,允许程序员以纯Java的方式开发瘦客户端的富互联网应用。ICEsoft在ICEfaces的开发上投入了相当大的财力,ICEfaces的软件规模累计达到了25人年之巨。凭借如此大规模的投入,ICEfaces成为唯一一个基于标准的Ajax解决方案。利用ICEfaces,开发人员可以实现Ajax的功能,但无须编写任何JavaScript代码。

ICEfaces最独特的优势,是它以瘦客户端的方式开发富互联网应用。ICEfaces是通过将应用逻辑完全转移到服务器端来实现这一点的。在ICEfaces下,应用逻辑完全驻留在服务器上,对表示层的变更,以一种增量的方式提交给浏览器端,由一个轻量级的Ajax“桥”负责变更的组装。这使得开发人员可以按照自己的意愿开发富互联网应用,同时避免大量的JavaScript代码,保持客户端的“瘦身”。

ICEfaces为JSF披上Ajax的时尚外衣,却依然保持客户端的轻灵。这与其他JSF的Ajax解决方案完全不同。通常,富互联网应用所要求的Ajax特性,是通过浏览器端的JavaScript来达到的,随着用户界面复杂度的增加,JavaScript的代码越来越长,最终酿成开发、测试和维护的恶梦。将大量应用逻辑压在JavaScript身上,会带来很多不利的结果,比如增加页面的加载时间,降低页面对搜索引擎的友好性,并且可能引发源代码的安全问题等。

除此以外,ICEfaces还支持Ajax的“推”技术。所谓Ajax推技术,是指服务器端将表示层的变化直接推向客户端。服务器端在与各种各样的后端数据服务交互后,获得表示层应如何变化的信息,利用推技术,服务器端可以异步发送动态数据给用户界面,而不需用户的介入。ICEfaces基于推技术的Ajax功能尤其强大,代表了动态web应用的一个新高度,是其他Ajax方案所不能达到的。

Ajax推技术是ICEfaces的标准特征,可以在Java应用逻辑中直接使用,与某些基于JavaScript“拉”技术的Ajax框架相比,推技术更高效,也更模型化。ICEfaces的推技术使得web用户能够动态地、实时地获得应用的最新数据和状态,为建立web环境下多用户协作的应用开辟了道路,而这在以前是无法用一个轻量级的web框架来做到的。

ICEfaces企业版1.0是一个商业化版本,用户必须支付高达1500美元的费用才能获得一个CPU的授权,否则就只能使用免费的ICEfaces社区版,当然,功能要大打折扣。不过,ICEsoft很快认识到,开源无疑是产品和技术推广的最有效的方式之一,因此,仅仅四个月后,ICEsoft在推出ICEfaces 1.5版的时候,终于决定加入开源的行列了。ICEsoft的这一举动,赢得了包括Sun在内的业界人士和社区的赞赏,现在,JSF开发者又多了一个不错的选择。

2. Ajax4jsf开Ajax框架之先河

作为JSF竞赛的著名“选手”,Exadel时有创新之举。2006年8月7日,Exadel公司网站上,一则消息在JSF社区中激起层层波浪:JSF的开源Ajax框架Ajax4jsf 1.0版诞生了。

促使Exadel作出这一举动的原因有三。第一,随着Web 2.0概念的热炒,Ajax甚嚣尘上,连向以老大自居的Sun都抵挡不住Ajax的诱惑,Exadel自然也未能免俗;第二,Exadel一直是JSF的支持者,早就追随JSF的左右,对JSF的理念深信不疑,十分看好JSF的未来;第三,开源是一场声势浩大的运动,开源已经成为一种潮流,不管Exadel愿意不愿意,开源都是不可逆转的趋势,而且,不少开源的先驱已经摘到胜利的果实,Exadel不想失去这个机会。一句话,Ajax4jsf是Exadel在开源背景下,对Web2.0挑战作出的回应。

Ajax4jsf是一个与JSF规范百分之百兼容的组件库,集Ajax的时尚与JSF的强大于一身。Ajax4jsf的目标是将Ajax和JSF两股力量拧成一股绳,使之成为一个功能强大的软件包,充分发挥JSF的优势(例如JSF的服务器端组件等),开发现代的、交互式的、符合Web2.0概念的富互联网应用。Ajax4jsf是一个开放的框架,继承了JSF的开放精神,追求与不同的JSF实现(Implementation)的无缝集成,同时最大限度地兼容第三放JSF组件库。Ajax4jsf试图通过提供对JSF诸技术(例如Facelets和JSF扩展等)的内在支持,建立一个以JSF为核心的框架系统环境。

Ajax4jsf的工作原理是这样的。在客户端,浏览器加载一个称为Ajax引擎的JavaScript模块,这个模块之上,才是用户看到的真正的JSF页面。当用户在JSF页面上执行某种操作(例如点击鼠标)时,会触发一个JavaScript事件,页面将这个JavaScript事件发给Ajax引擎。Ajax引擎对JavaScript事件进行分析,并根据分析结果形成相应的请求,然后将请求发往服务器端。

在服务器端,来自浏览器Ajax引擎的请求,没有直接交给JSF框架,而是交给了Ajax4jsf框架。Ajax4jsf框架前置于JSF框架,所有来自Ajax引擎的请求,都由Ajax4jsf框架预处理。Ajax4jsf框架由几个模块组成,其工作原理借鉴了JSF的一些概念,是Exadel的核心技术所在。经过Ajax4jsf框架预处理后的请求,最终会发给JSF框架,在这里,请求按JSF的常规经历“JSF请求处理生命周期”的若干阶段后,形成响应,准备发给客户端浏览器。

与请求一样,响应也不是在服务器和浏览器之间直接传递的,同样需要经过Ajax4jsf框架和Ajax引擎的介入,只不过,这次的顺序是相反的。响应离开JSF框架之后,进入Ajax4jsf框架,在Ajax4jsf框架中接受预处理,然后,再经由互联网发送到客户端浏览器。浏览器中,Ajax引擎负责接收来自服务器的响应,Ajax引擎对响应进行分析,从中获得页面更新的信息,并向浏览器发出更新JSF页面的指令。

从Ajax4jsf的工作原理可以看出,Ajax4jsf与JSF的生命周期是有机结合的。与其他Ajax框架只利用managed bean机制不同的是,Ajax4jsf在Ajax请求-响应周期中,可以利用动作监听器、值改变监听器,并且能够调用服务器端验证器和转换器。

Ajax4jsf的另一个特点是,支持页面级的Ajax特性。通常的Ajax支持局限于组件级,而Ajax4jsf的页面级Ajax特性支持,允许指定页面上的一个区域,当一个客户端事件调用一个Ajax请求,Ajax请求更新服务器端数据后,这个指定的页面区域将被同步刷新。利用Ajax4jsf的这一特性,现有的JSF应用可以非常容易地获得Ajax的能力。

Ajax4jsf的其他特性,还包括允许开发自己的内置Ajax功能的JSF组件,能将图像、JavaScript代码和CSS格式表单等资源文件打包在Jar文件中以便于管理,可以动态地生成图像,支持“换肤”功能等。Exadel将Ajax4jsf视为企业应对web 2.0挑战最锋利的武器,对Ajax4jsf寄予厚望。

bufegar 2007-3-16 09:20

JSF 2006年大事记下篇(2)

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一定不会令广大程序员失望。

(责任编辑 火凤凰 [email]sunsj@51cto.com[/email]  TEL:(010)68476636-8007)
页: [1]
查看完整版本: JSF 2006年大事记上篇(1)(转自51cto.com)