編程有感,Web 新時代的機遇與挑戰

一般來說,一項新技術是否會隨著時代的推進而被快速地迭代和發展,要看這項技術所應用在的實際業務場景中是否有相應的技術需求,畢竟沒有任何技術是會被憑空創造出來的。

技術決定了業務需求的多樣性,而業務需求的多樣性又推動著技術不斷向前發展,兩者相輔相成最終才能推動行業整體的發展和進步。

自1991年HTTP協議和HTML超文本標記語言這兩種核心的Web技術誕生以來,Web開發技術領域便開始不斷地發生著翻天覆地的變化。

如下圖給出的Web技術發展史所示,從1991年到2002年的這十年裡,Web技術的發展過程還是比較緩和和穩定的。

編程有感,Web 新時代的機遇與挑戰

編程有感,Web 新時代的機遇與挑戰

在這十年的時間裡,首先是NetScape、OperaInternet Explorer(IE)三大瀏覽器開始逐漸走入人們的視野。一些用於構建更豐富Web應用的基礎性技術開始逐漸湧現,比如Flash技術從1996年開始可以被應用在瀏覽器端,這使得傳統的Web應用中可以嵌入包含豐富多媒體信息的Flash應用,這一發展也使得Web應用的交互性和動態性大大的增強。Flash技術的出現催生了一批以提供視頻播放、視頻發佈和視頻分享服務為主的視頻服務平臺的出現,另一方面同時也推動了基於Flash的Web頁遊行業的發展。

自2002年開始,Web技術的發展便到了其整個發展歷程的“下半場”。從2003年開始一直到2012年的這將近十年的時間裡,新型Web技術的出現逐漸呈現出了爆炸式的增長。

首先是Chrome、Firefox和Safari這三種為推動 Web技術後來的爆炸式發展作出了巨大貢獻的瀏覽器開始出現,各大瀏覽器廠商對其產品的版本更新迭代速度也開始加快。

Web技術的發展從2008年開始進入了一個“爆炸式”的快速發展階段,各種各樣的新型Web瀏覽器特性和新的Web標準以及ECMAScript標準如“雨後春筍”般開始湧現出來。

XMLHTTPRequest2技術為 Web應用的數據傳輸提供了更方便和高效的傳輸方式;WebRTC技術為Web應用的實時在線視頻/語音直播提供了底層的基礎技術解決方案;WebGL技術為Web 應用提供了一種可以通過JavaScript來操作Web版本OpenGL 的特性,基於WebGL暴露出的JavaScript接口,我們可以在Web網頁上高效地繪製3D動畫和模型,為在Web網頁上運行大型3D網絡遊戲提供了可能;IndexedDB技術為前端應用存儲結構化數據並且對數據進行高性能的數據檢索提供了支持。

除此之外還有很多的Web相關技術被實現和標準化,這些技術都無疑大大地拓寬了Web應用所能覆蓋到的應用領域和場景。也正是自2008年的HTML5標準和2009年的CSS3標準出現之後,Flash多媒體應用技術在Web開發領域逐漸開始走向了下坡路,直至最後被其他技術取代。由此也可見Web領域的技術迭代與更替速度之快。

編程有感,Web 新時代的機遇與挑戰

編程有感,Web 新時代的機遇與挑戰

JavaScript作為一門用於開發Web端應用的編程語言從1997年發展至今,其所能應用的領域已經不僅僅侷限在最原始的基於瀏覽器的Web端應用開發上了。包括Node.js在內的等一系列新出現的JavaScript運行時環境已經把JavaScript的應用場景從前端應用的開發帶到了服務端應用的開發。

基於Chrome V8引擎構建的Node.js和Fib.js等JavaScript運行時環境和框架為後端服務器應用的開發提供了“非阻塞的異步IO”和“基於事件模型”等新特性。

這些新特性可以讓我們以開發傳統前端Web應用的思路來開發服務器端應用。

不僅如此,基於Node.js開發出來的各種服務端應用框架更是極大的提高了我們開發後端應用的效率。

這些框架在一些必要的業務流程上已經為我們做了足夠多的封裝和優化,這使得我們可以更多的去關注業務邏輯代碼上的實現,而不是一些底層細節架構上的事情。

但事情並沒有這麼完美,就拿Node.js為例,由於Node.js本身是基於V8實現的,而V8本身所負責的一個最重要的功能就是對JavaScript代碼進行解析和優化,然後將這些優化後的代碼編譯成機器碼最後運行。

因此,無論Node.js對V8上層的JavaScript代碼進行了何種系統底層調用流程上的優化,如果最後在V8解析和執行JavaScript代碼時的速度很慢,那麼整個應用的運行效率必然會大打折扣。總的來說,Chrome V8、JavaScriptCore和SpiderMonkey等JavaScript引擎對JavaScript代碼的解析和執行效率高低,直接決定了這些基於JavaScript開發的前端和服務器端應用的運行流暢程度,進而也直接影響了最前端的產品用戶體驗。

除此之外,變得日益複雜和龐大的Web前端應用也帶來了更多對JavaScript語言性能上的挑戰。

比如基於Web端的視頻處理軟件、基於Web端的大型3D遊戲、基於Web端的在線機器學習(深度學習)訓練平臺等。這些應用無一例外都需要消耗瀏覽器大量的計算資源,因此JavaScript引擎對JavaScript代碼的執行效率也直接決定了這些應用能否被流暢地運行。

不僅如此,我們都知道通過JavaScript來移動或修改頁面上的DOM節點所付出的成本是巨大的,隨著傳統Web頁面的交互設計變得越來越複雜,這種成本損耗所帶來的問題可能會被逐漸放大,這也是我們在未來將要面對的問題 。


分享到:


相關文章: