国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
RIAREST如何來(lái)化解Java的劣勢(shì)

 RIA+REST如何來(lái)化解Java的劣勢(shì)收藏

我在前面兩篇blog中都說(shuō)到:“REST是簡(jiǎn)化Java Web開(kāi)發(fā)的良藥”。
Java的劣勢(shì)在何處?與前些年相比,現(xiàn)在看的已經(jīng)很清楚了,Java的劣勢(shì)就在于做Web表現(xiàn)層的開(kāi)發(fā)。Web表現(xiàn)層開(kāi)發(fā)需求變化頻繁,Java這類(lèi)靜態(tài)類(lèi)型的語(yǔ)言不夠敏捷,嚴(yán)重影響了開(kāi)發(fā)的效率。

而JavaEE的一個(gè)最大的缺點(diǎn),就是企圖在服務(wù)器端搞定一切,我將這種開(kāi)發(fā)方式稱(chēng)作“傳統(tǒng)集中式的開(kāi)發(fā)方式”。標(biāo)準(zhǔn)的J2EE三層架構(gòu)——Web表現(xiàn)層、業(yè)務(wù)層、持久層,也許對(duì)于傳統(tǒng)的基于HTML表單的Web應(yīng)用來(lái)說(shuō)是恰當(dāng)?shù)?,但是現(xiàn)在已經(jīng)顯得落伍了。JavaEE企圖在服務(wù)器端完全搞定Web表現(xiàn)層的開(kāi)發(fā),給自己制造了一個(gè)大麻煩。無(wú)論是從這門(mén)語(yǔ)言本身,還是從支持這門(mén)語(yǔ)言主要的公司Sun、IBM、BEA、Oracle來(lái)說(shuō),他們并不擅長(zhǎng)此道。擅長(zhǎng)此道的是哪些公司呢?Adobe/Macromedia、M$、Borland/CodeGear。

如果Web表現(xiàn)層必須要在服務(wù)器端開(kāi)發(fā),Ruby on Rails的優(yōu)勢(shì)與JavaEE相比要明顯的多。RoR要比任何主流的JavaEEWeb表現(xiàn)層框架和技術(shù)(Struts、WebWork、SpringMVC、JSF、Tapestry、etc.)更加靈活,學(xué)習(xí)成本更低,開(kāi)發(fā)效率更高。

換個(gè)思路來(lái)思考,如果我們不再假設(shè)客戶(hù)端就是幾乎毫無(wú)智能的ThinClient將會(huì)如何?假設(shè)我們能夠充分利用客戶(hù)端的Ajax組件庫(kù)和各種RIA技術(shù),將Web表現(xiàn)層完全或者絕大部分前推到客戶(hù)端來(lái)開(kāi)發(fā),并且通過(guò)REST風(fēng)格的API來(lái)與服務(wù)器通信,那么服務(wù)器的角色就變成了類(lèi)似于Web服務(wù)提供者(注意:這里和Web服務(wù)還是有很大的差別,因?yàn)镽EST在這里是用于同一個(gè)應(yīng)用內(nèi)部的通信,即連接一個(gè)應(yīng)用的客戶(hù)端和服務(wù)器端)的角色,這樣就能夠極大地簡(jiǎn)化服務(wù)器端Java的開(kāi)發(fā)工作,讓它從自己所不擅長(zhǎng)的領(lǐng)域退出來(lái),集中精力做自己最擅長(zhǎng)的一些工作。

這個(gè)趨勢(shì)其實(shí)在3年多前我在JavaEye論壇中宣傳基于XMLHttpRequest的開(kāi)發(fā)方式的時(shí)候就已經(jīng)看到了,現(xiàn)在這個(gè)趨勢(shì)已經(jīng)越來(lái)越明顯了,新一代Web開(kāi)發(fā)方式的面貌已經(jīng)逐漸浮出水面。Adobe AIR/Flex、M$WPF/Silverlight都是這樣一類(lèi)的開(kāi)發(fā)方式,當(dāng)然Ajax也可以以這種方式來(lái)做開(kāi)發(fā)。我給這樣一類(lèi)開(kāi)發(fā)方式取名叫做“RIA+REST”。

在服務(wù)器端搞定一切當(dāng)然也有好處,因?yàn)檫@樣可以獲得最佳的控制,安全問(wèn)題解決起來(lái)也比較容易。但是其代價(jià)就是無(wú)法得到最佳的交互設(shè)計(jì),強(qiáng)迫用戶(hù)不得不承受降級(jí)的使用體驗(yàn)。如果這樣的用戶(hù)體驗(yàn)是能夠接受的,那么采用這種方式做設(shè)計(jì)和開(kāi)發(fā)問(wèn)題不大。但是如果這樣的用戶(hù)體驗(yàn)是無(wú)法接受的,那么就需要嚴(yán)肅地考慮RIA+REST的開(kāi)發(fā)方式了。與傳統(tǒng)集中式的開(kāi)發(fā)方式相比,這是一類(lèi)新型的分布式的開(kāi)發(fā)方式,在一些方面(交互設(shè)計(jì)、服務(wù)器端架構(gòu))得到了簡(jiǎn)化的同時(shí),也會(huì)使得一些方面(服務(wù)器端的控制能力、安全性)復(fù)雜化,所以要求架構(gòu)師作出慎重的權(quán)衡。分布式應(yīng)用必然會(huì)帶來(lái)很大的復(fù)雜性,但是REST無(wú)疑是基于Web的分布式應(yīng)用的最理想的架構(gòu)風(fēng)格,在Web領(lǐng)域REST的優(yōu)勢(shì)要比RPC和分布式對(duì)象等架構(gòu)風(fēng)格大的多。同時(shí)REST是簡(jiǎn)練實(shí)用的,可以很大程度上降低分布式應(yīng)用的巨大復(fù)雜性。

根據(jù)我的經(jīng)驗(yàn),在絕大多數(shù)中小型項(xiàng)目中,Web表現(xiàn)層開(kāi)發(fā)的工作量要比后面兩層的開(kāi)發(fā)工作量的總和還要大,也就是占到項(xiàng)目開(kāi)發(fā)工作量的一半以上。當(dāng)用戶(hù)需要較為苛刻的使用體驗(yàn)時(shí),傳統(tǒng)集中式的開(kāi)發(fā)方式完全無(wú)法滿(mǎn)足要求,而必須由Ajax來(lái)補(bǔ)充。然而,對(duì)于有復(fù)雜交互需求的應(yīng)用來(lái)說(shuō),RoR應(yīng)用的開(kāi)發(fā)效率同樣也會(huì)受到基于DHTML的開(kāi)發(fā)效率的拖累,而無(wú)法充分體現(xiàn)出其敏捷的優(yōu)勢(shì)。

如果Java將做Web表現(xiàn)層開(kāi)發(fā)的負(fù)擔(dān)卸掉,讓客戶(hù)端的RIA技術(shù)來(lái)承擔(dān),那么Java在服務(wù)器端開(kāi)發(fā)中與Ruby相比的劣勢(shì)就不是那么明顯了,甚至在很多方面還有優(yōu)勢(shì)。從整體架構(gòu)的開(kāi)發(fā)效率來(lái)考慮,
RIA + REST + Java
RIA + REST + Ruby
兩種架構(gòu)組合也許可以達(dá)到大致相同的級(jí)別,即使Java在開(kāi)發(fā)效率上仍有劣勢(shì),但是也不會(huì)像在傳統(tǒng)集中式的開(kāi)發(fā)方式中那樣懸殊。有很多傳言說(shuō)基于RoR開(kāi)發(fā)的項(xiàng)目與基于Java開(kāi)發(fā)的項(xiàng)目相比,開(kāi)發(fā)效率能夠高出5-10倍。我雖然對(duì)于Java并不樂(lè)觀,但是對(duì)于RIA+REST這種新的開(kāi)發(fā)方式,我估計(jì)開(kāi)發(fā)效率的差距應(yīng)該可以降低到2倍左右。不過(guò)開(kāi)發(fā)效率只是一個(gè)方面,如果服務(wù)器端的代碼經(jīng)過(guò)良好重構(gòu),重用性非常好,不會(huì)在半年之后就成為必須要拋棄的遺留代碼,那么Ruby在開(kāi)發(fā)效率方面的巨大優(yōu)勢(shì)也許只會(huì)停留在最初的階段。隨著代碼的積累,這種開(kāi)發(fā)效率的優(yōu)勢(shì)會(huì)逐漸降低下來(lái)。

Ruby會(huì)不會(huì)擁抱RIA呢?RoR2.0將會(huì)是完全基于REST設(shè)計(jì)的開(kāi)發(fā)框架,他們現(xiàn)在擁抱REST,就是為將來(lái)?yè)肀IA做準(zhǔn)備。對(duì)于傳統(tǒng)集中式的開(kāi)發(fā)方式來(lái)說(shuō),應(yīng)用REST當(dāng)然也會(huì)帶來(lái)很大的好處,但是我認(rèn)為這并不是RoR的主要的目的。RoR擁抱REST,是希望使自己在將來(lái)的技術(shù)變遷過(guò)程中處于一個(gè)非常有利的位置。對(duì)于未來(lái)Web開(kāi)發(fā)技術(shù)的發(fā)展,REST處在一個(gè)核心的位置,它是連接客戶(hù)端和服務(wù)器端的紐帶,REST也會(huì)極大影響客戶(hù)端架構(gòu)和服務(wù)器端架構(gòu)的設(shè)計(jì)和建模。“面向資源的Web應(yīng)用”,將會(huì)是未來(lái)幾年的一個(gè)技術(shù)熱點(diǎn)。

Java在對(duì)于REST的支持這個(gè)方面行動(dòng)要遲緩的多。官方正在制訂的JSR311規(guī)范主要還是面向不同的應(yīng)用之間的集成,也就是主要覆蓋SOAP所覆蓋的領(lǐng)域,而不是面向RIA+REST這樣一類(lèi)新型的Web應(yīng)用開(kāi)發(fā)方式。不過(guò),一些支持REST的Java框架已經(jīng)存在,也可以基于Adobe的Flex框架(今年之內(nèi)就會(huì)開(kāi)源)來(lái)做設(shè)計(jì),這些框架使得基于Java做REST設(shè)計(jì)和開(kāi)發(fā)成為了一件比較容易的事情。我們不指望Sun已經(jīng)有很多年了,日子不是一樣過(guò)來(lái)了嗎?Sun其實(shí)可以坦承:“我不做老大已經(jīng)很多年了”。

綜上所述,我認(rèn)為支持REST對(duì)于JavaEE而言,意義甚至要比RoR更大。是否能夠擁抱未來(lái)Web開(kāi)發(fā)技術(shù)的發(fā)展趨勢(shì),對(duì)于Java語(yǔ)言未來(lái)的命運(yùn)來(lái)說(shuō)是至關(guān)重要的。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
RIA REST如何來(lái)化解Java的劣勢(shì)
【程序思考】RIA 對(duì)于 java 在 web 開(kāi)發(fā)領(lǐng)域是否是一個(gè)轉(zhuǎn)機(jī)? - mulder...
關(guān)于三種主流WEB架構(gòu)的思考
JavaEE到底忽略了什么?
{定義介紹}什么是REST
在咖啡里加糖 論Java世界的Ruby
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服