以前研究JSF,之所以觉得其是未来发展方向的一个主要原因就是其组件化的编程思想,可以实现类似C/S的开发模式进行快速、工业级的开发。一方面JSF将许多常用Web组件固化,实现开箱即用,另外一方面通过引入Swing的Event Handling机制,使Web编程更加富有逻辑。
但是,因为现在JSF发展还不是很成熟,在上面提到的第一个优势也变成了一个双刃剑,号称可以提高开发效率,却因为缺少支持、组件库不丰富、扩展复杂而对JSF的进一步发展造成阻碍。当然,很多第三方都开发了自己的符合JSF规范的组件库,比如Apache Myfaces Tomahawk, ICESoft IceFaces等等,也出现了一些技术来对JSF进行补充,比如Facelet,但是真正使用时,也还是会感觉有这样那样的欠缺。
直到我碰到了Google Web Toolket以及G4JSF.
GWT是Google开发的用来让Java开发人员简化界面开发的一个工具集,可以实现用Java语言编写Web界面,以及响应界面上的Event,也就是说,可以采用类似Swing的方式开发自己的组件,而不用像JSF的组件扩展机制那样考虑很复杂的接口细节,比如如何Render Response到客户端等等。
有人说GWT是可以代替JSF的,也常常把GWT与JSF放到一起“PK”,可事实上,GWT与JSF的侧重点是不同的。GWT按照GOOGLE自己的说法,是 Server Agnostic ,也就是其对服务器端的状态是不了解的,而JSF却正是一个服务器端的框架。
所以,在我看来,GWT与JSF是可以很好的互补的:对于JSF来说,GWT可以弥补其组件扩展开发复杂的“短板”,丰富其界面组件;对于GWT来说,JSF也是一个很好的服务器端的补充。 而为这两个“美女”与“俊男”牵线搭桥的,正是G4JSF。
可以预见:一个完美的框架组合会逐渐为人们所接受,那就是:GWT + JSF + G4JSF + Spring + Hibernate.