posts - 176, comments - 240, trackbacks - 0, articles - 7

          關(guān)于JSF

          Posted on 2007-07-29 23:43 canonical 閱讀(1336) 評(píng)論(7)  編輯  收藏 所屬分類: 軟件開發(fā)
             JSF(Java Server Faces)技術(shù)從發(fā)布時(shí)間上看已經(jīng)是一種比較古舊的技術(shù)了,但是目前仍未能成為主流的開發(fā)實(shí)踐。從我知道這種技術(shù)開始, 我對(duì)它的判斷就與我最早對(duì)于EJB的判斷一樣, 它們都在某種程度上捕獲了真正的需求,但是因?yàn)樗鼈冏陨碓幃惖募夹g(shù)路線.我很懷疑是否這些標(biāo)準(zhǔn)制定者故布疑陣, 便如Microsoft的OLE技術(shù)一樣, 故意拋出一個(gè)錯(cuò)誤的方向, 將大批組件開發(fā)商帶入死局.
             JSF技術(shù)是一種雙重的存在:它首先是一種標(biāo)準(zhǔn),然后也提供了一種缺省的實(shí)現(xiàn)。但是從這兩方面,我都無法看到JSF的未來。
             從設(shè)計(jì)上說,強(qiáng)類型的視圖模型對(duì)象層與Witrix的架構(gòu)設(shè)計(jì)原則嚴(yán)重沖突。Witrix的基本架構(gòu)是瀏覽器和后臺(tái)服務(wù)器通過具有顯明語義的url實(shí)現(xiàn)兩分,這也是所謂REST風(fēng)格的一種內(nèi)在要求。隱蔽了鏈接的技術(shù)破壞了基本的web超鏈模型. 為了獲得那么一點(diǎn)點(diǎn)結(jié)構(gòu)控制能力, 做出這樣的抽象是不合適的.JSF的配置模型繼承了structs的傳統(tǒng),仍然是那樣的冗長(zhǎng)繁雜。我們是否真的需要這些配置文件,還是希望像ROR那樣在代碼中直接完成一切?
             不能在標(biāo)準(zhǔn)的瀏覽器中預(yù)覽. 可以說創(chuàng)造了一個(gè)JSF IDE的市場(chǎng), 但是這無疑是一個(gè)無聊的市場(chǎng). 現(xiàn)在有一些備選的方案, 如Facelets, 使得jsf可以采用屬性語法, 但是只要想想僅僅為了這么一點(diǎn)小小的修正所需要付出的開發(fā)量就足以讓人崩潰。
             JSF提供了組件級(jí)別的事件響應(yīng)機(jī)制,因此似乎是AJAX應(yīng)用的理想場(chǎng)所.但從Witrix平臺(tái)的開發(fā)實(shí)踐來看,JSF對(duì)于AJAX的使用是受限制的,有著很大局限性的.組件事件響應(yīng)并不一定要采取JSF那種體系結(jié)構(gòu).
             從實(shí)現(xiàn)角度上說,基于jsp tag可以說是JSF的致命弱點(diǎn)之一. jsp tag從設(shè)計(jì)之始就一直是未經(jīng)過實(shí)踐考量,其設(shè)計(jì)無法支撐復(fù)雜的控件架構(gòu). 特別是早期JSF與標(biāo)準(zhǔn)的JSP tag不能互通實(shí)際上是明顯的設(shè)計(jì)缺陷, 而且性能問題是內(nèi)置在該設(shè)計(jì)中的. 現(xiàn)在雖經(jīng)多個(gè)版本的不斷補(bǔ)救, 但是為了兼容性, JSP Tag負(fù)擔(dān)過重, 它始終是基于文本處理模型,實(shí)際上不可能有什么本質(zhì)性的進(jìn)步. JSP tag模型過分孱弱必然造成JSF設(shè)計(jì)中大量處理過程堆疊到界面對(duì)象層,更加劇了JSF的模型復(fù)雜度和性能瓶頸。 實(shí)際上根據(jù)Witrix平臺(tái)中tpl模板技術(shù)的設(shè)計(jì)經(jīng)驗(yàn),大量界面構(gòu)建過程是可以在模板層以直觀的方式完成的,而不需要借助視圖模型對(duì)象。
             所有問題的一個(gè)集中體現(xiàn)就是增加一個(gè)新的JSF組件絕對(duì)不是一件平凡的事情.如果有一天這個(gè)問題可以得到解決,那時(shí)的JSF從思想和實(shí)現(xiàn)上都必然和現(xiàn)在的JSF有著本質(zhì)性的區(qū)別.

          Feedback

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-07-30 10:00 by 狂人
          "從實(shí)現(xiàn)角度上說,基于jsp tag可以說是JSF的致命弱點(diǎn)之一. jsp tag從設(shè)計(jì)之始就一直是未經(jīng)過實(shí)踐考量,其設(shè)計(jì)無法支撐復(fù)雜的控件架構(gòu). 特別是早期JSF與標(biāo)準(zhǔn)的JSP tag不能互通實(shí)際上是明顯的設(shè)計(jì)缺陷, 而且性能問題是內(nèi)置在該設(shè)計(jì)中的. 現(xiàn)在雖經(jīng)多個(gè)版本的不斷補(bǔ)救, 但是為了兼容性, JSP Tag負(fù)擔(dān)過重, 它始終是基于文本處理模型,實(shí)際上不可能有什么本質(zhì)性的進(jìn)步. JSP tag模型過分孱弱必然造成JSF設(shè)計(jì)中大量處理過程堆疊到界面對(duì)象層,更加劇了JSF的模型復(fù)雜度和性能瓶頸。"

          請(qǐng)問你認(rèn)為你真正理解JSF的組件架構(gòu)嗎? 你有真正去理解過JSF的架構(gòu)設(shè)計(jì)嗎?
          請(qǐng)問JSF確實(shí)是必須基于JSP TAG嗎? facelets又是什么? 是替代方案還是補(bǔ)充?或者說是另一種視圖組織技術(shù)? JSF并非一定需要JSP為表現(xiàn)載體, 自然也并非一定要基于JSP Tag.

          REST風(fēng)格又怎么樣? REST是什么時(shí)候提出來的? 正如REST提到的那樣,有些表現(xiàn)轉(zhuǎn)移是應(yīng)該明確的,但時(shí)代在進(jìn)步,并非所有的應(yīng)用都是那樣,下任何結(jié)論之前我們應(yīng)該先給定一個(gè)命題的場(chǎng)景(前提).
          誠(chéng)然, JSF的導(dǎo)航體系比STRUTS并未進(jìn)步多來,但并不代表我們不能定制其導(dǎo)航策略,正如SWF與JSF的協(xié)同一樣.

          JSF架構(gòu)本身沒有問題, 問題在于目前對(duì)JSF的實(shí)現(xiàn)上, 目前只是可用組件還不多而已,大部分都需要自己開發(fā), 然而可喜的時(shí),目前已經(jīng)有許多商業(yè)的實(shí)現(xiàn),也有許多開源的實(shí)現(xiàn), 比如JBoss的richfaces, 看看別人實(shí)現(xiàn)的組件, 并非想象的那么重型,也并非想象中那么難用.關(guān)鍵看你如何用. 換句話說, 如果光頹頹地應(yīng)用JSF,的確有些煩鎖,但如果你能與SPRING集成起來使用,開發(fā)就會(huì)輕便許多.如果你的應(yīng)用是流程式的, 可以集成SWF, 這會(huì)讓你的應(yīng)用更加整潔.

          PS.我所談到的這些技術(shù)并非空穴來風(fēng), 我本人已經(jīng)實(shí)踐了一年多了, 其實(shí)踐的項(xiàng)目不會(huì)是你想象中的那么小.

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-07-30 12:15 by 傳奇世界私服
          提供多多

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-07-30 13:06 by QP
          很贊同作者的觀念。

          這里有篇文章很有趣,一樓的可以看看:
          http://blog.csdn.net/turingbook/archive/2007/06/28/1669663.aspx

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-07-30 15:17 by canonical
          JSF技術(shù)有一些真正有價(jià)值的東西,但是根據(jù)我們的實(shí)踐,這些價(jià)值有其他更加優(yōu)雅的體現(xiàn)方式。 JSF不是必須采用JSP Tag, 但是它需要一種類似的技術(shù),而它在架構(gòu)設(shè)計(jì)中必然要照顧到這種技術(shù)實(shí)現(xiàn)。 其實(shí)witrix中的tpl技術(shù)也是一種tag技術(shù),只是它遠(yuǎn)比jsp tag要精致。

          JSF架構(gòu)最大的問題就是開發(fā)新組件很麻煩,完全基于JSF構(gòu)建程序很繁瑣,最終提供給用戶的調(diào)用接口其實(shí)也有更加簡(jiǎn)明的方式.

          # re: 關(guān)于JSF[未登錄]  回復(fù)  更多評(píng)論   

          2007-07-30 17:52 by beansoft
          下了個(gè)微軟的 Microsoft Visual Web Developer 2005 速成版, 感覺 JSF 跟 ASP.NET Web Form 的確很像. 微軟的組件類庫很方便, 很快速, 拖放幾下就可解決問題. 而且他們的設(shè)計(jì)器既能解析HTML,也能解析里面的 TagLib. 所以 Tag Lib 本身不是錯(cuò), 開發(fā)組件難點(diǎn)很大也不是錯(cuò). 微軟的 IDE 已經(jīng)幫你做好了所有的東西. 所以 JSF 難點(diǎn)就是 IDE 太差, 組件定制可以由專業(yè)廠商來做. 微軟的 .NET 控件從來不鼓勵(lì)程序員自己去做.

          一句話, 每人都想做大自己掙錢, 才導(dǎo)致了這么多 Java 廠商 作出來的東西竟然還不如微軟一家公司做的. 那么多框架, 很多都是垃圾. 只有組件沒有 IDE 你讓人手寫代碼來做頁面?

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-07-31 11:20 by dna
          JSF基于事件的開發(fā)模式與傳統(tǒng)JAVA web開發(fā)有很大的差異,導(dǎo)致很多老的JAVA程序員很難適應(yīng),

          還有一點(diǎn)JSF缺少一個(gè)像Microsoft Visual Studio強(qiáng)大的開發(fā)工具,不過netbeans正往這個(gè)方向努力,

          # re: 關(guān)于JSF  回復(fù)  更多評(píng)論   

          2007-08-13 00:31 by canonical
          開發(fā)工具并不一定是生產(chǎn)力的主要來源
          主站蜘蛛池模板: 海门市| 治多县| 大关县| 宁国市| 翁源县| 石门县| 汉川市| 梅河口市| 洛南县| 杭锦旗| 榆中县| 乐安县| 襄樊市| 独山县| 晋城| 武川县| 安徽省| 江口县| 遵义市| 郓城县| 滨海县| 长海县| 阳原县| 海兴县| 林周县| 招远市| 阿拉善左旗| 敖汉旗| 淳化县| 济宁市| 壶关县| 南召县| 安西县| 安溪县| 古浪县| 鲜城| 长垣县| 乌鲁木齐县| 海丰县| 都江堰市| 涿鹿县|