三、谁会从众多Java Web框架中脱颖而出,成为最终的主宰
从种种迹象可以看出,在未来几年内,JSF与Struts将展开Java Web框架的终极争夺战。 它们之间的争斗可能有两个结果。一是无论是Struts还是JSF获胜,Java Web层都将结束混战的局面,这对Java Web开发的标准化是非常有利的,并有助于巩固Java在B/S界的地位;二是Struts和JSF平分天下,必然从整体上削弱Java在B/S界的竞争力,并将进一步被ROR、ASP.NET、PHP所蚕食。
不过我觉得Struts和JSF走向融合的可能性会更大一些。我们可以看到这样一个非常有趣的事实,Apache Jakarta Struts框架的作者Craig McClanahan同时也是JSF项目的两个领导人之一,这似乎保证了未来两种框架之间的易迁移性;那么再从应用开发的角度来看的话,Struts和JSF两种框架也有很多相似之处,比如就像Struts框架一样,JSF也充分遵循MVC设计模式,也定义了一整套JSP标记库来生成与JavaBean属性绑定的HTML元素,也定义了相应的组件导航模型等等,接下来,JSF这个即将出台的新标准将会成为J2EE的一部分,而目前业界所有的J2EE应用服务器,不论是免费的还是商用的,以及相应的开发工具都会正式公开对于JSF的支持。从以上两点来看我们有理由相信,在不久的未来,把已有的Struts应用转向JSF将不会存在很大的困难。
除了这些基于Java的Web技术互相争斗外,也许它们还面临着很多共同的敌人。如WPF和Apollo,但这两种技术有一个缺点,就是它们都需要额外安装客户端的runtime,Internet应用使用这些技术目前还不现实(因为你无法去控制客户端)。目前比较现实的是用Flex开发一些Flash组件,暴露出JavaScript调用的接口可以被Ajax应用来调用和配置。一些复杂的组件如DataGrid、各种样式的Chart等等都是Flash的强项。Ajax可以与Flash很好地结合在一起,形成一种互补的关系。
不管是Java Web技术,还是非Java Web技术。最理想是并不是这些庞大的构架体系。而是一套完整和开放的Widget,不论是用Javascript实现的,还是未来浏览器直接用标签等方式支持的,都可以象VB、Delphi一样很容易地将Widget组合成应用程序。这些Widget可能包括:Combobox、Grid、Treeview、Listview等等。只有象这样的Web体系,才可能以压倒一切的气势独霸Web王国,成为新的主宰。