Java Server Faces 简称JSF,是一种面向组件和事件驱动模型的WEB开发技术。JSF的诞生还要追溯到2001年。在2001年5月,Sun制定了一个用户界面框架的规范JSR#127。
而JSF 规范的1.0到2004年3月才得以面世。直到JAVA EE 5的发布,JSF推出1.2版本并作为JAVA EE 5的一部分同时发布。历经5年的风雨,JSF现在成为了JAVA企业应用规范的一部份。
从技术上来看JSF是非常先进的,提供了很多复杂的组件支持类似Spring的依赖注入功能。页面流程控制也通过Faces-config.XML来配 置,而不是写死在代码里。这有点与Struts类似。同时像SUN,Oracle,Boland,IBM等公司都为JSF提供了开发环境,Sun的 Java Studio Creator2 和Oracle的Oralce Jdeveloper 10g都是免费的JSF开发工具,像Eclipse也有相应的插件提供对JSF的支持。JSF技术也同时得到了许多厂商的支持,如Sun的JSF WEB UI,IBM的JSF extension,Oracle的ADF Faces.还有许多开源项目如My Faces都提供了对JSF的支持和扩展。
这样看来,JSF成为了JAVA EE的标准,又得到了众多厂商和组织的支持,那么JSF应该是前途一片光明啦?
何以见得,JSF错过了它的最好发展时期。Sun其实很早之前就想简化JSP的开发,用一种新的技术来取代JSP。从而简化整个WEB层的开发。于 是在2001年就开始制定了JSF的规范,但是由于SUN的官僚作风及商业推广的失败,JSF一直未能走向前台。如果SUN能在2002年或2003年, 在JSP最红火的时候全力推出JSF。取名为JSP 2.0或JSP 3.0。而不是一意孤行的取名为JSF,那么现在JAVA的WEB开发早已经是面向组件和基于事件驱动了。
成熟和稳定方面
JSP的确是一种非常成熟和稳定的技术,就是因为JSP太成熟了,所以才导致了JSF的发展缓慢。世界上有太多采用JSP技术的成功案例,SUN非要把 JSF变成一个新生儿,谁也不愿意去冒这个风险。虽然采用JSP技术进行WEB开发是复杂的,而且开发周期要长,但是它是稳定并且成熟的WEB技术。 JSP已经占据了大量的市场份额,如果JSF要想取代JSP,那么JSF就必须有成功的案例来证明JSF能像JSP那样可靠和稳定。
厂商的支持方面
厂商对JSF的支持远远不够。从JSF1.0,到JSF1.2的发布并成为JAVA EE的标准,经历了近五年的时间。各个厂商一直对JSF持观望的态度,其实主要还是取决于SUN。如果SUN在早期就把JSF作为JAVA EE的标准,那么现在JSF已经是遍地开花了。JSF的命运从一开始就像EJB,在实验室时呆了5年之久,要把它定制成一个大而全的规范是不可能的,任何 技术都应该听取开发人员的意见,EJB的失败已经充分的证明了在办公室写出的规范并不是开发人员所需要的。
虽然IBM,Oracle等厂商现在都已经提供了对JSF的支持,但是他们提供的JSF组件库都非常有限,而且有些组件是已经过时的组件。同ASP.NET 2.0相比,各厂商对JSF的支持远远不够,这又怎么能够吸引开发者和企业选择JSF呢?同时,ASP.NET 2.0定义的页面的生命周期要比JSF灵活及有用得多。而JSF的生命周期则显得生硬和呆板。
ASP.NET的成功离不开VS 2003和VS 2005这些优秀的IDE开发工具的支持。虽然有Sun的Java Studio Creator2 和Oracle的Oralce Jdeveloper 10g免费支持JSF开发,但它们都不是最主流的JAVA 企业应用开发工具。而像目前最主流的ECLIPSE却没有很好的支持JSF的开源免费插件。在开源的大旗下,恐怕很少有人会再去选择收费的开发工具 吧!WEB开发只是JAVA企业应用开发的一部份,而不是全部。希望哪一天能见到Sun或IBM这样的商业公司来为ECLIPSE这些主流IDE开发支持 JSF的插件。其实世面上还有一些专门针对JSF的开发工具,但是我们要知道,JSF仅仅是JAVA企业应用开发的一部份,我们更需要一个成熟的集成开发 环境,如重构,单元测试,甚至整个项目的生命周期管理。我们需要的是在一个主流的成熟的集成开发环境上提供对JSF的支持,而不是那些的专门针对JSF的 单一编辑工具。
Sun商业策略方面
SUN的商业推广策略也是JSF能否成功的关键。SUN不缺技术,但是缺商业推广。JSF迟迟未能成为JAVA EE的标准,延误了JSF的推广。把JSF取名为JSP 3.0都可能对JSF发展更为有利。很多时机被SUN一再错过了,才让JSF在今天显得如此的尴尬。JSF社区的建设及该如何吸引开发人员和企业转向 JSF?SUN的商业推广策略是至关重要的。
天将降大任于斯JSF也!!!虽然WEB开发技术注定要进入面向组件和基于事件驱动的时代,JSF能否拯救WEB的江湖呢?让我们共同拭目以待吧!!
(本文加以整理,转自:http://blog.csdn.net/java_veilman/archive/2008/02/17/2100925.aspx)