對(duì)話(huà)袁紅崗:JSF的優(yōu)勢(shì)及未來(lái)發(fā)展趨勢(shì)[@more@]JSF,有些人對(duì)他有些陌生,有些人對(duì)它抱以期望的目光,有些狂熱者甚至預(yù)言未來(lái)的Java Web主導(dǎo)者,2006年Sun把JSF從幕后推到了前臺(tái),那么JSF的命運(yùn)如何呢?真的像人們所說(shuō)的那樣成為開(kāi)源框架的終結(jié)者嗎?
開(kāi)源框架的風(fēng)煙四起,讓我們看到了Java Web世界競(jìng)爭(zhēng)慘烈,框架時(shí)代的來(lái)臨已讓開(kāi)發(fā)者感到麻木和疲憊,人們?cè)诳蚣芎Q罄锎┬胁幻庥行﹦诶郏恢姆N框架才是應(yīng)用開(kāi)發(fā)中的唯一選擇,經(jīng)歷過(guò)Java開(kāi)發(fā)的人員不得不對(duì).NET的組件,良好的集成工具,快速的開(kāi)發(fā)效率報(bào)以羨幕的目光,于是有很多開(kāi)發(fā)人員都提出為什么Java不能開(kāi)發(fā)出和net具備同樣的功能產(chǎn)品,來(lái)改變Java Web世界的混亂格局呢?
那么作為JCP組織成員,金蝶中間件對(duì)待JSF又是如何思考的呢?為此記者獨(dú)家專(zhuān)訪(fǎng)了在國(guó)內(nèi)Java界有著廣泛聲譽(yù)的金蝶首席科學(xué)家袁紅崗先生,請(qǐng)他談?wù)凧SF的未來(lái)的發(fā)展。
記者:最近我們也做很多關(guān)于JSF方面報(bào)道,有人稱(chēng)JSF是一種過(guò)時(shí)的技術(shù),也有些人稱(chēng)為JSF是早晨八九點(diǎn)鐘的太陽(yáng),我想請(qǐng)問(wèn)一下袁總你怎么看待JSF這種技術(shù)和它的未來(lái)前景。
袁紅崗:JSF這項(xiàng)技術(shù)沒(méi)有過(guò)時(shí),Sun最近剛剛把JSF納個(gè)Java EE5.0規(guī)范,只不過(guò)一直沒(méi)有用起來(lái),開(kāi)發(fā)者對(duì)他的這些看法也是正常的,如果從框架的角度的上說(shuō)他是一個(gè)優(yōu)秀的開(kāi)發(fā)框架,主要缺少的是開(kāi)發(fā)工具,如果與相關(guān)的開(kāi)發(fā)工具的結(jié)合應(yīng)該是比較有生命力的,它的前景還是很廣闊的。
記者:剛才袁總談到了開(kāi)發(fā)工具,JSF是一項(xiàng)依賴(lài)開(kāi)發(fā)工具很強(qiáng)一種技術(shù),不知道金蝶是否也推出自已的開(kāi)發(fā)工具?
袁紅崗:的確,開(kāi)發(fā)工具的成功,才能說(shuō)明JSF的成功,有這樣一句話(huà)“JSF is designed to tooled”換言之,JSF規(guī)范從設(shè)計(jì)初開(kāi)始就強(qiáng)調(diào)對(duì)開(kāi)發(fā)工具的依賴(lài),目前我們JSF開(kāi)發(fā)工具也在逐步的豐富起來(lái),包括Orcale JDeveloper,Sun Java Statio Creator等等,金蝶也同樣提供了基于Eclipse的集成開(kāi)發(fā)環(huán)境:Apusic Stutio,通過(guò)該工具,能夠給JSF的開(kāi)發(fā)帶來(lái)良好的支持,包括:語(yǔ)法加亮、代碼輔助、斷點(diǎn)調(diào)式、可視化的設(shè)計(jì)等等。
記者:Apusic Stutio開(kāi)發(fā)工具與其它的JSF開(kāi)發(fā)工具有哪些不同呢?
袁紅崗:一個(gè)好的開(kāi)發(fā)工具應(yīng)該從組件和布局這些方面入手,從易用,簡(jiǎn)化上下功夫,微軟的開(kāi)發(fā)工具就很成功,金蝶的開(kāi)發(fā)工具也是看到微軟的成功,準(zhǔn)備借鑒微軟的開(kāi)發(fā)工具模式,JSF才有成功的可能,JSF在概念上和.NET又有很多相似之處,Apusic Studio就是專(zhuān)門(mén)為JSF設(shè)計(jì)的。
記者:現(xiàn)在開(kāi)源框架眾多,JSF與眾多開(kāi)源框架相比又有哪些優(yōu)勢(shì)呢?
袁紅崗:現(xiàn)如今的開(kāi)源框架都是建立在J2EE本身的基礎(chǔ)上的,建立HTTP,HTML底層協(xié)議的基礎(chǔ)上,JSF實(shí)際上跟底層協(xié)議是無(wú)關(guān)的,它是一種高層的頁(yè)面表達(dá)方式,它實(shí)際上生成不一定是HTML,也可以生成WML,假如HTML這種標(biāo)記形語(yǔ)言被一種新的描述語(yǔ)言代替的話(huà),JSF技術(shù)本身不會(huì)被淘汰。
記者:業(yè)界說(shuō)Ajax和JSF融合是一個(gè)完美的框架組合,不知袁總怎么看待這種說(shuō)法?
袁紅崗:目前JSF+Ajax這種思路,很多公司都有,包括我們金蝶自已在內(nèi), Ajax是一種客戶(hù)端技術(shù),JSF是服務(wù)器端技術(shù),而且JSF在實(shí)現(xiàn)機(jī)制上還存在很多缺陷,Ajax在客戶(hù)端的優(yōu)勢(shì)正好是JSF的弱勢(shì),這樣兩種形成一種互補(bǔ)的關(guān)系,可以相互融合,提升JSF運(yùn)行性能,同時(shí)Apusic JSF技術(shù)也對(duì)Ajax進(jìn)行組件支持,簡(jiǎn)化Ajax的開(kāi)發(fā),達(dá)到JSF與Ajax的完美融合。
JSF掀起你的蓋頭來(lái)
JSF為什么會(huì)受到如此大的親賴(lài),IBM,orcale,包括國(guó)內(nèi)領(lǐng)先的中間件廠(chǎng)商金蝶也投以關(guān)注目光。那么它又具有哪些與眾不同的優(yōu)勢(shì)吸引眾商家投懷送抱呢?下面我們就來(lái)揭開(kāi)JSF的神秘面紗。
JSF英文全稱(chēng) JavaServer Faces (JSF) 是一種用于構(gòu)建 Web 應(yīng)用程序的新標(biāo)準(zhǔn) Java 框架。它提供了一種以組件為中心來(lái)開(kāi)發(fā) Java Web 用戶(hù)界面的方法,從而簡(jiǎn)化開(kāi)發(fā),也是Sun精心打造的一項(xiàng)技術(shù)。
JSF優(yōu)勢(shì)之一:UI組件(UI-component)
UI組件(UI-component)一直是桌面程序的專(zhuān)利,web程序中,雖然HTML定義了基本的UI標(biāo)簽,但要使這些UI標(biāo)簽像UI組件那樣工作,還需要很多代碼片斷來(lái)處理數(shù)據(jù)及其表現(xiàn)形式,而且有效地組織這些代碼片斷使其協(xié)調(diào)一致也是一件繁瑣的工作。JSF的UI組件是真正意義上的UI組件,能極大地簡(jiǎn)化程序員的工作,例如,在頁(yè)面上放置一個(gè)文本輸入框,這個(gè)輸入框立即具備了數(shù)據(jù)填充、界面更新、事件偵聽(tīng)、動(dòng)作觸發(fā)、有效性檢查和類(lèi)型轉(zhuǎn)換的功能。更為重要的是,程序員只需根據(jù)業(yè)務(wù)邏輯編寫(xiě)核心業(yè)務(wù)代碼,JSF會(huì)保證代碼在合適的時(shí)候被執(zhí)行,完全不用考慮代碼與代碼之間該如何來(lái)配合。
JSF優(yōu)勢(shì)之二:事件驅(qū)動(dòng)模式
事件是面向?qū)ο蠓椒ǖ闹匾M成部分,對(duì)象之間通過(guò)事件進(jìn)行溝通和交流,使得一個(gè)或多個(gè)對(duì)象能夠?qū)α硪粋€(gè)對(duì)象的行為作出響應(yīng),共同合作去完成一項(xiàng)業(yè)務(wù)邏輯。通常,編寫(xiě)Web程序時(shí),程序員要為對(duì)象之間的溝通設(shè)計(jì)機(jī)制,編寫(xiě)代碼。雖然溝通的內(nèi)容屬于業(yè)務(wù)邏輯,但溝通的機(jī)制顯然與業(yè)務(wù)沒(méi)有太大關(guān)系,程序員因此為業(yè)務(wù)邏輯之外的功能浪費(fèi)了時(shí)間。JSF改變了這種狀況。JSF的事件和偵聽(tīng)模式與大家熟悉的Javabean的事件模式類(lèi)似,有Java基礎(chǔ)的程序員并不需要學(xué)習(xí)任何新的東西。JSF的UI組件可以產(chǎn)生事件,例如,當(dāng)頁(yè)面上一個(gè)文本輸入框的內(nèi)容被修改時(shí),會(huì)發(fā)出一個(gè)“值改變事件”。另一個(gè)對(duì)象如果對(duì)“值改變事件”感興趣,只需注冊(cè)為該對(duì)象的偵聽(tīng)者,并編寫(xiě)處理例程,即可命令JSF在事件發(fā)生時(shí)自動(dòng)調(diào)用處理例程。JSF做了所有該做的事,留給程序員的只有業(yè)務(wù)邏輯代碼的編寫(xiě)。
JSF優(yōu)勢(shì)之三:用戶(hù)界面到業(yè)務(wù)邏輯的直接映射
舉個(gè)例子,表單提交是Web編程最常見(jiàn)的任務(wù),也是最復(fù)雜的任務(wù)之一。當(dāng)用戶(hù)在網(wǎng)頁(yè)上點(diǎn)擊“確定”按鈕時(shí),瀏覽器將生成一個(gè)HTTP請(qǐng)求,發(fā)往服務(wù)器端的某個(gè)Servlet,執(zhí)行該Servlet的service方法。在service方法中,HTTP請(qǐng)求需要經(jīng)歷解碼、類(lèi)型轉(zhuǎn)換、有效性驗(yàn)證、狀態(tài)保存、數(shù)據(jù)更新等環(huán)節(jié),處理這些環(huán)節(jié)的所有細(xì)節(jié),對(duì)程序員來(lái)說(shuō)是沉重的負(fù)擔(dān)。在JSF下,這些工作的很大一部分都由框架承擔(dān)了,在程序員看來(lái),這個(gè)過(guò)程是透明的,用戶(hù)界面端的HTTP請(qǐng)求可以直接映射到后端的一個(gè)事件處理例程,JSF起到了承前啟后的作用。
JSF優(yōu)勢(shì)之四:程序員和網(wǎng)頁(yè)設(shè)計(jì)人員的分工
在JSP中,程序員和網(wǎng)頁(yè)設(shè)計(jì)人員的工作有時(shí)候是互相交織、無(wú)法區(qū)分的。這是因?yàn)镴SP頁(yè)面中摻入了網(wǎng)頁(yè)設(shè)計(jì)人員所不熟悉的一些JSP標(biāo)簽,甚至是晦澀的Java代碼。要求網(wǎng)頁(yè)設(shè)計(jì)人員理解這些標(biāo)簽和代碼是不現(xiàn)實(shí)的,不符合分工合作的原則。在JSF中,框架為網(wǎng)頁(yè)設(shè)計(jì)人員提供了一套標(biāo)準(zhǔn)的UI組件,在工具的支持下,可以通過(guò)拖放簡(jiǎn)單地添加到網(wǎng)頁(yè)上,然后設(shè)置某些顯示屬性來(lái)滿(mǎn)足視覺(jué)要求。網(wǎng)頁(yè)設(shè)計(jì)人員不需要知道UI組件背后的復(fù)雜代碼,那是程序員的事,而程序員也不需要再處理任何與視覺(jué)相關(guān)的細(xì)節(jié),程序員所做的只是給UI組件綁定類(lèi)的屬性或方法。雖然程序員和網(wǎng)頁(yè)設(shè)計(jì)人員需要修改同一份文件,但他們各司其職,各得其所,互不干擾。程序員和網(wǎng)頁(yè)設(shè)計(jì)人員工作的明確劃分,是JSF在易用性方面邁出的一大步。
JSF優(yōu)勢(shì)之五:請(qǐng)求處理生命周期的多階段劃分
雖然都是建立在Servlet基礎(chǔ)之上,但JSF的生命周期要比JSP復(fù)雜得多。JSP的生命周期非常簡(jiǎn)單,頁(yè)面被執(zhí)行時(shí),HTML標(biāo)記立即被生成了,生命周期隨即結(jié)束。而一個(gè)完整的JSF請(qǐng)求-處理生命周期被精心規(guī)劃為6個(gè)階段,典型的JSF請(qǐng)求需要經(jīng)歷所有階段,某些特殊的請(qǐng)求也可以跳過(guò)一些階段。階段的細(xì)分,顯然引入了更多的處理,但JSF框架會(huì)管理這一切,所以,程序員在獲得更多控制能力的同時(shí),工作量并沒(méi)有增加。
JSF優(yōu)勢(shì)之六:伴隨工具而生存
JSF帶來(lái)了Web編程的巨大變革,變革的強(qiáng)烈程度超出了很多工具廠(chǎng)商的預(yù)料,以至于現(xiàn)在可供JSF使用的工具非常缺乏。缺乏工具支持的JSF只會(huì)令人敬而遠(yuǎn)之,因此,JSF在設(shè)計(jì)之初就為工具廠(chǎng)商預(yù)留了用武之地。在為數(shù)不多的JSF工具中,sun的Java Studio Creator是一個(gè)優(yōu)秀的開(kāi)發(fā)環(huán)境;Borland的Jbuilder在JSF1.1時(shí)曾經(jīng)是非常好用的開(kāi)發(fā)工具,可惜現(xiàn)在對(duì)JSF1.2的支持沒(méi)有跟上;Eclipse下JSF的插件很多,但真正支持所見(jiàn)即所得的JSF插件都是收費(fèi)的,例如Bea的Workshop for JSF、Exadel的JSF Studio等等;此外,Oracle和IBM也有JSF的開(kāi)發(fā)工具。隨著工具的不斷涌現(xiàn),用JSF開(kāi)發(fā)Web程序?qū)?huì)越來(lái)越方便和快速。
JSF優(yōu)勢(shì)之七:全面的用戶(hù)自定義支持
前面提到,JSF將極大地簡(jiǎn)化Web程序的開(kāi)發(fā),作為一個(gè)相對(duì)復(fù)雜的框架,JSF是如何做到這點(diǎn)的呢?原來(lái)JSF為程序員提供了很多默認(rèn)的組件和類(lèi),通常情況下,JSF的這些默認(rèn)組件和類(lèi)足以滿(mǎn)足Web開(kāi)發(fā)的需要了。但是,考慮到在某些應(yīng)用場(chǎng)合,框架的默認(rèn)行為也許不符合業(yè)務(wù)的要求,JSF特別允許程序員編寫(xiě)自己的組件和類(lèi),來(lái)滿(mǎn)足客戶(hù)的特殊需求。例如,程序員可以編寫(xiě)自己的UI組件,甚至可以創(chuàng)建自己的EL解釋器,來(lái)支持非標(biāo)準(zhǔn)的EL表達(dá)語(yǔ)言。
JSF優(yōu)勢(shì)之八:Web開(kāi)發(fā)的官方標(biāo)準(zhǔn)之一
JSF的1.0版本發(fā)布于2004年2月份,當(dāng)時(shí)是作為一項(xiàng)獨(dú)立的Web技術(shù)推出的。經(jīng)過(guò)1.1版到現(xiàn)在最新的1.2版,短短的兩年多時(shí)間,JSF終于在2006年年中成為Java EE 5的組成部分,上升為Web開(kāi)發(fā)的官方標(biāo)準(zhǔn)之一。Java EE 5最重要的使命就是簡(jiǎn)化Java的開(kāi)發(fā),而JSF無(wú)疑為這一使命立下了汗馬功勞。在Web框架層出不窮甚至有些泛濫成災(zāi)的今天,Sun以JSF來(lái)樹(shù)立標(biāo)準(zhǔn),對(duì)Java的發(fā)展是有益的。Sun在Java領(lǐng)域的領(lǐng)袖地位不容動(dòng)搖,對(duì)于Java程序員來(lái)說(shuō),始終追隨業(yè)界領(lǐng)袖的步伐,也許是避免技術(shù)落伍的最好方法。 1
JSF能否統(tǒng)一Web開(kāi)發(fā)模式?
在J2EE下一代規(guī)范Java EE5.0中,JSF技術(shù)被放到了一個(gè)非常重要的地位,J2EE社區(qū)試圖通過(guò)JSF來(lái)統(tǒng)一Web應(yīng)用的開(kāi)模式與方法, 但是JSF能否擔(dān)起Sun所賦予的重任?實(shí)現(xiàn)Web開(kāi)發(fā)的統(tǒng)一?
很多開(kāi)發(fā)人士都對(duì)JSF不抱樂(lè)觀(guān)的態(tài)度,用過(guò)JSF的人都稱(chēng)JSF是Web開(kāi)發(fā)世界的創(chuàng)舉, JSF可謂墻里開(kāi)花,墻外不紅,是什么原因的造成如此大的反差呢?
1.獲取方式
書(shū)是我們獲取知識(shí)第一來(lái)源,一種技術(shù)的火爆程度,我們不用在網(wǎng)上去做任何調(diào)查,只要去一下圖書(shū)城結(jié)果就一目了然,關(guān)于JSF的書(shū)籍簡(jiǎn)直是鳳毛麟角,難覓終影,這樣在人們?cè)讷@取JSF相關(guān)資料,JSF會(huì)大打折扣,比較經(jīng)典《JSF in Action》國(guó)內(nèi)還沒(méi)哪家出版社有翻譯動(dòng)向,證明圖書(shū)廠(chǎng)商還沒(méi)有對(duì)JSF投入太多關(guān)注度。
2.中文討論區(qū)成熟度不夠
除了圖書(shū)方面,討論區(qū)的熱度也很重要,打開(kāi)JSF官方討論區(qū),對(duì)JSF大唱贊歌人大有人在,為什么國(guó)內(nèi)這種討論卻少之又少呢?一些國(guó)內(nèi)比較知名的討論區(qū)中沒(méi)有看到JSF的相關(guān)技術(shù)討論,這樣從影響度上從知識(shí)的渴求度上,都限制了JSF前進(jìn)腳步。
3.Sun商業(yè)策略
Sun的商業(yè)運(yùn)作模式一直存在問(wèn)題,我們?cè)谥霸?jīng)預(yù)言過(guò)如果JSF不叫JSF,而叫JSP3.0那么現(xiàn)在結(jié)果會(huì)如何呢?Sun可以不費(fèi)一兵一卒從而實(shí)現(xiàn)JSP到JSF的合理過(guò)渡,同時(shí)也會(huì)有大批的JSP狂熱者迅速的轉(zhuǎn)向JSF,也可能有些人會(huì)認(rèn)為兩者是不同的兩種技術(shù),但是誰(shuí)又能說(shuō)Asp和Asp.net是兩種相同的技術(shù)嗎?同樣的策略微軟用的很成功,難道Sun沒(méi)有想到嗎?
4.開(kāi)發(fā)工具的支持程度
這次采訪(fǎng)袁總的時(shí)候,也提到了JSF依賴(lài)開(kāi)發(fā)工具的支持,Sun,IBM,Orcale都提出了對(duì)JSF開(kāi)發(fā)工具的支持,但是這些開(kāi)發(fā)工具在簡(jiǎn)化開(kāi)發(fā)方面是否做足了功課,寵大、全面、無(wú)所不能一直是眾廠(chǎng)商炫耀技術(shù)的舞臺(tái),這次Apusic Studio提出了簡(jiǎn)化,易用兩方面特性,這點(diǎn)從程序員角度出發(fā)的開(kāi)發(fā)工具,我們還是值得期待的。
5.?dāng)U大影響力
每一種技術(shù)都要有忠實(shí)狂熱者,同時(shí)要讓更多人的來(lái)應(yīng)用和學(xué)習(xí),Struts成功就是很好例證,一位著名IT人士曾經(jīng)說(shuō)過(guò),“即使公司發(fā)生慘絕人寰的人事大變動(dòng),產(chǎn)品經(jīng)理也不必過(guò)于驚惶失措,茫茫人海中,有大批的Struts們可供選擇,只需好好考慮好新員工的業(yè)務(wù)培訓(xùn)如何開(kāi)展即可,而對(duì)于技術(shù)延續(xù)性,則不必太過(guò)于擔(dān)心,這就是Struts 帶來(lái)的戰(zhàn)略性?xún)?yōu)勢(shì),也是Struts在今天技術(shù)落后的情況還能一直保持領(lǐng)先地位,這點(diǎn)還是值得反思的,JSF如何在影響上擴(kuò)大學(xué)習(xí)者的基層人群,打消企業(yè)的后顧之憂(yōu),影響高層對(duì)JSF企業(yè)框架的應(yīng)用選擇,不知JSF是否做好了準(zhǔn)備。
綜上所述只是我的個(gè)人觀(guān)點(diǎn),如果JSF能在影響力和擴(kuò)大人員基數(shù)上突破瓶頸,那么統(tǒng)一Web開(kāi)發(fā)的格局將指日可待。
當(dāng)前題目:對(duì)話(huà)袁紅崗:JSF的優(yōu)勢(shì)及未來(lái)發(fā)展趨勢(shì)-創(chuàng)新互聯(lián)
文章分享:
http://weahome.cn/article/dccpcp.html