Javascript的興起是否意味著LAMP的終結?
JavaScript
Metamarket的CTO Mike Driscoll最近發表了一篇略帶煽動性的帖子,討論了Web應用的架構。他認為Node.js等框架預示著LAMP的終結。
三個月前,我們決定廢棄儀表盤選用的框架:Python的Django,并用Node.js(服務器端的Javascript)重新構建了框架。鑒于LAMP堆棧已經死亡,我們才做出了這個決定。
Mike認為Web有三個階段:
1991-1999:HTML時代——這是個文檔的時代。
2000-2009:LAMP時代——使用數據庫的時代。
2010-??:Javascript時代。Javascript時代是事件流的時代。
現代的Web頁面已經不再是頁面了,它們都是事件驅動的應用,信息會通過這些應用流轉。
他解釋道:
LAMP架構已經死了,因為對于響應里的Mashup,很少有應用愿意把全部的有效負載轉移到很小的事件上去;他們只想用Javascript更新DOM的一個片段。AJAX做到了這一點,但如果服務器端的LAMP模板有10%的HTML和90%的Javascript,這么做顯然是不對的……
Mike認為,服務器的主要作用就是帶著數據(JSON)把應用發送到客戶端(Javascript),并讓客戶端從中構造UI。服務器的次要作用則是監聽處理事件的流,并有效地把響應推回客戶端,這些事件可能是一次新的編輯、一條消息、或是Ticker發生了變化。
一些人對此發表了評論:
Bruce Atherton贊成Mike的觀點,但他認為事件并不會通過HTTP來流轉:
Websockets和SPDY將會接管這方面的處理,因為和HTTP相比,它們更合適這個任務。
Chase Sechrist已經在很多地方使用了Node.js,即便如此,他仍然列舉了一些對Node.js的擔憂:
你還需要知道一些高級知識,比如競態條件的調試方法、事件循環的工作原理,甚至在遞歸回調導致棧溢出時,調用堆棧的處理方式。正因為如此,對那些寫了二十年C的人、還有剛開始編程的初級工程師來說,控制流還是非常奇怪、令人費解的。
“Jorjun”指出,以現在的變化速度來看,即使Javascript這個新的架構是合理的,它也不會太持久:
兩年之內會有一種更高效的方式對寶貴的IP進行編碼。需要注意的是,新的方式正在出現,Java對它們沒有任何意義——這些方式在九十年代末還沒有出現。Javascript的愚蠢名副其實。它有大括號、奇怪的Fudgery、極其惱人的Artefact,對我這樣的老學究來說,Javascript看起來輕率、討厭、太復雜而容易混淆。
NOLOH的聯合創始人Asher Snyder認同帖子的前提條件:“Web應該、也正在轉向事件。”但并不相信Javascript能引領方向。他認為“我們正在走向一個平臺或統一語言的時代,因為只有平臺或統一語言才能讓快速開發真正處理好Web的瘋狂”。
Subbu Allamaraju最近發布了Node.js和Play的一些性能對比數據,InfoQ和他簡單討論了一下:
就個人而言,我發現Node.js和Play等框架讓Web開發人員覺得很興奮,因為它們帶來了一些新的思想。在Web框架領域,特別是在Java端,這樣的簡單性已經很久違了。尤其是Play,它在Netty之上,而不是傳統的Servlet框架,是一個很不錯的選擇。
Web應用架構的演進確實很快。由于Web應用變得越來越“厚重”,特別是在事件驅動的世界里,人們只能思考REST還剩下什么,看來我們要回到最初開始的地方了。最近我們確實沒怎么聽說有關REST及其統一接口的消息,還有它怎樣成功改變Web應用架構的相關內容。你對Web應用架構的未來持什么觀點呢?你怎么看Javascript成為主流的編程語言?
查看英文原文:Will the Rise of Javascript Mean the End of LAMP?(http://www.infoq.com/cn/news/2011/04/javascript-lamp)
【編輯推薦】