JSP像烏云般擋住了JSF的光芒
JSP的成功,對Sun來說,是JSF推廣之路上的攔路虎。JSP由于簡單易學,吸引了大批忠實的追隨者,這直接導致了從JSP向JSF的遷移,變得積重難返。雖然Sun早就意識到JSP缺陷在客戶端GUI上的,并提出了制訂JSF規范的設想,但是,Sun浪費了太多的時間,錯過了最好的機會。JSP重壓之下的JSF,能否像Sun所期望的那樣,成為JSP的替代者呢?
1. JSP,Java Web程序員的港灣
提到JSF,就不得不提JSP。和JSF只有一字之差的JSP,是JSF的前輩,它龐大的影子,籠罩著JSF弱小的身軀。Java Web程序員對于JSP技術的感情,與游子對于故鄉的感情同樣的深厚。他們生于JSP,長于JSP,當翅膀漸硬,他們又從JSP出發,在Java Web框架的都市里流浪,沉湎于Java Web框架的燈紅酒綠中。幸運者尋覓到了快樂和驚喜,選定一個框架安居樂業,還不忘時時回JSP那里走走看看;而不幸者在收獲了痛苦和失望后,帶著空空的行囊,不約而同地邁上通往JSP的回家之路。JSP是上帝的寵兒,出生于人們呼喚動態Web網頁之時,成長于Internet應用開花結果之際,現在,它終于建立了自己的王國。不管這個王國是耗費了多少程序員的青春才建立起來的,它的龐大是無可爭議的事實。這就是JSP,不是最完美的,但肯定是最強大的。
在網上看到過一篇文章,作者用Struts做Java Web框架,后來隨著應用規模的擴大,發現Struts不堪重負,于是作者很煩惱,煩惱以后作出了一個決定,放棄任何所謂的框架,重新投入JSP和JavaBeans的懷抱,JSP的成功可見一斑。就如潘美辰在《我想要有個家》中唱到的那樣,JSP是“一個不需要華麗的地方”,在程序員“疲倦的時候”,他們“會想到它”;JSP也是“一個不需要多大的地方”,在程序員“受驚嚇的時候”,他們“才不會害怕”。JSP的平易近人,讓很多程序員一見鐘情,即使是Java Web的新手,也可以在十分鐘內寫出自己編程生涯中的第一個動態網頁,而由此帶來的巨大的成就感,就像鴉片一樣,不斷滿足程序員那太需要滿足了的自信心,并讓他們慢慢變成了JSP忠心不二的奴隸。
2. 在JSP缺陷的陰影之下,JSF能否茁壯成長
我不想在這里批判JSP,在計算機技術發展的道路上,最完美的,往往不是最強大的,這幾乎已經成為規律了。Unix之于DOS,Macintosh之于 Windows,Telephone之于VOIP,CDMA之于GSM等等,這樣的例子實在太多。存在的就是合理的,優勝劣汰不以完美與否為標準,JSP是程序員選擇的結果,盡管程序員為此付出了代價。于是乎,在世界的各個角落,從遙遠的大洋彼岸,到近在咫尺的我的隔壁,到處可見勤奮的程序員們在JSP的海洋里奮力劃水。一樣的姿勢,一樣的速度,一樣的氣喘如牛,日復一日年復一年地重復著別人已經走過的路。旁邊不時掠過的聲聲汽笛他們充耳不聞,其實只要一伸手,就能搭上駛往成功彼岸的JSF快艇,但他們沒有這樣做。是因為他們很忙,忙得騰不出手來?還是因為JSP洪亮的嗓音,掩蓋了JSF的召喚?只有他們自己知道。
拋開感情因素,用理智的眼光去比較,JSP缺陷和JSF的優勢,一樣地明顯。事實上,JSF的誕生,就是為了彌補JSP缺陷,可惜,JSF錯過了最好的時機。Sun在2001年提出了制訂JSF規范的設想時,就已經意識到了JSP在GUI方面存在的嚴重問題,因此,在JSR(Java Specification Request,Java規范請求)#127中,Sun開門見山地指出,Servlet/JSP沒有定義任何針對客戶端GUI的應用接口,并且將提供一個標準的GUI組件框架設定為JSF規范的第一目標。那時JSP出道才兩年,未成燎原之勢,如果JSF規范的出臺沒有浪費那么多的時間,也許JSF早已取代JSP了。
可惜,現在對JSF來說,多少有些晚了。JSP的用戶逐年增加,去年據說增長率達到了驚人的94%!有這樣一個老前輩在前面擋著,JSF就像森林中的一顆小樹,只能從JSP的縫隙中分享一些漏下的陽光和雨露。手心手背都是肉,JSP和JSF,非此即彼、你死我活的爭斗,當然不是Sun想要的,Sun所期望的,是JSF在Java Web世界里,發動一場針對JSP的和平演變。
【編輯推薦】