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请求处理生命周期的全部细节,将业务逻辑代码放入合适的事件处理例程中即可。