现在的位置: 首页 > 综合 > 正文

JSF 2006年大事记上篇

2013年10月26日 ⁄ 综合 ⁄ 共 5976字 ⁄ 字号 评论关闭
JSF 2006年大事记上篇
http://www.csai.cn 作者:IT168 来源:麻地河 2007年6月6日 发表评论 进入社区

  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),现在这项技术得到了大多数主要厂商的支持,包括IBMOracle,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请求处理生命周期的全部细节,将业务逻辑代码放入合适的事件处理例程中即可。

  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的混合体。

抱歉!评论已关闭.