JSF“裸体”降临Java Web世界
EJB用自己的悲剧人生警告Sun,不可对新技术的推广掉以轻心,但Sun还是再次犯下同样的错误。与Microsoft和Intel成功的商业推广策略截然不同的是,Sun完全没有估量到,JSP作为一项成功技术的价值和影响力,在JSF的推广上,出现了令人痛心的失误。如果JSF以JSP3.0的名义推出,那么JSF的日子恐怕要比现在好过得多。
1.JSF没有站在JSP巨人的肩膀上
前文说过,EJB是Sun的伤心往事,它用自己的悲剧人生,警告Sun,不论技术也好,商务也好,凡事应该有一个全盘的规划,再也不能想到什么是什么了。一项好的技术,如果不加以适当的推广,最后可能逃脱不了被束之高阁的命运,大把的资金投入,自然也难免竹篮打水一场空。
当然,如何进行商业运作,Sun比我高明得多了,似乎轮不到我在这里说三道四,不过,Java已经不单单属于Sun了,Java已经成为全世界的Java,所以,所有的Java程序员,都有发表自己意见的权利。未必都是真知灼见,但Java世界就是因为有这些不同声音的存在,才显得无比的精彩。
其他的技术我不敢妄加评论,就JSF这项技术而言,Sun的商业策略实在是不敢恭维。在JSP已经深入人心的时候,为什么不继续沿用JavaServerPages的这个如雷贯耳的名称,而要标新立异地推出一个JavaServerFaces的怪物呢?你看人家Microsoft,在ASP流行开来之后,推出ASP.NET,是多么的顺理成章。
暂且不论这两项技术的区别有多大,就冲着似曾相识的名称,Microsoft就让大批的ASP用户,自觉自愿地加入ASP.net的阵营。没有任何抵抗,Microsoft兵不血刃,不费一枪一弹就完成了从ASP向ASP.NET的过渡。
同样的策略Intel也曾使用过。第一代“奔腾”芯片推出后,获得了巨大的成功,“奔腾”一词,一时间名噪天下。Intel看到了这一点,并且立刻明白了该怎么做,所以,当下一代芯片制造出来时,Intel完全没有在命名上费什么脑筋,直接冠以“奔腾II”的名字,马上令一大批“奔腾”的爱好者趋之若骛。此后,“奔腾III”“奔腾IV”,Intel将“奔腾”一词的所有油水都榨干了,才心满意足地构思下一个名字。
相比之下,Sun则完全没有估量到一项成功技术的价值和影响力。令多少对手眼红的JSP背后庞大的用户群,Sun却视若无物,不知道Sun是没有看到这一点呢,还是不屑利用这一优势。
不管怎样,当JSP如日中天时,不知借JSP之势点燃JSF的大火,反而暴殓天物,另起炉灶,Sun简直就是在自毁JSF的前程。也许Sun主观上并不存在这样的故意性,但客观上造成了这样一种局面,也是不可原谅的失误。
2.JSF唯有一切从头再来
如果JSF没有叫做JSF,而是叫做JSP3.0,情形会是如何呢?
可以想见,首先,大批的JSP爱好者会蜂拥而至,庆贺JSP的新版本;然后,一批“牛人”们很快发现,JSP的新版本,引入了他们期待已久的组件模型和事件驱动模式,JSP终于有了和ASP.NET抗衡的资本;接下来,“牛人”们必定奋笔疾书,以超凡的热情四处撒播JSP3.0的种子。
于是,网络上、论坛里,到处充斥着为JSP3.0唱赞歌的文章,JSP3.0成为炙手可热的名词,而Sun专家们借JSP3.0的名义推销的JSF组件模型和事件驱动模式,说不定现在已经成为JavaWeb编程的新贵。
将JSF以JSP3.0的名义发布,绝非戏言,是完全可行的。从技术上来看,JSF是建立在Servlet/JSP基础之上的,和JSP有着天然的联系,将JSF作为JSP3.0的一个崭新的扩充部分,随JSP3.0一起发布,即符合从JSP到JSF的平滑过渡的要求,同时也能满足程序员对于JSP3.0新特征的期待。
实际上,JSF和JSP融合的趋势越来越明显,例如在JSF1.2版本之前,JSP和JSF各有一套独立的表达式语言(EL,ExpressionLanguage),而从JSF1.2开始,这两套不同的表达式语言已经统一为UnifiedEL,并且从JSF和JSP规范中分离出来,自成一体。所以,让JSF搭上JSP的快车,一起前进,其实是很自然的事。