拋開JSP,直接從JSF入手
曾幾何時,學Java Web編程必從JSP開始,成了Java Web程序員們公認的定律。好比少林寺的武僧,習武之初一定先蹲幾年馬步一樣。在論壇上,我經常看到“過來人”以先知的口吻教導初來乍到的菜鳥,想搞Java Web編程的話,必須先從JSP入手,然後再研究某某框架雲雲。兩年前,這是正確的,但現在,這樣的教條已經過時了。
1840年的第一次鴉片戰爭,當英國人敲開清政府閉關鎖國的大門時,據我所知,少林寺的武僧恐怕沒有幫上什麼忙吧。縱然武藝高強,下盤穩固,可是在槍炮面前,血肉之軀如何抵擋得了呢?技術在進步,時代不同了,現在,JSP已經不是 Java Web的必經之路了,如果你是初學者,別聽信那些“過來人”三年前的經驗,直接以JSF作為你Java Web的跳板,站在巨人的肩膀上,也許用不了多久,你就能超越曾經教導過你的前輩了。
這不是作者信口雌黃,嘩眾取寵,從JSF入手,是你不甘人後、敢為人先的絕佳機會。你沒有必要再為什麼JSP費神了。如果說三年前JSF剛剛誕生時,稚嫩的JSF1.0尚需JSP扶上馬送一程、尚需借助JSP的名義和程序員們“混個臉熟”的話,那麼,三年後的今天,當JSF已經發展到1.2版本時,JSP也許到了該退休的時候了。即便JSP生命力頑強,還能撐幾年,發揮點余熱,也已經不值得你費九牛二虎之力,苦苦追隨了。在我看來,JSP更適合作為一種底層技術,退到幕後,像Servlet一樣,默默奉獻,把發展的空間讓給更能提高程序員生產力的後起之秀。
不必擔心有人說你眼高手低,好高骛遠,JSF是一個新的框架,它並不需要你有深厚的技術底子,你只需知道組件、事件、JavaBean這些基本概念,就可以放手去干了。玩過網絡游戲的人都知道,在游戲中,裝備有著舉足輕重的作用。同樣,作為一個程序員,選擇一項領先的編程技術,對於你的生產力也是至關重要的。
從JSP開始學習Java Web編程,就像笨人玩網絡游戲,把自己當成一架機器,在網吧裡無休止地打怪練級,只有苦勞,沒有功勞;聰明的玩家花錢買一個裝備,瞬間就把自己送入強手的行列。JSF就是這樣的裝備,能夠讓你馬上成為Java Web編程的熟手,而且,JSF還是免費的。
JSF對程序員技能的要求
初學Java Web編程的程序員,能否跳過JSP,從JSF入手,只要看看JSF對於程序員的技能有什麼基本要求就明白了。前文提到過,JSF是一個Java Web用戶界面的框架,JSF的設計目標是填平桌面編程和Java Web編程之間的鴻溝,模糊桌面編程和Web編程的界限,讓有著桌面編程經驗的程序員,能夠快速地進入Web編程的領域,並以他們熟悉的方式編寫代碼,用他們慣常的思維考慮問題,甚至用完全類似的工具設計界面、調試程序。
事實上,經過這麼多年的發展,桌面編程不論是在Java下還是在C++下,已經沒有什麼區別了,所以,只要你有過桌面編程的經歷,不管是Java的還是C++的,你都可以借助JSF,立即著手編寫功能強大的Java Web程序。
所以,有限的桌面編程經驗,就是JSF對程序員的要求。概括起來,所謂桌面編程經驗,其實就是:
第一,理解UI組件的概念,知道如何拖放組件到界面上,如何設置組件的屬性;
第二,理解事件和事件驅動,知道如何編寫事件例程,對事件作出響應;
第三,掌握面向對象的基本知識,以便理解JavaBean的技術(這其實很簡單,只是符合一定規范的Java類而已);
第四,熟悉HTTP協議的一些基礎知識,為你進入JSF高級編程作好准備。
這就是全部。對於一般的Java Web編程,JSF要求具備這些技能就足夠了,至於Web應用和桌面應用的不同之處,JSF會為你處理,無需你費心。站在更高的高度,用同樣的眼光看待桌面應用和Web應用,是JSF領先於其他Java Web框架的根源所在。