對話袁紅崗:JSF的優勢及未來發展趨勢

heying1229發表於2007-09-24
對話袁紅崗:JSF的優勢及未來發展趨勢[@more@]JSF,有些人對他有些陌生,有些人對它抱以期望的目光,有些狂熱者甚至預言未來的Java Web主導者,2006年Sun把JSF從幕後推到了前臺,那麼JSF的命運如何呢?真的像人們所說的那樣成為開源框架的終結者嗎?

開源框架的風煙四起,讓我們看到了Java Web世界競爭慘烈,框架時代的來臨已讓開發者感到麻木和疲憊,人們在框架海洋裡穿行不免有些勞累,不知哪種框架才是應用開發中的唯一選擇,經歷過Java開發的人員不得不對.NET的元件,良好的整合工具,快速的開發效率報以羨幕的目光,於是有很多開發人員都提出為什麼Java不能開發出和net具備同樣的功能產品,來改變Java Web世界的混亂格局呢?

那麼作為JCP組織成員,金蝶中介軟體對待JSF又是如何思考的呢?為此記者獨家專訪了在國內Java界有著廣泛聲譽的金蝶首席科學家袁紅崗先生,請他談談JSF的未來的發展。


記者:最近我們也做很多關於JSF方面報導,有人稱JSF是一種過時的技術,也有些人稱為JSF是早晨八九點鐘的太陽,我想請問一下袁總你怎麼看待JSF這種技術和它的未來前景。


袁紅崗:JSF這項技術沒有過時,Sun最近剛剛把JSF納個Java EE5.0規範,只不過一直沒有用起來,開發者對他的這些看法也是正常的,如果從框架的角度的上說他是一個優秀的開發框架,主要缺少的是開發工具,如果與相關的開發工具的結合應該是比較有生命力的,它的前景還是很廣闊的。


記者:剛才袁總談到了開發工具,JSF是一項依賴開發工具很強一種技術,不知道金蝶是否也推出自已的開發工具?


袁紅崗:的確,開發工具的成功,才能說明JSF的成功,有這樣一句話“JSF is designed to tooled”換言之,JSF規範從設計初開始就強調對開發工具的依賴,目前我們JSF開發工具也在逐步的豐富起來,包括Orcale JDeveloper,Sun Java Statio Creator等等,金蝶也同樣提供了基於Eclipse的整合開發環境:Apusic Stutio,透過該工具,能夠給JSF的開發帶來良好的支援,包括:語法加亮、程式碼輔助、斷點調式、視覺化的設計等等。


記者:Apusic Stutio開發工具與其它的JSF開發工具有哪些不同呢?


袁紅崗:一個好的開發工具應該從元件和佈局這些方面入手,從易用,簡化上下功夫,微軟的開發工具就很成功,金蝶的開發工具也是看到微軟的成功,準備借鑑微軟的開發工具模式,JSF才有成功的可能,JSF在概念上和.NET又有很多相似之處,Apusic Studio就是專門為JSF設計的。


記者:現在開源框架眾多,JSF與眾多開源框架相比又有哪些優勢呢?


袁紅崗:現如今的開源框架都是建立在J2EE本身的基礎上的,建立HTTP,HTML底層協議的基礎上,JSF實際上跟底層協議是無關的,它是一種高層的頁面表達方式,它實際上生成不一定是HTML,也可以生成WML,假如HTML這種標記形語言被一種新的描述語言代替的話,JSF技術本身不會被淘汰。


記者:業界說Ajax和JSF融合是一個完美的框架組合,不知袁總怎麼看待這種說法?


袁紅崗:目前JSF+Ajax這種思路,很多公司都有,包括我們金蝶自已在內, Ajax是一種客戶端技術,JSF是伺服器端技術,而且JSF在實現機制上還存在很多缺陷,Ajax在客戶端的優勢正好是JSF的弱勢,這樣兩種形成一種互補的關係,可以相互融合,提升JSF執行效能,同時Apusic JSF技術也對Ajax進行元件支援,簡化Ajax的開發,達到JSF與Ajax的完美融合。


JSF掀起你的蓋頭來

JSF為什麼會受到如此大的親賴,IBM,orcale,包括國內領先的中介軟體廠商金蝶也投以關注目光。那麼它又具有哪些與眾不同的優勢吸引眾商家投懷送抱呢?下面我們就來揭開JSF的神秘面紗。


JSF英文全稱 JavaServer Faces (JSF) 是一種用於構建 Web 應用程式的新標準 Java 框架。它提供了一種以元件為中心來開發 Java Web 使用者介面的方法,從而簡化開發,也是Sun精心打造的一項技術。

JSF優勢之一:UI元件(UI-component)

UI元件(UI-component)一直是桌面程式的專利,web程式中,雖然HTML定義了基本的UI標籤,但要使這些UI標籤像UI元件那樣工作,還需要很多程式碼片斷來處理資料及其表現形式,而且有效地組織這些程式碼片斷使其協調一致也是一件繁瑣的工作。JSF的UI元件是真正意義上的UI元件,能極大地簡化程式設計師的工作,例如,在頁面上放置一個文字輸入框,這個輸入框立即具備了資料填充、介面更新、事件偵聽、動作觸發、有效性檢查和型別轉換的功能。更為重要的是,程式設計師只需根據業務邏輯編寫核心業務程式碼,JSF會保證程式碼在合適的時候被執行,完全不用考慮程式碼與程式碼之間該如何來配合。


JSF優勢之二:事件驅動模式

事件是物件導向方法的重要組成部分,物件之間透過事件進行溝通和交流,使得一個或多個物件能夠對另一個物件的行為作出響應,共同合作去完成一項業務邏輯。通常,編寫Web程式時,程式設計師要為物件之間的溝通設計機制,編寫程式碼。雖然溝通的內容屬於業務邏輯,但溝通的機制顯然與業務沒有太大關係,程式設計師因此為業務邏輯之外的功能浪費了時間。JSF改變了這種狀況。JSF的事件和偵聽模式與大家熟悉的Javabean的事件模式類似,有Java基礎的程式設計師並不需要學習任何新的東西。JSF的UI元件可以產生事件,例如,當頁面上一個文字輸入框的內容被修改時,會發出一個“值改變事件”。另一個物件如果對“值改變事件”感興趣,只需註冊為該物件的偵聽者,並編寫處理例程,即可命令JSF在事件發生時自動呼叫處理例程。JSF做了所有該做的事,留給程式設計師的只有業務邏輯程式碼的編寫。

JSF優勢之三:使用者介面到業務邏輯的直接對映

舉個例子,表單提交是Web程式設計最常見的任務,也是最複雜的任務之一。當使用者在網頁上點選“確定”按鈕時,瀏覽器將生成一個HTTP請求,發往伺服器端的某個Servlet,執行該Servlet的service方法。在service方法中,HTTP請求需要經歷解碼、型別轉換、有效性驗證、狀態儲存、資料更新等環節,處理這些環節的所有細節,對程式設計師來說是沉重的負擔。在JSF下,這些工作的很大一部分都由框架承擔了,在程式設計師看來,這個過程是透明的,使用者介面端的HTTP請求可以直接對映到後端的一個事件處理例程,JSF起到了承前啟後的作用。


JSF優勢之四:程式設計師和網頁設計人員的分工

在JSP中,程式設計師和網頁設計人員的工作有時候是互相交織、無法區分的。這是因為JSP頁面中摻入了網頁設計人員所不熟悉的一些JSP標籤,甚至是晦澀的Java程式碼。要求網頁設計人員理解這些標籤和程式碼是不現實的,不符合分工合作的原則。在JSF中,框架為網頁設計人員提供了一套標準的UI元件,在工具的支援下,可以透過拖放簡單地新增到網頁上,然後設定某些顯示屬性來滿足視覺要求。網頁設計人員不需要知道UI元件背後的複雜程式碼,那是程式設計師的事,而程式設計師也不需要再處理任何與視覺相關的細節,程式設計師所做的只是給UI元件繫結類的屬性或方法。雖然程式設計師和網頁設計人員需要修改同一份檔案,但他們各司其職,各得其所,互不干擾。程式設計師和網頁設計人員工作的明確劃分,是JSF在易用性方面邁出的一大步。



JSF優勢之五:請求處理生命週期的多階段劃分

雖然都是建立在Servlet基礎之上,但JSF的生命週期要比JSP複雜得多。JSP的生命週期非常簡單,頁面被執行時,HTML標記立即被生成了,生命週期隨即結束。而一個完整的JSF請求-處理生命週期被精心規劃為6個階段,典型的JSF請求需要經歷所有階段,某些特殊的請求也可以跳過一些階段。階段的細分,顯然引入了更多的處理,但JSF框架會管理這一切,所以,程式設計師在獲得更多控制能力的同時,工作量並沒有增加。


JSF優勢之六:伴隨工具而生存

JSF帶來了Web程式設計的巨大變革,變革的強烈程度超出了很多工具廠商的預料,以至於現在可供JSF使用的工具非常缺乏。缺乏工具支援的JSF只會令人敬而遠之,因此,JSF在設計之初就為工具廠商預留了用武之地。在為數不多的JSF工具中,sun的Java Studio Creator是一個優秀的開發環境;Borland的Jbuilder在JSF1.1時曾經是非常好用的開發工具,可惜現在對JSF1.2的支援沒有跟上;Eclipse下JSF的外掛很多,但真正支援所見即所得的JSF外掛都是收費的,例如Bea的Workshop for JSF、Exadel的JSF Studio等等;此外,Oracle和IBM也有JSF的開發工具。隨著工具的不斷湧現,用JSF開發Web程式將會越來越方便和快速。


JSF優勢之七:全面的使用者自定義支援

前面提到,JSF將極大地簡化Web程式的開發,作為一個相對複雜的框架,JSF是如何做到這點的呢?原來JSF為程式設計師提供了很多預設的元件和類,通常情況下,JSF的這些預設元件和類足以滿足Web開發的需要了。但是,考慮到在某些應用場合,框架的預設行為也許不符合業務的要求,JSF特別允許程式設計師編寫自己的元件和類,來滿足客戶的特殊需求。例如,程式設計師可以編寫自己的UI元件,甚至可以建立自己的EL直譯器,來支援非標準的EL表達語言。


JSF優勢之八:Web開發的官方標準之一

JSF的1.0版本釋出於2004年2月份,當時是作為一項獨立的Web技術推出的。經過1.1版到現在最新的1.2版,短短的兩年多時間,JSF終於在2006年年中成為Java EE 5的組成部分,上升為Web開發的官方標準之一。Java EE 5最重要的使命就是簡化Java的開發,而JSF無疑為這一使命立下了汗馬功勞。在Web框架層出不窮甚至有些氾濫成災的今天,Sun以JSF來樹立標準,對Java的發展是有益的。Sun在Java領域的領袖地位不容動搖,對於Java程式設計師來說,始終追隨業界領袖的步伐,也許是避免技術落伍的最好方法。 1


JSF能否統一Web開發模式?

在J2EE下一代規範Java EE5.0中,JSF技術被放到了一個非常重要的地位,J2EE社群試圖透過JSF來統一Web應用的開模式與方法, 但是JSF能否擔起Sun所賦予的重任?實現Web開發的統一?

很多開發人士都對JSF不抱樂觀的態度,用過JSF的人都稱JSF是Web開發世界的創舉, JSF可謂牆裡開花,牆外不紅,是什麼原因的造成如此大的反差呢?


1.獲取方式

書是我們獲取知識第一來源,一種技術的火爆程度,我們不用在網上去做任何調查,只要去一下圖書城結果就一目瞭然,關於JSF的書籍簡直是鳳毛麟角,難覓終影,這樣在人們在獲取JSF相關資料,JSF會大打折扣,比較經典《JSF in Action》國內還沒哪家出版社有翻譯動向,證明圖書廠商還沒有對JSF投入太多關注度。


2.中文討論區成熟度不夠

除了圖書方面,討論區的熱度也很重要,開啟JSF官方討論區,對JSF大唱讚歌人大有人在,為什麼國內這種討論卻少之又少呢?一些國內比較知名的討論區中沒有看到JSF的相關技術討論,這樣從影響度上從知識的渴求度上,都限制了JSF前進腳步。


3.Sun商業策略

Sun的商業運作模式一直存在問題,我們在之前曾經預言過如果JSF不叫JSF,而叫JSP3.0那麼現在結果會如何呢?Sun可以不費一兵一卒從而實現JSP到JSF的合理過渡,同時也會有大批的JSP狂熱者迅速的轉向JSF,也可能有些人會認為兩者是不同的兩種技術,但是誰又能說Asp和Asp.net是兩種相同的技術嗎?同樣的策略微軟用的很成功,難道Sun沒有想到嗎?


4.開發工具的支援程度

這次採訪袁總的時候,也提到了JSF依賴開發工具的支援,Sun,IBM,Orcale都提出了對JSF開發工具的支援,但是這些開發工具在簡化開發方面是否做足了功課,寵大、全面、無所不能一直是眾廠商炫耀技術的舞臺,這次Apusic Studio提出了簡化,易用兩方面特性,這點從程式設計師角度出發的開發工具,我們還是值得期待的。


5.擴大影響力

每一種技術都要有忠實狂熱者,同時要讓更多人的來應用和學習,Struts成功就是很好例證,一位著名IT人士曾經說過,“即使公司發生慘絕人寰的人事大變動,產品經理也不必過於驚惶失措,茫茫人海中,有大批的Struts們可供選擇,只需好好考慮好新員工的業務培訓如何開展即可,而對於技術延續性,則不必太過於擔心,這就是Struts 帶來的戰略性優勢,也是Struts在今天技術落後的情況還能一直保持領先地位,這點還是值得反思的,JSF如何在影響上擴大學習者的基層人群,打消企業的後顧之憂,影響高層對JSF企業框架的應用選擇,不知JSF是否做好了準備。


綜上所述只是我的個人觀點,如果JSF能在影響力和擴大人員基數上突破瓶頸,那麼統一Web開發的格局將指日可待。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10172717/viewspace-971703/,如需轉載,請註明出處,否則將追究法律責任。

相關文章