JSF的缺陷:IDE方面支持不足
有了合適的組件集,良好的“生態(tài)環(huán)境”的建立也是件較容易的事情。當(dāng)使用的用戶足夠多時(shí),良好的“生態(tài)環(huán)境”就開(kāi)始建立了。對(duì)于JSF而言,這樣的“生態(tài)環(huán)境”已經(jīng)部分的建立了。除了組件供應(yīng)商外,還有很多開(kāi)發(fā)JSF的工具。如:JbossTools(或稱Exadel Studio更適合)、BEA Workshop(Workshop與NitroX的M7產(chǎn)品的合并產(chǎn)物)、Oracle的Jdeveloper、MyEclipse、NetBeans、IBM的JSF工具及IDEA對(duì)JSF的支持。
關(guān)于JSF的開(kāi)發(fā)工具大概就這些了。也許有人會(huì)說(shuō),開(kāi)發(fā)JSF很大程度上依賴于這些開(kāi)發(fā)工具。其實(shí)這樣的說(shuō)法并不公平。對(duì)初學(xué)者而言,這些IDE工具將幫助他們更容易學(xué)習(xí)JSF。許多的開(kāi)發(fā)者常對(duì)初學(xué)Java人員建議,最理想的Java IDE是記事本(notepad)及命令行(cmd),那么有些人就由此推論,JSF最好的IDE應(yīng)該也是記事本等簡(jiǎn)單的編輯器,而JSF專業(yè)的開(kāi)發(fā)工具將讓初學(xué)者“偷懶”,從而讓他們對(duì)JSF的理解浮于表面。這常常使JSF初學(xué)者迷茫。
那是不是意味著要放棄使用JSF的IDE工具嗎?當(dāng)然不。因?yàn)槲覀儾荒苡捎诠ぞ吣芴峁└尤菀椎拈_(kāi)發(fā)過(guò)程而認(rèn)為工具是有缺陷或框架是有缺陷的。
JSF的IDE并不能吸收大量的JSF用戶,這也就說(shuō)明了JSF的“生態(tài)環(huán)境”在引導(dǎo)JSF初學(xué)者方面發(fā)揮不夠。“生態(tài)環(huán)境”代表著JSF的能力及威力。然而,它并不能向初學(xué)者展現(xiàn)它的核心思想,亦沒(méi)有解釋清楚初學(xué)者首先需了解的內(nèi)容,同時(shí)沒(méi)讓初學(xué)者明白JSF框架所能提供而其它框架卻不能提供的優(yōu)點(diǎn)。
真正的問(wèn)題是在于,JSF基于如此基礎(chǔ)的組件,并不能直接為用戶提供更有利的組件,除非用戶自己再次開(kāi)發(fā)基于JSF更好的組件。而用戶在沒(méi)有發(fā)現(xiàn)JSF的潛力之前,是難以開(kāi)發(fā)更好的組件集的,同時(shí),相關(guān)的文檔于此也可能將無(wú)濟(jì)于事。
組件開(kāi)發(fā)者可以停止重復(fù)開(kāi)發(fā)的車輪了。每個(gè)人都有一個(gè)tab面板、菜單組件、spinner、拖放機(jī)制。這些已經(jīng)成熟了。對(duì)于更新更好的實(shí)現(xiàn)方式是歡迎的,但對(duì)“我也能”的實(shí)現(xiàn)方式,其實(shí)并不利于技術(shù)的傳播。JSF所需要的,正是一個(gè)基于界面模型而開(kāi)發(fā)的組件集,它將是界面的標(biāo)準(zhǔn)實(shí)現(xiàn)。關(guān)于此組件集的文檔,當(dāng)然也得簡(jiǎn)單明了,易于初學(xué)者學(xué)習(xí)與掌握。
JSF發(fā)展速度很快。前面所提及的書籍都是關(guān)于JSF的優(yōu)秀資源。特別是Seam項(xiàng)目的書籍,更是關(guān)于JSF的快速入門書籍。JSF的優(yōu)勢(shì)在于它是一種標(biāo)準(zhǔn),但僅僅是標(biāo)準(zhǔn)是不夠的。因?yàn)椴⒉荒茏鋈藗兯谕氖碌臉?biāo)準(zhǔn),總有一天會(huì)被其它的標(biāo)準(zhǔn)所代替的。就筆者而言,JSF還并不勝任此標(biāo)準(zhǔn),當(dāng)然每位開(kāi)發(fā)人員都會(huì)做出自己最終的決策。
不管怎么說(shuō),JSF總歸是一種非常有潛力的組件框架。當(dāng)然它也不是唯一的組件框架,本文的主題并非比較各種組件式框架。但好說(shuō)歹說(shuō),JSF是J2EE的一部分,組件還在不斷擴(kuò)展和完善中,既然它是J2EE 5.0的實(shí)現(xiàn)標(biāo)準(zhǔn),其潛力還是巨大的,它將像JSP一樣,你可以只是比較淡漠的關(guān)心它,但JSF還是會(huì)向著它的方向進(jìn)發(fā),不管你喜歡與否。
JSF同其它的框架一樣,是平等的。它成一種標(biāo)準(zhǔn),意味著用戶與實(shí)現(xiàn)者都有一個(gè)共同遵循的平臺(tái)。如果JSF遵循共同的規(guī)范,則你可以想象JSF的運(yùn)行機(jī)制。如果不是,則可以不用考慮它了。
JSF存在的問(wèn)題是可以解決的,也正在被解決。已經(jīng)出現(xiàn)了一些組件集,F(xiàn)acelets取代JSP,使得Web頁(yè)面的模板化更加容易,將帶來(lái)更快更簡(jiǎn)潔的性能。JSF2.0專家團(tuán)的成立,將會(huì)把Java EE的簡(jiǎn)單模型帶給JSF。同時(shí),相關(guān)的文檔將會(huì)更新與修訂,同時(shí)將會(huì)有新書出版(不僅僅只是關(guān)注Jboss使用JSF開(kāi)發(fā)的Seam項(xiàng)目)。當(dāng)筆者在抱怨JSF的同時(shí),作為開(kāi)發(fā)人員,也在努力尋找解決問(wèn)題的辦法。如下是筆者的一些初步看法:
1. 使用facelets來(lái)代替JSP。
2. 盡量使用ADF或Seam,而少用或不用RI或myfaces。
3. 結(jié)合Spring來(lái)增強(qiáng)JSF的擴(kuò)展性。
4. 別再抱怨JSF,畢竟它只是一個(gè)標(biāo)準(zhǔn)規(guī)范,而不是一種具體的實(shí)現(xiàn)框架。
【編輯推薦】