統治網絡:JavaScript的勝利
譯文JavaScript正憑借新型工具與功能提升以極度夸張的速度吞噬整個世界。我們是否應該接受這一無法逆轉的趨勢?
還記得那些舊日往事嗎?很多用戶因為擔心安全問題而在瀏覽器中禁用JavaScript。如今這樣的擔憂已經顯得相當可笑——JavaScript已經成為統治網絡世界的絕對王者。
在以平臺多樣性為標志的計算時代之下,我們需要能夠運行在任何設備瀏覽器當中的應用程序。原生應用的運行速度也許更快、對于特定平臺的功能利用效果也非JavaScript可及,但云時代的來臨顯著縮小了二者之間的差距。現在擺在開發人員面前的道路有兩條:針對桌面系統或者移動平臺開發只能運行在單一環境下的應用,或者編寫能為任何用戶所使用的JavaScript應用。
當然,以上問題的具體答案取決于應用程序的具體特性。JavaScript擁有明顯的局限性——舉例來說,出于安全原因,JavaScript無法讀取或者寫入客戶端中的文件。而且“真正”的程序員更傾向于利用自身技術水平在應用中使用大量快捷的開發方式。不過JQuery及其它一系列框架的出現讓JavaScript具備了開發高復雜性應用程序的能力,而JSON(即JavaScript 對象表示法)能夠實現除XML之外的全部數據傳輸需求。更不用提Node.js為JavaScript帶來的強大服務器端事務處理能力。
JavaScript還能走多遠?
巧合的是,InfoWorld網站新技術論壇上的兩篇***博文都在討論JavaScript的未來發展潛力:一篇由VisiCalc聯合創始人兼技術老鳥Dan Bricklin所撰寫,另一篇則由Adobe公司的Divya Manian與Thibault Imbert撰寫。
在題為《JavaScript在移動平臺擊敗原生代碼》的文章中,Bricklin針對JavaScript運行速度低于原生代碼的假設提出質疑:
盡管總體來說,原生代碼在數學計算方面的執行速度確實要遠遠勝過JavaScript,但這種觀點忽略了眾多應用程序之間彼此獨立的運行狀態。在很多運行過程中,JavaScript應用程序的性能表現往往能夠贊同甚至優于原生代碼。
為什么會這樣?根據Bricklin的解釋,這是因為眾多杰出的程序員已經花了數年時間對瀏覽器進行調整,從而實現了運行過程的極端優化。另外,瀏覽器中已經逐步出現多種先進的運行機制進展,例如3D渲染。
作為Adobe公司的代言者,Manian與Imbert分析了JavaScript的未來前景并提到Mozilla公司的研究項目asm.js。該項目“定義了一套JavaScript子集,通過編譯器生成并利用JavaScript虛擬機實現高度優化。”更令人興奮的是,他們還探討了RiverTrail這款由英特爾負責開發的并行編程模型及API——當然也是專為JavaScript所打造。兩位作者同時談到,Adobe公司建議為HTML 5功能引入新的標準化機制,其中包括Regions、Blend Modes以及Shapes等。
通過或明或暗的各種跡象,我們幾乎可以斷定,Manian與Imbert通過自己的博文給Flash及ActionScript的墳墓又添了一把土。
JavaScript生態系統
JavaScript的勝利宣言絕非憑空想象——幾乎每周都會出現新的JavaScript框架以及與編碼相關的其它工具。除了jQuery與Node.js,今年InfoWorld網站評選的***開源軟件獎中出現了七位JavaScript贏家的身影,它們分別是:
◆ AngularJS,一套用于將靜態HTML頁面轉化為JavaScript應用程序的工具集,同時提供對MVC架構的支持。
◆ Backbone.js,一套JavaScript庫,幫助開發人員將結構作為模型添加到應用程序及表示數據當中。
◆ Bootstrap,一款響應式Web設計框架,旨在與jQuery相結合。
◆ Enyo,一款面向對象的JavaScript框架,能夠被用于創建HTMl 5/CSS應用。
◆ D3,一套JavaScript庫,能夠在無需涉及插件的前提下在瀏覽器內實現矢量圖形處理。
◆ Ember.js,一款***發展前景的JavaScript框架,用于開發具備豐富功能的MVC應用程序。
◆ Emscripten,一款將C++代碼轉化為asm.js形式的編譯器,屬于由Mozilla公司推出的經過高度優化的JavaScript子集。
上述陣容可謂極度強大——而且這還只是JavaScript麾下力量的冰山一角。這些工具仍處于迅猛的發展態勢之中,且大部分屬于開源項目,它們的存在將繼續推動JavaScript的未來改進。
但是……JavaScript能行嗎??
然而,經驗豐富的開發人員對JavaScript仍然有些反感。InfoWorld網站的Andy Oliver就這樣闡明了自己的態度:
讓JavaScript實現全面普及并非不可能——我們只需要幫自己判斷,這到底是不是個好主意……我的頂頭上司就很喜歡這種方式,組織起一大群能夠利用jQuery以及Node.js的開發人員——他們***還能簡單用用MongoDB等輕量級數據庫。但我身邊的開發人員顯然很抵觸這種成天跟JavaScript打交道的工作習慣……項目管理者也不希望把自己的寶貴數據庫交到一幫JavaScript開發者的手中。
換句話來說,JavaScript是一種既簡單易學、又有些拙手笨腳的編程機制——這將導致編寫代碼的開發人員陷入混亂、甚至搞不清自己到底在做些什么。
不過杰出JavaScript程序員的隊伍正在不斷擴張,其中不少人都能在asm.js或者英特爾RiverTrail并行編程模式的輔助下實現諸多先進功能。值得一提的是,他們絕對不會受到工具缺乏這類難題的困擾。
當然,市場上也存在著JavaScript的替代方案,其中***代表性的就是谷歌Dart——據說該語言將在不久的將來推出1.0正式版本。不過Dart代碼需要經過編譯才能轉化為JavaScript,從而運行在大部分瀏覽器環境當中。惟一的例外就是谷歌推出的Chromium,它提供Dart虛擬機、因而能夠直接與這種新語言相對接。
***的并不一定總能取得勝利。與x86指令集類似,有時候贏家往往是能夠堅持到***的方案。我不知道JavaScript如何通過自身擴展來迎合開發人員創建應用程序的需求(例如像微軟Office這樣積淀豐厚的應用),但奇怪的是,通過瀏覽器窗口實現全平臺運行似乎成了未來的必然趨勢。我個人可不想刻意跟這種趨勢進行對抗。
英文原文:http://www.infoworld.com/t/application-development/the-triumph-of-javascript-227283