日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
JSF能否拯救WEB

細(xì)說(shuō)框架風(fēng)云,JSF能否拯救WEB江湖

東港網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),東港網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為東港成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的東港做網(wǎng)站的公司定做!

Java企業(yè)開(kāi)發(fā)可以說(shuō)是“復(fù)雜”的代名詞,簡(jiǎn)化Java的開(kāi)發(fā)已經(jīng)刻不容緩了.隨著JAVA EE 5,JAVA EE6的相繼發(fā)布,從老虎到野馬,版本更新如此之快,對(duì)SUN來(lái)說(shuō)是史無(wú)前例的。Sun終于頂不住來(lái)自?xún)?nèi)部改革派和外部竟?fàn)幷叩膲毫???磥?lái)是下定決心簡(jiǎn)化 JAVA了!

在2005年底.Net 2.0的發(fā)布,我們目睹了.Net 2.0的成功。.Net 2.0由于開(kāi)發(fā)簡(jiǎn)單,開(kāi)發(fā)周期短,開(kāi)發(fā)成本低,中小企業(yè)紛紛轉(zhuǎn)投向.Net的懷抱。眼看JAVA EE的市場(chǎng)慢慢的被.Net蠶食,Sun是急在眼里,痛在心里。

JSF也隨之成為JAVA EE的規(guī)范,Java EE 6明顯加強(qiáng)對(duì)JAVA開(kāi)發(fā)桌面應(yīng)用的支持,Sun也想讓JAVA在桌面開(kāi)發(fā)中占有一席之地。而把JSF作為強(qiáng)制規(guī)范,是想通過(guò)JSF來(lái)繼續(xù)統(tǒng)領(lǐng)WEB 開(kāi)發(fā)來(lái)固守企業(yè)應(yīng)用的市場(chǎng),2007年,Sun想通過(guò)JSF來(lái)打一個(gè)翻身仗。

WEB江湖

自Java 1995年面世后,Sun靠Applet 搶占了WEB前端市場(chǎng),而Flash的出現(xiàn)卻讓Applet早早退出歷史舞臺(tái)。于是Sun在1997年發(fā)布了第一個(gè)WEB服務(wù)器(Java WEB Server)及應(yīng)用的Servlet API。Servlet可以通過(guò)純Java語(yǔ)言來(lái)編寫(xiě)企業(yè)WEB應(yīng)用,Servlet從廠(chǎng)商急需角度出發(fā),迅速的成為了企業(yè)應(yīng)用解決方案的標(biāo)準(zhǔn)。

雖然Servlet通過(guò)Java這種高級(jí)語(yǔ)言來(lái)進(jìn)行編寫(xiě),而最終是展示給用戶(hù)的。需要有良好的用戶(hù)界面。這就需要支持HTML等WEB腳本??墒荢ervlet卻不能良好的嵌入HTML等前端代碼,開(kāi)發(fā)起來(lái)非常復(fù)雜。

終于在1998年,Sun推出了JSP。而此時(shí),與之相似的ASP已經(jīng)發(fā)布了兩年之久。Sun在1999年初推出JSP 1.0后,又在1999年11月推出JSP 1.1,Sun終于憑借Servlet和JSP技術(shù),迅速的占領(lǐng)了絕大部份的企業(yè)市場(chǎng)份額。在2002年4月,JSP發(fā)展到1.2版本。到2003年 Sun推出JSP 2.0,同時(shí)推出的JSTL(JAVA 標(biāo)準(zhǔn)標(biāo)記語(yǔ)言)取代JSP表達(dá)式的弱點(diǎn),更進(jìn)一步簡(jiǎn)化JSP的編寫(xiě)。 JSP慢慢變成一種非常成熟的WEB技術(shù),JSP憑借其技術(shù)成熟,穩(wěn)定,及Java的強(qiáng)大功能和跨平臺(tái)能力成為WEB企業(yè)應(yīng)用的王者,占領(lǐng)了80%以上的企業(yè)應(yīng)用市場(chǎng)。而ASP則靠快速開(kāi)發(fā),方便發(fā)布以及依靠在微軟的大樹(shù)下分食中小市場(chǎng)和個(gè)人用戶(hù)。
江湖混戰(zhàn),框架興起

JSP是一項(xiàng)成功的技術(shù),它功能強(qiáng)大,具有高穩(wěn)定性和可靠性。但是也就意味著他具有復(fù)雜性,難以維護(hù)。從它誕生起,人們就一直在努力尋找一種快速的WEB開(kāi)發(fā)方案。

在早期,所有的業(yè)務(wù)方法,數(shù)據(jù)庫(kù)連接,訪(fǎng)問(wèn)方法的這些代碼都充斥在JSP頁(yè)面里。開(kāi)發(fā)人員既是UI設(shè)計(jì)者又是程序員。同時(shí)各種各樣的業(yè)務(wù)代碼寫(xiě)進(jìn)JSP頁(yè)面中,相同的功能代碼可能需要編寫(xiě)多次,代碼無(wú)法重用,如果后期因?yàn)闃I(yè)務(wù)的變動(dòng)而進(jìn)行維護(hù)時(shí),對(duì)開(kāi)發(fā)人員簡(jiǎn)直就是一場(chǎng)惡夢(mèng)。

隨后WEB開(kāi)發(fā)進(jìn)入Model 2時(shí)代,也就是MVC模式的應(yīng)用時(shí)代,MVC模式可以使模型,視圖,控制分離出來(lái)。通過(guò)Servlet與JSP的結(jié)合,由控制器Servlet控制請(qǐng)求,調(diào)用業(yè)務(wù)類(lèi)獲得模型數(shù)據(jù),并把數(shù)據(jù)模型展示到相應(yīng)的視圖(JSP)中。這樣,業(yè)務(wù)方法已經(jīng)從JSP中分離出來(lái),減少了邏輯代碼與JSP代碼的藕合。JSP 僅僅用于顯示數(shù)據(jù)和提交用戶(hù)的請(qǐng)求。Servlet控制用戶(hù)的請(qǐng)求及調(diào)用Java類(lèi)的業(yè)務(wù)方法,并對(duì)用戶(hù)的請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)。MVC模式可使得業(yè)務(wù)方法重用,使得頁(yè)面開(kāi)發(fā)人員和程序員進(jìn)行分工。一部分人專(zhuān)注于頁(yè)面的開(kāi)發(fā),而一部份人進(jìn)行業(yè)務(wù)代碼的編寫(xiě)。可以使項(xiàng)目組的人去做他最熟悉的工作。

Model2的運(yùn)用,對(duì)WEB開(kāi)發(fā)帶來(lái)了一次全新的變革,但是仍然面臨著許多問(wèn)題。有太多的Servlet類(lèi),一個(gè)請(qǐng)求對(duì)應(yīng)著一個(gè)Servlet類(lèi)。頁(yè)面流程的控制全部通過(guò)硬代碼寫(xiě)死在Servlet類(lèi)中,每一個(gè)Servlet類(lèi)都需要在WEB.XML中進(jìn)行配置,不能很好的支持國(guó)際化等。后來(lái)人們通過(guò)前端控制器模式來(lái)解決了這樣問(wèn)題,就是由一個(gè)Servlet來(lái)響應(yīng)所有的請(qǐng)求。根據(jù)不同的請(qǐng)求參數(shù)來(lái)調(diào)用不同的服務(wù)方法。這樣有效的減少了Servlet 類(lèi)。幾乎現(xiàn)在所有的WEB框架都是采用前端控制器和MVC模式的運(yùn)用。在這樣的背景下,WEB框架應(yīng)運(yùn)而生,Struts最先面世,WEBWork等紛紛涌現(xiàn)。開(kāi)發(fā)者采用框架大大的簡(jiǎn)化了WEB應(yīng)用的開(kāi)發(fā),加快了開(kāi)發(fā)的速度和質(zhì)量。

Struts攪亂WEB格局

Struts采用前端控制器模式和MVC模式進(jìn)行設(shè)計(jì)。強(qiáng)制開(kāi)發(fā)人員以MVC的理念來(lái)進(jìn)行WEB開(kāi)發(fā),把表現(xiàn)層與業(yè)務(wù)層進(jìn)行分離。Struts提供了豐富的標(biāo)簽庫(kù),在JSP 1.1時(shí)代,JSP頁(yè)面都是通過(guò)JSP表達(dá)式進(jìn)行編寫(xiě)。雖然采用“<%%>”的JSP表達(dá)式功能非常強(qiáng)大,但是調(diào)試十分的麻煩,理解也十分的困難,一般的頁(yè)面人員幾乎無(wú)法勝任。而Struts此時(shí)提供的標(biāo)簽庫(kù)類(lèi)似于HTML的標(biāo)記,對(duì)開(kāi)發(fā)人員更為友好,易于理解和編寫(xiě)。

Struts提供了一個(gè)頁(yè)面流程控制的功能,而不是把頁(yè)面的轉(zhuǎn)向?qū)懰涝诖a中。每個(gè)請(qǐng)求的頁(yè)面輸入和頁(yè)面轉(zhuǎn)發(fā)都配置在Struts-config.xml中。

Struts支持自動(dòng)數(shù)據(jù)綁定,通過(guò)一個(gè)ActionForm來(lái)實(shí)現(xiàn)。把頁(yè)面的數(shù)據(jù)自動(dòng)綁定成POJO對(duì)象。并支持?jǐn)?shù)據(jù)檢驗(yàn)。Struts 提供了國(guó)際化的支持,可以很容易的讓你的WEB系統(tǒng)應(yīng)用于多種語(yǔ)言版本的要求。

所以Struts一推出就受到了開(kāi)發(fā)人員的喜愛(ài),并迅速流行起來(lái)。Struts是目前使用最多,流行時(shí)間最長(zhǎng)的JAVA開(kāi)源 WEB框架。

盡管Struts取得了成功,但是它仍然有很多的不足。Struts線(xiàn)程是安全的,但對(duì)并發(fā)控制是一個(gè)問(wèn)題。在JSP 2.0推出JSTL后。JSTL取代JSP表達(dá)式進(jìn)行JSP編寫(xiě),JSTL是一種類(lèi)似C語(yǔ)言風(fēng)格的標(biāo)記語(yǔ)言。更為人們所熟悉,語(yǔ)法十分簡(jiǎn)單,明了,功能強(qiáng)大。JSTL會(huì)自動(dòng)處理NULL問(wèn)題,而不是像JSP表達(dá)式和Struts標(biāo)簽?zāi)菢佑龅絅ULL值是會(huì)拋出可恨的異常。相對(duì)于優(yōu)雅的JSTL,采用 Struts標(biāo)簽寫(xiě)出的JSP代碼就像是天書(shū),咒語(yǔ)一樣。Struts大部份標(biāo)記重復(fù)了JSTL的相似功能,有一部份與HTML重復(fù)的標(biāo)簽根本就沒(méi)有必要存在,還無(wú)端的增加了學(xué)習(xí)和開(kāi)發(fā)的難度。而且Struts標(biāo)簽不能良好的處理NULL問(wèn)題。

ActionForm的問(wèn)題,Struts通過(guò)ActionForm來(lái)進(jìn)行數(shù)據(jù)綁定和數(shù)據(jù)校驗(yàn)。首先任何需要使用數(shù)據(jù)綁定和數(shù)據(jù)校驗(yàn)功能都必須去繼承 ActionForm,而Action Form又依賴(lài)Servlet。這樣基于類(lèi)繼承的藕合是沒(méi)有必要的。數(shù)據(jù)綁定應(yīng)該是原始的,就是說(shuō)頁(yè)面的數(shù)值型數(shù)據(jù)應(yīng)該綁定成Java類(lèi)的數(shù)值型數(shù)據(jù),日期型數(shù)據(jù)就綁定成日期數(shù)據(jù)。而Struts只能把頁(yè)面數(shù)據(jù)綁定成字符型的數(shù)據(jù)。數(shù)據(jù)校驗(yàn)應(yīng)該是具有重用性的,而Struts卻要把數(shù)據(jù)檢驗(yàn)生硬的寫(xiě)在 ActionForm中。
同時(shí)Struts也存在以下幾點(diǎn)致命傷:
1、Struts通過(guò)繼承具體類(lèi)來(lái)進(jìn)行擴(kuò)展,那么你要自定義Struts的行為而變得困難。
2、Struts是不容易測(cè)試的,必須通過(guò)StrutsTestCase來(lái)進(jìn)行輔助測(cè)試。而不是真正意義上的單元測(cè)試。
3、Struts太面向JSP了,也就是說(shuō)Struts僅支持JSP,如果我們的應(yīng)用有些視圖不是采用JSP,而另外一些視圖如采用EXCEL和PDF。那么Struts是無(wú)能為力的。
4、Struts框架對(duì)異常沒(méi)有提供一個(gè)良好的支持。

Struts也看到了自身存在的缺陷,并不斷進(jìn)行改進(jìn),隨著Struts 2的到來(lái),會(huì)帶來(lái)一些改變的。

WEBwork是一種比Struts更易于使用,基于Command模式的開(kāi)源WEB框架。WEBwork結(jié)構(gòu)十分的簡(jiǎn)單,也提供了豐富的標(biāo)簽庫(kù),WEBwork的攔截器也十分的優(yōu)秀。并且WEBwork是非線(xiàn)程的。WEBwork提供了一個(gè)IOC容器,支持國(guó)際化,并且支持多種視圖技術(shù)??梢哉f(shuō)WEBwork是一個(gè)非常優(yōu)秀的WEB框架。但是WEBwork的開(kāi)發(fā)文檔少得可憐,它的客戶(hù)端驗(yàn)證技術(shù)不太成熟,Velocity Templates技術(shù)還是太復(fù)雜,不提供對(duì)組件的封裝,而Struts的Tiles更好一點(diǎn)。采用WEBwork,必須對(duì)它的運(yùn)行機(jī)制十分了解。同時(shí) WEBwork對(duì)每個(gè)用戶(hù)交互都強(qiáng)加Command模式,而不管是否需要。所有Command 的excute方法被迫拋出Exception,你無(wú)法知道哪一命令會(huì)拋出什么類(lèi)型的異常,而且WebWork的路注定是沒(méi)有歸途的。

Spring Web框架中一條黑馬

2001年Rod Johnson編寫(xiě)一本書(shū)叫《J2EE設(shè)計(jì)開(kāi)發(fā)編程指南》。這本書(shū)的內(nèi)容構(gòu)成了Spring框架的雛形。接著Rod Johnson又編寫(xiě)了另外一本書(shū)《J2EE without EJB》,并同時(shí)推出Spring框架。這兩本書(shū)迅速的在業(yè)界引起了轟動(dòng),為Spring的推出作了很好的鋪墊。Spring引入IOC(控制反轉(zhuǎn))的概念,采用POJO對(duì)象,AOP支持和輕量級(jí)容器來(lái)開(kāi)發(fā)企業(yè)應(yīng)用,這些正是業(yè)界多年來(lái)一直苦苦尋找的解決方案。Spring一推出就紅遍了大江南北,迎來(lái)了 Java企業(yè)開(kāi)發(fā)的春天。

筆者認(rèn)為Spring MVC 是基于請(qǐng)求響應(yīng)模式最為優(yōu)秀的開(kāi)源WEB框架。它來(lái)自于Spring,天生就支持IOC 和AOP,這是其它任何WEB框架無(wú)法相比的。
◆Spring MVC 是一個(gè)很薄的WEB框架,它清晰的分離了數(shù)據(jù)和視圖。支持多種視圖技術(shù)(JSP,XML,EXCEL, PDF…)十分方便。
◆Spring的優(yōu)勢(shì)
◆Spring MVC對(duì)于表單提交類(lèi)的應(yīng)用提供了一個(gè)完整的生命周期。
◆Spring MVC支持頁(yè)面數(shù)據(jù)的原生綁定為POJO對(duì)象,并可以自定義擴(kuò)展綁定器,而不是像Struts那樣只能把頁(yè)面數(shù)據(jù)自動(dòng)綁定為String 類(lèi)型。
◆Spring MVC 自定義行為變得十分容易,這得益于Spring框架良好的設(shè)計(jì),Spring MVC的控制器也是基于Command模式的。
◆Spring MVC 有良好的數(shù)據(jù)校驗(yàn)框架,也很容易自定義數(shù)據(jù)校驗(yàn)行為。
◆Spring MVC 提供了一個(gè)良好的異常處理機(jī)制,可以方便的自定義各類(lèi)異常的處理行為。
◆Spring MVC 提供了有用的標(biāo)簽。(注意是有用的,沒(méi)有用的Spring絕不提供)
◆Spring MVC 支持I18N及文件上傳等。
◆Spring 還推出了Spring WEB Flow,用于向?qū)降腤EB應(yīng)用開(kāi)發(fā)。

Rod Johnson 是一個(gè)JAVA EE專(zhuān)家,我更愿意稱(chēng)他為一個(gè)實(shí)踐家。Rod Johnson 的經(jīng)典語(yǔ)錄是“不要重復(fù)發(fā)明輪子”,Spring 框架的各方面應(yīng)用都來(lái)源于長(zhǎng)期的實(shí)踐經(jīng)驗(yàn),集百家之長(zhǎng),吸收其它框架的精華,正是Spring取得成功的原因。Spring MVC也是如此。Spring提供給你真實(shí)需要的,通過(guò)長(zhǎng)期實(shí)踐證明的東西。

雖然Spring 已經(jīng)大紅大紫了,但是Spring MVC卻沒(méi)有流行起來(lái)。它出來(lái)太晚了,而Struts已經(jīng)深入人心了,Struts這么多年的表現(xiàn)一直不錯(cuò),雖然Struts并不是那么優(yōu)秀。但是它有著龐大的開(kāi)發(fā)人群,關(guān)于Struts的資料是鋪天蓋地。企業(yè)很容易找到Struts開(kāi)發(fā)人員,卻難以找到Spring MVC開(kāi)發(fā)人員。另外一個(gè)客觀原因就是Spring太靈活了,Spring MVC也不例外,正因?yàn)镾pring MVC過(guò)于靈活,致使初學(xué)者望而生畏。Spring MVC需要進(jìn)行過(guò)多的XML配置,Spring MVC的文檔相對(duì)比較少,所以現(xiàn)在Spring MVC的使用者有限,但無(wú)論如何,Spring MVC是一個(gè)非常優(yōu)雅的WEB開(kāi)發(fā)框架,花費(fèi)一點(diǎn)學(xué)習(xí)成本是值得的。

ASP.Net的成功說(shuō)明了什么?

ASP.Net是一種面向組件,基于事件驅(qū)動(dòng)模型的WEB開(kāi)發(fā)技術(shù)。在基于請(qǐng)求驅(qū)動(dòng)模型的WEB開(kāi)發(fā)技術(shù)中(如JSP和ASP),程序代碼需要混合在 HTML標(biāo)簽中。而事件驅(qū)動(dòng)模型與請(qǐng)求驅(qū)動(dòng)模型相比,在一個(gè)表單上的組件通過(guò)激活應(yīng)用程序的事件來(lái)響應(yīng)用戶(hù)的行動(dòng)。開(kāi)發(fā)人員通過(guò)為組件的相關(guān)事件編寫(xiě)相應(yīng)的程序代碼來(lái)實(shí)現(xiàn)相關(guān)的邏輯。事件驅(qū)動(dòng)模型的WEB開(kāi)發(fā)技術(shù)提供了一種更為直觀的編程模式,使得WEB開(kāi)發(fā)就像編寫(xiě)一個(gè)VB或Java Swing桌面應(yīng)用程序一樣。用鼠標(biāo)把相應(yīng)的控件拖到頁(yè)面視圖,然后再為控件編寫(xiě)相應(yīng)的事件代碼來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。這樣,就把WEB前端開(kāi)發(fā)變成了運(yùn)用高級(jí)語(yǔ)言進(jìn)行程序開(kāi)發(fā)(在ASP.NET中采用VB..NET或C#)。面向組件和基于事件驅(qū)動(dòng)模型使得WEB開(kāi)發(fā)真正的回歸到了傳統(tǒng)的開(kāi)發(fā)方式。大大的簡(jiǎn)化了WEB項(xiàng)目開(kāi)發(fā)的復(fù)雜度。

ASP.NET提供了豐富有WEB前端組件。因?yàn)锳SP.Net是面向組件的,和基于事件的。所以ASP.Net必須提供豐富的組件,并為這些組件定義相關(guān)的事件。讓開(kāi)發(fā)人員去擴(kuò)展事件代碼來(lái)完成邏輯功能。ASP.NET 一開(kāi)始就提供最實(shí)用的WEB組件,如DataGrid用于數(shù)據(jù)顯示,開(kāi)發(fā)人員只需要通過(guò)設(shè)置屬性就可以實(shí)現(xiàn)自定義分頁(yè)顯示。而在以前的ASP或JSP則需要編寫(xiě)大量的程序代碼才能完成。到ASP.NET 2.0時(shí),微軟更是提供了近150多個(gè)WEB組件,如在WEB開(kāi)發(fā)中經(jīng)常用到的樹(shù)形菜單組件,下拉菜單組件,文件上傳組件等。ASP.NET通過(guò)提供這些豐富而功能強(qiáng)大的組件,使得WEB應(yīng)用開(kāi)發(fā)就像桌面應(yīng)開(kāi)發(fā)一樣簡(jiǎn)單。

正因?yàn)锳SP.Net帶來(lái)了一種全新的開(kāi)發(fā)模式,使得以往復(fù)雜的WEB應(yīng)用開(kāi)發(fā)變得簡(jiǎn)單,讓W(xué)EB應(yīng)用更易于發(fā)布,并通過(guò)微軟的商業(yè)運(yùn)作,ASP.NET一掃ASP的陰霏,迅速的占據(jù)了大量企業(yè)市場(chǎng)份額。
ASP.NET的成功對(duì)我們有什么啟示呢?可以肯定面向組件、基于事件驅(qū)動(dòng)模型是未來(lái)WEB開(kāi)發(fā)技術(shù)的發(fā)展方向。ASP,JSP等基于請(qǐng)求驅(qū)動(dòng)式的WEB技術(shù)必將退出歷史的舞臺(tái)。

因?yàn)橛蓮S(chǎng)商來(lái)提供豐富而實(shí)用的組件,大大簡(jiǎn)化WEB前端的開(kāi)發(fā)量和開(kāi)發(fā)難度。把復(fù)雜的問(wèn)題交由廠(chǎng)商或開(kāi)源組織去解決。基于事件驅(qū)動(dòng)模型才是真正的把UI人員和業(yè)務(wù)程序員分離開(kāi)來(lái)。只有把程序代碼與HTML標(biāo)記分離,才能真正做到UI設(shè)計(jì)者與程序員分離。

面向組件,基于事件驅(qū)動(dòng)的WEB框架要取得成功必須提供大量實(shí)用的WEB組件。只有提供了豐富的,功能強(qiáng)大的WEB組件,開(kāi)發(fā)人員才能從WEB開(kāi)發(fā)中解脫出來(lái)。否則如果每個(gè)用戶(hù)都需要去實(shí)現(xiàn)自己的組件庫(kù),那樣的工作量也是非常龐大的。特別是針對(duì)一些小型用戶(hù)。必須要有優(yōu)秀的IDE工具配套支持,如果沒(méi)有 VS 2003或VS2005開(kāi)發(fā)工具,而是通過(guò)簡(jiǎn)單的文本編輯工具來(lái)進(jìn)行ASP.Net開(kāi)發(fā),很難想像ASP.Net會(huì)成功。要真正的實(shí)現(xiàn)像VB或Java Swing編寫(xiě)桌面應(yīng)用程序那樣來(lái)開(kāi)發(fā)WEB應(yīng)用程序,優(yōu)秀的IDE工具是必不可少的。允許你把組件從組件面板拖放到頁(yè)面上并通過(guò)屬性編輯器來(lái)定義它的外觀和行為,直接為組件的相關(guān)事件編寫(xiě)事件代碼。
JSF及它的未來(lái)

Java Server Faces 簡(jiǎn)稱(chēng)JSF,是一種面向組件和事件驅(qū)動(dòng)模型的WEB開(kāi)發(fā)技術(shù)。JSF的誕生還要追溯到2001年。在2001年5月,Sun制定了一個(gè)用戶(hù)界面框架的規(guī)范JSR#127.

而JSF 規(guī)范的1.0到2004年3月才得以面世。直到JAVA EE 5的發(fā)布,JSF推出1.2版本并作為JAVA EE 5的一部分同時(shí)發(fā)布。歷經(jīng)5年的風(fēng)雨,JSF現(xiàn)在成為了JAVA企業(yè)應(yīng)用規(guī)范的一部份。

我在上節(jié)討論ASP.NET的成功時(shí),已經(jīng)介紹了面向組件,基于事件驅(qū)動(dòng)模型的WEB開(kāi)發(fā)技術(shù)的優(yōu)勢(shì)。并從ASP.NET的成功可以看出面向組件和基于事件驅(qū)動(dòng)模型是未來(lái)WEB技術(shù)的發(fā)展方向。

從技術(shù)上來(lái)看JSF是非常先進(jìn)的,提供了很多復(fù)雜的組件支持類(lèi)似Spring的依賴(lài)注入功能。頁(yè)面流程控制也通過(guò)Faces-config.XML來(lái)配置,而不是寫(xiě)死在代碼里。這有點(diǎn)與Struts類(lèi)似。同時(shí)像SUN,Oracle,Boland,IBM等公司都為JSF提供了開(kāi)發(fā)環(huán)境,Sun的 Java Studio Creator2 和Oracle的Oralce Jdeveloper 10g都是免費(fèi)的JSF開(kāi)發(fā)工具,像Eclipse也有相應(yīng)的插件提供對(duì)JSF的支持。JSF技術(shù)也同時(shí)得到了許多廠(chǎng)商的支持,如Sun的JSF WEB UI,IBM的JSF extension,Oracle的ADF Faces.還有許多開(kāi)源項(xiàng)目如My Faces都提供了對(duì)JSF的支持和擴(kuò)展。

這樣看來(lái),JSF成為了JAVA EE的標(biāo)準(zhǔn),又得到了眾多廠(chǎng)商和組織的支持,那么JSF應(yīng)該是前途一片光明啦?

何以見(jiàn)得,JSF錯(cuò)過(guò)了它的最好發(fā)展時(shí)期。Sun其實(shí)很早之前就想簡(jiǎn)化JSP的開(kāi)發(fā),用一種新的技術(shù)來(lái)取代JSP。從而簡(jiǎn)化整個(gè)WEB層的開(kāi)發(fā)。于是在 2001年就開(kāi)始制定了JSF的規(guī)范,但是由于SUN的官僚作風(fēng)及商業(yè)推廣的失敗,JSF一直未能走向前臺(tái)。如果SUN能在2002年或2003年,在 JSP最紅火的時(shí)候全力推出JSF。取名為JSP 2.0或JSP 3.0。而不是一意孤行的取名為JSF,那么現(xiàn)在JAVA的WEB開(kāi)發(fā)早已經(jīng)是面向組件和基于事件驅(qū)動(dòng)了。

成熟和穩(wěn)定方面:

JSP的確是一種非常成熟和穩(wěn)定的技術(shù),就是因?yàn)镴SP太成熟了,所以才導(dǎo)致了JSF的發(fā)展緩慢。世界上有太多采用JSP技術(shù)的成功案例,SUN非要把 JSF變成一個(gè)新生兒,誰(shuí)也不愿意去冒這個(gè)風(fēng)險(xiǎn)。雖然采用JSP技術(shù)進(jìn)行WEB開(kāi)發(fā)是復(fù)雜的,而且開(kāi)發(fā)周期要長(zhǎng),但是它是穩(wěn)定并且成熟的WEB技術(shù)。 JSP已經(jīng)占據(jù)了大量的市場(chǎng)份額,如果JSF要想取代JSP,那么JSF就必須有成功的案例來(lái)證明JSF能像JSP那樣可靠和穩(wěn)定。

廠(chǎng)商的支持方面:

廠(chǎng)商對(duì)JSF的支持遠(yuǎn)遠(yuǎn)不夠。從JSF1.0,到JSF1.2的發(fā)布并成為JAVA EE的標(biāo)準(zhǔn),經(jīng)歷了近五年的時(shí)間。各個(gè)廠(chǎng)商一直對(duì)JSF持觀望的態(tài)度,其實(shí)主要還是取決于SUN。如果SUN在早期就把JSF作為JAVA EE的標(biāo)準(zhǔn),那么現(xiàn)在JSF已經(jīng)是遍地開(kāi)花了。JSF的命運(yùn)從一開(kāi)始就像EJB,在實(shí)驗(yàn)室時(shí)呆了5年之久,要把它定制成一個(gè)大而全的規(guī)范是不可能的,任何技術(shù)都應(yīng)該聽(tīng)取開(kāi)發(fā)人員的意見(jiàn),EJB的失敗已經(jīng)充分的證明了在辦公室寫(xiě)出的規(guī)范并不是開(kāi)發(fā)人員所需要的。
雖然IBM,Oracle等廠(chǎng)商現(xiàn)在都已經(jīng)提供了對(duì)JSF的支持,但是他們提供的JSF組件庫(kù)都非常有限,而且有些組件是已經(jīng)過(guò)時(shí)的組件。同 ASP.NET 2.0相比,各廠(chǎng)商對(duì)JSF的支持遠(yuǎn)遠(yuǎn)不夠,這又怎么能夠吸引開(kāi)發(fā)者和企業(yè)選擇JSF呢?同時(shí),ASP.NET 2.0定義的頁(yè)面的生命周期要比JSF靈活及有用得多。而JSF的生命周期則顯得生硬和呆板。

我們上節(jié)說(shuō)到ASP.NET的成功離不開(kāi)VS 2003和VS 2005這些優(yōu)秀的IDE開(kāi)發(fā)工具的支持。雖然有Sun的Java Studio Creator2 和Oracle的Oralce Jdeveloper 10g免費(fèi)支持JSF開(kāi)發(fā),但它們都不是最主流的JAVA 企業(yè)應(yīng)用開(kāi)發(fā)工具。而像目前最主流的ECLIPSE卻沒(méi)有很好的支持JSF的開(kāi)源免費(fèi)插件。在開(kāi)源的大旗下,恐怕很少有人會(huì)再去選擇收費(fèi)的開(kāi)發(fā)工具吧。 WEB開(kāi)發(fā)只是JAVA企業(yè)應(yīng)用開(kāi)發(fā)的一部份,而不是全部。希望哪一天能見(jiàn)到Sun或IBM這樣的商業(yè)公司來(lái)為ECLIPSE這些主流IDE開(kāi)發(fā)支持 JSF的插件。其實(shí)世面上還有一些專(zhuān)門(mén)針對(duì)JSF的開(kāi)發(fā)工具,但是我們要知道,JSF僅僅是JAVA企業(yè)應(yīng)用開(kāi)發(fā)的一部份,我們更需要一個(gè)成熟的集成開(kāi)發(fā)環(huán)境,如重構(gòu),單元測(cè)試,甚至整個(gè)項(xiàng)目的生命周期管理。我們需要的是在一個(gè)主流的成熟的集成開(kāi)發(fā)環(huán)境上提供對(duì)JSF的支持,而不是那些的專(zhuān)門(mén)針對(duì)JSF的單一編輯工具。

Sun商業(yè)策略方面:

SUN的商業(yè)推廣策略也是JSF能否成功的關(guān)鍵。SUN不缺技術(shù),但是缺商業(yè)推廣。JSF遲遲未能成為JAVA EE的標(biāo)準(zhǔn),延誤了JSF的推廣。把JSF取名為JSP 3.0都可能對(duì)JSF發(fā)展更為有利。很多時(shí)機(jī)被SUN一再錯(cuò)過(guò)了,才讓JSF在今天顯得如此的尷尬。JSF社區(qū)的建設(shè)及該如何吸引開(kāi)發(fā)人員和企業(yè)轉(zhuǎn)向 JSF?SUN的商業(yè)推廣策略是至關(guān)重要的。

天將降大任于斯JSF也?。?!雖然WEB開(kāi)發(fā)技術(shù)注定要進(jìn)入面向組件和基于事件驅(qū)動(dòng)的時(shí)代, JSF 能否拯救WEB的江湖呢?讓我們共同拭目以待吧??!

【編輯推薦】

  1. JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路(一)
  2. JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路(二)
  3. 在JSF應(yīng)用中捕捉managed-bean構(gòu)造方法
  4. 表現(xiàn)層框架Struts/Tapestry/JSF比較
  5. 簡(jiǎn)單介紹JSF標(biāo)簽

本文名稱(chēng):JSF能否拯救WEB
文章出自:http://www.5511xx.com/article/djeedji.html