欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

Web發(fā)展簡史((webapp+Java原生)移動端開發(fā) )+web網(wǎng)站) - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >

Web發(fā)展簡史((webapp+Java原生)移動端開發(fā) )+web網(wǎng)站)

發(fā)表時間:2019-4-1

發(fā)布人:葵宇科技

瀏覽次數(shù):35

Web發(fā)展簡史--------->((webapp+Java原生)移動端開發(fā)(微信小程序,公眾號,頭條app))+web網(wǎng)站)

Web發(fā)展簡史

1:在那時,Web開發(fā)還比較簡單,開發(fā)者經(jīng)常會去操作web服務(wù)器(主要還是他自己的機(jī)器),并且他會寫一些HTML頁面放到服務(wù)器指定的文件夾(/www)下。這些HTML頁面,就在瀏覽器請求頁面時使用。(當(dāng)時只能獲取HTML,靜態(tài)頁面)

2:問題就出現(xiàn)了,你只能獲取到靜態(tài)內(nèi)容。倘若你想讓訪問者看到有多少其他訪問者訪問了這個網(wǎng)站呢(還記得那些統(tǒng)計流量的旋轉(zhuǎn)圖片嗎?!),或者倘若你想讓訪問者去填寫這樣一個表單,包含有姓名和郵件地址呢?于此就轉(zhuǎn)向了CGI和Perl腳本,在web服務(wù)器端運(yùn)行一段短小的代碼,并能與文件系統(tǒng)或者數(shù)據(jù)庫進(jìn)行交互(可以交互啦!提交個表單,查看個信息)

3:當(dāng)時組織CGI/Perl這樣的腳本代碼太混亂了。CGI伸縮性不是太好(經(jīng)常是為每個請求分配一個新的進(jìn)程),也不太安全(直接使用文件系統(tǒng)或者環(huán)境變量),同時也沒提供一種結(jié)構(gòu)化的方式去構(gòu)造動態(tài)應(yīng)用程序。幾年來一直很困惑,直到大約2005年左右,出現(xiàn)了Java Server Pages(JSP),微軟的ASP,以及PHP!我喜歡把當(dāng)時的參考架構(gòu)比作成IIS和ASP.NET,你可以用Visual Studio快速構(gòu)建一個可伸縮并且安全的應(yīng)用程序。(因為cgi交互不怎么好,所以在服務(wù)器上開始寫(jsp,asp,php動態(tài)語言代碼了進(jìn)行幫助查找數(shù)據(jù),查找圖片,動態(tài)語言效率更高))

4:直到當(dāng)時,web服務(wù)器多半會返回整個頁面或者文檔,但AJAX(2005)的出現(xiàn),讓事情變得很有意思。AJAX允許客戶端的JavaScript腳本為局部頁面提供請求服務(wù),然后可以在無需回到服務(wù)器情況下動態(tài)刷新部分頁面,也就是更新瀏覽器中的document對象,通常稱作DOM,或者文檔對象模型。(javascript的出現(xiàn)讓用戶更加快速的更改,修改頁面內(nèi)容,而不用再去訪問WEB服務(wù)器去請求,返回HTML修改頁面啦!javascript訪問更快)

雖然從服務(wù)器端返回的仍然是HTML,但瀏覽器上的代碼能把這HTML片段內(nèi)嵌到當(dāng)前頁面中。也就是說web應(yīng)用的響應(yīng)可以更快,這時我們真正用web應(yīng)用取代了web頁面。谷歌的GMail和谷歌地圖都是當(dāng)時AJAX的殺手級產(chǎn)品。隨后用AJAX局部刷新就如雨后春筍般出現(xiàn)。

5:在隨后的幾年時間里,AJAX成為了焦點(diǎn),但在服務(wù)器端仍然使用著舊有的技術(shù)。大概在2007年,37signals公司公開其成員–Ruby>(這時候后臺框架打開了新的大門,后端框架先被提出來的,現(xiàn)在的前端趨勢也開始要有MVC的前端框架啦!WEB前端全棧開發(fā),node.js直接訪問數(shù)據(jù)庫,mongo數(shù)據(jù)庫,)

6:在2007到2010年期間,涌現(xiàn)了3種開發(fā)潮流:

第一個是智能手機(jī)和移動應(yīng)用潮流。通常情況下,許多應(yīng)用程序同時有web和移動應(yīng)用兩種版本。盡管如此,服務(wù)端仍然返回的是HTML頁面,而不是其它移動應(yīng)用可以識別。因此,你需要返回的是結(jié)構(gòu)化數(shù)據(jù)來取代HTML。

第二個開發(fā)潮流是jQuery。這是一個非常流行的JavaScript庫,能夠很容易構(gòu)建動態(tài)、美妙的web應(yīng)用,甚至是AJAX!

第三個潮流是Node.js的發(fā)布。這是第一次能讓你用JavaScript開發(fā)高性能的服務(wù)端程序,進(jìn)而可能結(jié)束“客戶端開發(fā)者”要知道HTML/JavaScript,“服務(wù)端開發(fā)者”要知道.NET/C#/Ruby這樣的噩夢。(json是服務(wù)器向瀏覽器返回的一種數(shù)據(jù)結(jié)構(gòu),瀏覽器解析json提取里面的key-value鍵值對,服務(wù)器端(jsp,php)可以把數(shù)據(jù)庫里面的數(shù)據(jù)封裝到j(luò)son中,發(fā)給瀏覽器)

7:盡管這是一個不錯的架構(gòu),但我們可以重用一些在客戶端的收獲去簡化那些曾經(jīng)發(fā)生在像客戶端意大利面似的jQuery代碼。和Rails精神類似,我們需要用一種規(guī)定的方式從服務(wù)端獲取到數(shù)據(jù),再對客戶端的HTML頁面進(jìn)行包裝。因此,在接下來的2年時間里,業(yè)界出現(xiàn)了許多用于簡化客戶端開發(fā)的框架,諸如Backbone,Ember,Derby和Meteor,當(dāng)然也包括我的最愛,AngularJS,vlue.js。(這些東西訪問數(shù)據(jù)庫,把數(shù)據(jù)從服務(wù)器取出到瀏覽器,瀏覽器MVC再去解析數(shù)據(jù))

8:因此,這就是我們看到的今天,而我后面要講到的參考架構(gòu)是這樣的,mongodb作為數(shù)據(jù)庫服務(wù)器,node/express作為web應(yīng)用服務(wù)器,客戶端使用AngularJS,同時也使用Bootstrap樣式風(fēng)格。我發(fā)現(xiàn)這種架構(gòu)允許我能夠快速構(gòu)建web服務(wù)以及基于AngularJS的客戶端接口,甚至和其它的服務(wù),如PhoneGap或者其它原生移動開發(fā)工具一樣,進(jìn)行移動應(yīng)用的開發(fā)。(這種開發(fā)模式越來越可以快速開發(fā)啦!應(yīng)用到webapp開發(fā),這些前端一般用于業(yè)務(wù)型強(qiáng),主要用于給用戶展現(xiàn)內(nèi)容和數(shù)據(jù),業(yè)務(wù)型比較強(qiáng)的。移動端開發(fā)還有Java原生開發(fā)的,主要用于邏輯性強(qiáng)的。Java安卓原生開發(fā)(處理密碼處理,過濾什么的)邏輯性比較強(qiáng)的應(yīng)用?,F(xiàn)在APP可以使用混合式開發(fā)(webapp(html+css+javascript(mui移動端js框架)+node.js+mongo)+原生Java開發(fā)),現(xiàn)在網(wǎng)站開發(fā)用的還是html+css+javascript(包括js框架)前端+后端(ssh+ssm+springboot框架))。這就是現(xiàn)在主流的開發(fā)模式。

https://blog.csdn.net/zzzkk2009/article/details/9849431 經(jīng)典的安卓移動端開發(fā)(web+Java原生開發(fā))web系統(tǒng)發(fā)展歷史

https://blog.csdn.net/z742182637/article/details/52055970 也是web系統(tǒng)開發(fā)歷史(不怎么清晰,不是太好)

https://blog.csdn.net/youngyouth/article/details/84755278#web_5 web服務(wù)器架構(gòu)的發(fā)展歷史

1. 靜態(tài)頁面時代

大學(xué)時候,上機(jī)還得換卡穿拖鞋,Novell的網(wǎng)絡(luò)是很神奇的,然而更神奇的是通訊原理老師半神秘的講他上 Internet,“Cernet(教育網(wǎng))有條64K的出口,半年前還很快,現(xiàn)在已經(jīng)比較卡了”。就這樣,我們用Netscape指向Yahoo。那是一個HTML加圖片的世界,充斥著各種花哨閃耀的字體和鞠躬的小人,藍(lán)色連接點(diǎn)擊后會奇幻的變色。

我們開始用不熟練的HTML和簡陋的設(shè)計來設(shè)計網(wǎng)頁,并且知道這邊有個瀏覽器,那邊有個叫WebServer的東西,但管理Sun工作站的機(jī)房老師總是盯的很緊,不會讓你動系統(tǒng)半分。聽說有個叫Linux的神奇東西,好吧我想嘗試,可是我只有一臺攢的電腦,以及若干張5寸3寸的軟盤。我至今感謝一位師兄,他幫我下載并切分了一個版本的Mandrake,就這樣室友看到非常奇怪的一幕,我奔波在機(jī)房宿舍之間,仔細(xì)計算容量來拷貝,就這樣在假期里我第一次搭建了Apache。

2. CGI時代

很快頁面上流行一個叫做計數(shù)器的東西,免費(fèi)的收費(fèi)的建站網(wǎng)站都把它當(dāng)作賣點(diǎn),“立體超炫變色時尚計數(shù)器”,很快我們看到幾乎每個頁面都有了一個點(diǎn)擊量在88888的酷裝置,只是無論怎么點(diǎn)都不會變化。而校園里張貼著令人眼紅的廣告,“征人寫CGI程序,一支500元!“。

慢慢的,知道了CGI是利用進(jìn)程間輸入輸出通信,和WebServer進(jìn)行通信,從而可以寫程序來控制頁面輸出的內(nèi)容。但在當(dāng)時會給硬盤分區(qū)就在中關(guān)村被看成電腦高手的年代,實在是會者寥寥。即便到了今天,我依然對Perl敬而遠(yuǎn)之。一些前輩用C寫出更高級的CGI應(yīng)用,比如WebMail,挖到第一桶金,成為今天互聯(lián)網(wǎng)的先驅(qū)。

3. PHP露出鋒芒

說實話,我認(rèn)為PHP是最受益于互聯(lián)網(wǎng)浪潮的語言,在合適的時間和好伙伴Mysql一起出現(xiàn)。利用Apache的模塊mod-php,將php作為web服務(wù)器的一部分運(yùn)行,效率和維護(hù)性都達(dá)到很好的提升。腳本語言成為互聯(lián)網(wǎng)前端開發(fā)主力一直到今天。PHP和大哥Perl,以及兄弟Python,Ruby一起盤據(jù)在編程語言排行榜5-10名位置。

同樣的Mysql也是時代的嬌子,它快速靈活易用成為網(wǎng)站數(shù)據(jù)庫的首選,但很長時間里,Mysql被其他數(shù)據(jù)庫詬病,別說Oracle等高富帥,即便是同為開源的Postgres社區(qū)里,也會有這樣的聲音,“不支持事務(wù)也叫數(shù)據(jù)庫?”。沒關(guān)系,開源社區(qū)很快為其加入各種引擎,如今Mysql絕對是裝機(jī)總量第一的數(shù)據(jù)庫。

4. J2EE

Java時代來臨,一杯咖啡,一個可跳動的小精靈牽動了所有的大型軟件公司。沒錯是所有,包括微軟,Sun公司一時星光無限,所有的開發(fā)人員都在談Java。人們對其桌面表現(xiàn)失望進(jìn)而質(zhì)疑時,J2EE及時出現(xiàn)了,Servlet+JSP快速成為Web開發(fā)的好用技術(shù)。能夠跨平臺,獨(dú)立解包使用的Web服務(wù)器,掛接任意數(shù)據(jù)庫的JDBC接口,一時世界變得很美好。

微軟的ASP也出現(xiàn)了,一開始也是腳本解釋,和PHP等技術(shù)類似。很快微軟的C#和dotNET戰(zhàn)略出臺,ASP也升級為ASP.Net,從此dotNET和J2EE是競爭者,更是一對站在相同站壕的朋友,互相學(xué)習(xí)和抄襲對方的技術(shù)和設(shè)計,直到今天。

5. Web層框架百花齊放

Servlet是一個優(yōu)異的Web技術(shù)規(guī)范,但面對叢多的開發(fā)需求,還是不能很好的覆蓋。Struts框架很快成為主流,今天我們依然看到很多.do后綴的頁面。Struts主要做了三件事,一是對請求Url進(jìn)行很好的梳理,通過Command模式把請求指配到Action對象上,并可以用同期出現(xiàn)的Ioc框架進(jìn)行注入。二是梳理出若干有用好用的Intecepter,并可以自由組合構(gòu)成自己的Stack。三是對頁面流轉(zhuǎn)流程通過xml的方式可以靈活定義。

同期,數(shù)以百計的各種框架出現(xiàn)了,多數(shù)都是針對Servlet的空白點(diǎn),在幾個方面進(jìn)行代碼或者配置的約定,可謂百花齊放,百家爭鳴,我想Java社區(qū)能到今天依然繁榮,這種海納百川,開放的態(tài)度是根本原因。如今很多框架已經(jīng)走過生命期,但還有很多活躍的,其中Webwork即Struts2,和SpringMVC是模板技術(shù)類別最出色的。GWT,Wicket等在頁面組件類表現(xiàn)不錯,還有脫離Servlet束縛Play等框架。

6. WithoutEJB

J2EE里,除了Servlet外另一個重量級的規(guī)范就是EJB。EJB設(shè)計的來源是Corba技術(shù),分布式對象技術(shù)在EJB規(guī)范中有完整的體現(xiàn)。Rod在著作中對EJB規(guī)范粗重龐大難用提出各種質(zhì)疑,尤其是針對其強(qiáng)制分布的要求。我的觀念是分布式支持沒有錯,現(xiàn)在EJB規(guī)范中對于Local和Remote的劃分定義是正確的。開發(fā)人員應(yīng)該一開始就需要了解接口粒度的劃分,本地和遠(yuǎn)程接口是不同的。對于一般的小型應(yīng)用,Servlet和EJB容器都在一個虛擬機(jī)中,本地接口是合理的,但對于大型企業(yè)應(yīng)用和互聯(lián)網(wǎng)級別應(yīng)用,勢必需要服務(wù)的遠(yuǎn)程劃分和調(diào)用。所以早期的EJB,可以說一方面設(shè)計不完備,另一方面又過度設(shè)計。但EJB自從3以后完全脫胎換骨,成為設(shè)計良好的規(guī)范。

Spring作為開發(fā)框架,把Ioc和AOP能力發(fā)揮的淋漓盡致,在各個層次很好融合其他技術(shù)和項目庫,一直是Java Web開發(fā)的主流。不過面對CDI等JavaEE規(guī)范,在注入,生命期管理,對象解耦等優(yōu)勢不在。我預(yù)計今后Spring, JavaEE和Osgi會在主流Java開發(fā)框架方向競爭,也會相互借鑒和融合。

7. Ajax

Javascript是瀏覽器正統(tǒng)的腳本語言,但在那個機(jī)器性能不佳的年代,一段Js代碼造成鼠標(biāo)沒有響應(yīng)的情況比比皆是。Js的給人影響就是頁面上飄來飄去“點(diǎn)擊我”對話框,頁面上走馬燈效果的變色通告,或者是幾十層模態(tài)對話框的惡意頁面,很多網(wǎng)吧的機(jī)器默認(rèn)Js是禁用的。在很長的一段時間里,Java web開發(fā)一個潛規(guī)則就是少手寫Js文件,這樣可以很好的支持多種瀏覽器和提高效率。

谷歌火了,Ajax也成為火爆的前端技術(shù),我們在使用gmail,google map等產(chǎn)品時,有了另一種體驗,點(diǎn)擊鏈接或按鈕后,即便網(wǎng)絡(luò)不算流暢,頁面不再全白重新刷新,而是內(nèi)容漸漸的出現(xiàn)。其原理就是利用Js腳本到后臺服務(wù)器獲取數(shù)據(jù),在瀏覽器前端對數(shù)據(jù)進(jìn)行解析和渲染,在這個過程中,大多數(shù)頁面并不需要進(jìn)行改變,只是更新頁面中一部分即可。谷歌公司大力支持Firefox使其重生,并和蘋果一起發(fā)展webkit項目,各自發(fā)展了chrome和safari瀏覽器,伴隨者頁面渲染能力大力提升同時,Js腳本的解析能力也突飛猛進(jìn)。我個人認(rèn)為Ajax這個技術(shù)看似簡單,但卻是新一代Web,所謂Web2.0的基石性質(zhì)技術(shù),為互聯(lián)網(wǎng)泡沫后互聯(lián)網(wǎng)的復(fù)興和今日騰飛起到了重要作用。

8. Ruby and Rails

快速成長的互聯(lián)網(wǎng)需要快速的web開發(fā)能力,Rails框架出現(xiàn)了,同時火爆的還有Ruby語言,它的出現(xiàn)滿足了當(dāng)時開發(fā)者的需要,快速開發(fā),玩cool的東西,有完備的后端模型支持。讓我們仔細(xì)分析一下Rails中MVC就能發(fā)現(xiàn),Model中對實體對象的關(guān)系定義,和JavaEE的JPA很多概念一致,但利用Ruby語言的元能力,可以直接對實體對象進(jìn)行功能擴(kuò)展,而其時Java社區(qū)還在為貧血,充血對象爭論不休。Control,View等層次也能和Java的一些框架概念一致,不過有些設(shè)計構(gòu)思更巧妙,而且Rails的基因就是滿足互聯(lián)網(wǎng)開發(fā)需要,和JavaEE企業(yè)級應(yīng)用有所不同。

很快的,各種語言紛紛出現(xiàn)模仿Rails的項目,Java的Grails, SpringROO,JBossForge,Python的Django,PHP的Symfony等等。毫無例外的,能有影響力的都是開源的,有良好社區(qū)能力建設(shè)的項目。

9. JSF和CDI

讓我們回到企業(yè)應(yīng)用開發(fā),大家有沒有想過所謂企業(yè)應(yīng)用和互聯(lián)網(wǎng)應(yīng)用之間最大的差別是什么?我認(rèn)為是用戶數(shù)量級別的差異,導(dǎo)致前端設(shè)計方式,軟件體系,后臺數(shù)據(jù)庫,緩存技術(shù)應(yīng)用,有不同的設(shè)計理念和方式。用更技術(shù)化來說,就是會話和事務(wù)。企業(yè)應(yīng)用是有強(qiáng)會話和事務(wù)需求的,而這兩個技術(shù)詞語也會一并關(guān)聯(lián)存在。很簡單,在一個事務(wù)中會經(jīng)過多次會話過程,直到這個事務(wù)全部做完。和我們?nèi)粘^k事是一樣的,填單子,和辦事人員溝通,修改單據(jù),蓋章,各種口舌,最終感慨,辦事真難。

從軟件層面考慮,一個企業(yè)應(yīng)用軟件可能用戶數(shù)并不太多,就企業(yè)中百十號人,但前后臺的交互是長時間,多次會話交互的。JSF技術(shù)其實是借鑒了微軟ASP.net,它們繼承了傳統(tǒng)IDE快速開發(fā)的思路,希望通過拖拽連接可以快速開發(fā)一個應(yīng)用。頁面上的組件,對應(yīng)后臺服務(wù)器的業(yè)務(wù)組件,在得到服務(wù)器請求之后,組件需要做一系列動作來完成解析,校驗,模型重建,業(yè)務(wù)方法調(diào)用,頁面渲染等步驟,這些必然有個較長的過程。復(fù)雜性,效率,和其他技術(shù)的融合,JSF技術(shù)從誕生起就被質(zhì)疑不斷,而且面對每個明星技術(shù),都有些格格不入,比如Ajax出現(xiàn)了,而JSF要求的Post方式還需要重刷頁面。但JSF一直在改進(jìn),越來越科學(xué)完善。如今,配合CDI,JSF是企業(yè)應(yīng)用開發(fā)的首選技術(shù)之一,大家可以研究一下Oracle的應(yīng)用產(chǎn)品和ADF開發(fā)框架。

CDI是Seam框架的技術(shù)精華形成的JavaEE規(guī)范,在JavaEE7里面已經(jīng)成為最重要的規(guī)范之一。和Hibernate最終形成JPA一樣,CDI也是GavinKing構(gòu)思,開發(fā)推動的。仔細(xì)分析就會發(fā)現(xiàn),CDI幾乎彌補(bǔ)了JavaEE在現(xiàn)代開發(fā)需求中,對象方面定義的絕大多數(shù)不足,比如和DI規(guī)范定義了注入,生命期管理和會話范圍定義,完善了EJB對于普通POJO對于事務(wù),異步通知機(jī)制的定義,還有注解的堆疊定義,裝飾模式等等。有時候我就在想,假如JavaEE是GK從頭打造,我們開發(fā)人員會少走很多彎路,因為他對企業(yè)應(yīng)用的理解和用Java構(gòu)建框架和定義規(guī)范,都是貼近一線開發(fā)人員需求。唯一遺憾的就是CDI還沒有推動完成,他轉(zhuǎn)移興趣玩起語言了。關(guān)于JSF和CDI,我建議做相關(guān)產(chǎn)品的朋友,即便不用這樣的組合,最好也對其技術(shù)基本內(nèi)容有所了解,我想對思路擴(kuò)展是非常有好處的。

10. Netty,NodeJs,Vertx和異步化趨勢

Netty的領(lǐng)導(dǎo)者和Mina的主力開發(fā)者TrustLee,是一個說話慢條斯里的韓國人。面試時問我一個關(guān)于volatile問題,雙方都覺得非母語很別扭,所以就都簡單表達(dá)一下就算??晌覜]想到這個同齡的開發(fā)人員,日后對Java在互聯(lián)網(wǎng)公司的地位提升,起到這么大的作用,這個項目就是Netty。我們都知道Java異步集合庫的作者DougLea的功勞,Nio1代,對于Socket的異步化還不是很完善,即便是Nio2,工作重心還是文件系統(tǒng)的異步化處理,網(wǎng)絡(luò)層的異步化設(shè)計逐步加強(qiáng)改進(jìn)。因為Java的設(shè)計理念,正交化,接口堆疊,底層功能平臺統(tǒng)一化等給異步分布式網(wǎng)絡(luò)框架留出足夠的空間去發(fā)揮,Netty,Mina,Grizzly等項目紛紛出現(xiàn)。Twitter宣布從Ruby轉(zhuǎn)向Scala,并使用Netty讓其大紅大紫。

所謂異步網(wǎng)絡(luò)框架,就是對網(wǎng)絡(luò)層調(diào)用,進(jìn)行異步化,并進(jìn)行接口封裝,使得容易理解和使用。異步能力還是通過Java虛擬機(jī)現(xiàn)有功能實現(xiàn)的,通過對數(shù)據(jù)流的處理和狀態(tài)感知來進(jìn)行處理,而不是傳統(tǒng)的阻塞式的收發(fā)消息。這個符合我們生活中的感受,當(dāng)你訂票時,你會打電話告訴你需要什么,說訂好票給我電話,然后你就去做別的事情,直到訂票員通知你訂好了來支付取票再進(jìn)行下一步操作,如果訂票是同步的,那你就要一直等待訂票完成,遇到春運(yùn)可能會搭上整天的時間。

為什么異步網(wǎng)絡(luò)框架也受到重視,答案也是互聯(lián)網(wǎng),數(shù)以億計的請求點(diǎn)擊涌來時,傳統(tǒng)的webserver頂不住了,采用一個線程服務(wù)一個請求模型的webserver,無法承受這么大的數(shù)據(jù)訪問,特別對于Java這樣的吃內(nèi)存語言,一個請求占用了一個線程,同時也占用了相對應(yīng)的若干資源。用企業(yè)應(yīng)用的設(shè)計的整個架構(gòu)面對互聯(lián)網(wǎng)級別的應(yīng)用時,有點(diǎn)崩潰的感覺。解決高并發(fā)大量請求的途徑是高吞吐量加上可擴(kuò)展的軟件架構(gòu)。異步化可以提升吞吐量,就和銀行的排隊機(jī)一樣,顧客來了得到排隊服務(wù),當(dāng)有可用的柜臺服務(wù)時會主動通知顧客,我們可以設(shè)想,即使有再多的顧客,也可以通過增加業(yè)務(wù)柜臺,少許增加排隊機(jī)和少量人工協(xié)調(diào)處理來解決。

NodeJs是一個異步化的基于Javascript的開發(fā)框架,是當(dāng)前的明星技術(shù),符合了一些當(dāng)前開發(fā)需求,如異步化,前端Js技術(shù)廣泛應(yīng)用,Js引擎能力極大提升,NoSQL的火爆,組件構(gòu)建模式變化等。利用Js語言函數(shù)式編程能力,Js開發(fā)人員可以很輕松的利用已有的組件開發(fā)后端應(yīng)用,前端可以直接用瀏覽器處理Js,別忘了Js是瀏覽器唯一能統(tǒng)一識別的腳本語言,或者用JQuery,AngularJS等流行框架,世界很清凈,都是Js。

但我們需要了解在常駐內(nèi)存服務(wù)型程序方面,Java等語言占有極大優(yōu)勢,Java社區(qū)很快出現(xiàn)了和NodeJs有相同設(shè)計思路的項目,Vertx就是其中的優(yōu)秀代表。它充分借鑒了NodeJs和Erlang/OTP Actor模型的優(yōu)秀設(shè)計,利用分布式消息機(jī)制進(jìn)行對象間通信,利用Netty進(jìn)行網(wǎng)絡(luò)異步操作,方法調(diào)用倡導(dǎo)異步調(diào)用,有自己的模塊化機(jī)制。這樣,Java社區(qū)出現(xiàn)了和NodeJs競爭的技術(shù)框架,良好使用,可以解決大規(guī)?;ヂ?lián)網(wǎng)應(yīng)用的需求。

Java領(lǐng)域的異步化趨勢可以說剛剛開始,我們看到Servlet和EJB都加入異步支持,Spring的Reactor,JBoss的undertow,隨著Java8對函數(shù)語言能力的增強(qiáng),可以預(yù)見又會有叢多的項目產(chǎn)生。我關(guān)注著異步化趨勢和JavaEE開發(fā)方式的融合之路,相信那是Web開發(fā)的明天。

相關(guān)案例查看更多