WebAssembly 為何能顛覆 Web 產業戰局,又被 Mozilla 與 Firefox 寄予厚望?

Mozilla Taiwan
5 min readMar 9, 2017

--

隨著最新版本釋出,Firefox 成為唯一一個支援 WebAssembly 的瀏覽器。WebAssembly 是由 Mozilla 研究計畫所催生出的新興標準,能讓網頁瀏覽器以前所未有的高速執行應用程式。

WebAssembly 可望帶來極大改變

WebAssembly 標準可望為許多令人驚艷的影音遊戲,以及電腦輔助設計、影片和圖像編輯、科學視覺應用等高效能網頁應用注入新生命。等時間再過久一點,現有的生產力應用(如:email、社群網站、文書處理)和 JavaScript框架也可能運用 WebAssembly 來大幅縮短加載時間,並同時提升執行時間的效能。

別的技術得透過安裝附加元件的方式,才能讓網頁應用在瀏覽器上達成近原生的效能。WebAssembly 則方便多了,不需要附加元件,便可完全融入網頁平台中運作。換言之,開發人員可將CPU計算密集型應用(如壓縮、臉部辨識和物理運算)的 WebAssembly 程式碼庫,整合到以 JavaScript 處理較不密集的現有網頁應用之中。

下面這支影片能幫您快速了解 WebAssembly,並掌握幾家企業在使用此新標準上的規劃。除了 Mozilla 以外,我們的夥伴,包括 Autodesk、Epic 和Unity 的工程師也都在影片中分享他們的觀點。

路途艱辛,波折不斷,終至坦途

JavaScript 最早是用來撰寫結構簡單的程式之輕量級程式語言。它必須要簡單易用,才便於新手開發人員編寫程式 — — 譬如能確認網頁使用者正確填表後才能提交的入門級程式碼。

不過,現在的情形不同了。現代的網頁應用個個是複雜的電腦程式,有 client 端、也有 server 端的程式碼,但大多數仍以 JavaScript 撰寫。

這些年下來,雖然 JavaScript 程式語言和執行的引擎(包含 Mozilla 的SpiderMonkey引擎)已有長足發展,但是 JavaScript 仍有些先天的限制,而不適用於某些情境上。最令人詬病的是,當瀏覽器執行 JavaScript 程式時,其速度往往比不上作業系統執行以其他語言撰寫之相似原生程式的速度。

Mozilla 一直很清楚這個問題,但也從未因此侷限我們對於 Web 發展的宏圖大志。因此,我們在幾年前展開一項研究計畫,希望在瀏覽器上打造出真正的虛擬機器,使瀏覽器能以直逼原生的速度來安全地執行JavaScript和高效率的程式語言。當時,我們知道我們的網頁平台將可執行幾乎任何一種的應用,特地設定了要讓 Firefox 無需附加元件即可執行現代影音遊戲的目標。歷經多番嘗試後,我們先踏出了一大步,證明透過實驗性的 JavaScript 子集asm.js,Firefox即可執行以常見遊戲引擎所開發的遊戲。

結果,asm.js 子語言的成效斐然,讓我們更加確信此方法若能成為最高階的網頁標準,將可帶來更高的效益。於是,我們拿著 asm.js 的概念驗證結果,開始尋求與其他瀏覽器業者的合作機會,以期共同建立一個能真正融入瀏覽器的標準。透過與各大瀏覽器工程師之間攜手努力,我們就 WebAssembly 達成共識。不久後,其他瀏覽器應該也將陸續加入對WebAssembly的支援

從某些方面來說,WebAssembly 將改變網頁開發人員的工作模式,也將顛覆網頁的基本功能。在 WebAssembly 和其附加的工具組支援下,使用 C/C++ 等語言所編寫的程式將可直接移植到網頁上,進而達到近原生的效能。我們認為,隨著 WebAssembly 的持續發展,未來應該還能支援 Java、Swift 和C# 等行動應用編譯常用的程式語言。

WebAssembly 和 JavaScript 不一樣。程式人員使用 WebAssembly 撰寫的每個程式碼在加到瀏覽器之前,都會先完成剖析和編譯的工作,因此,以WebAssembly 寫的網頁應用才能達到近原生的效能。瀏覽器也只需處理能快速驗證、優化和執行的低階且可被設備快速處理的指令。

若您想要更進一步了解WebAssembly的背景,歡迎觀賞以下的「幕後花絮」影片。

最新的 Firefox 瀏覽器(Windows、MacOS、Linux 與 Android 版)現已支援 WebAssembly 標準。我們對 WebAssembly 在行動應用上的潛力尤感振奮 — — 每個行動應用都得是原生應用嗎?

若您想試試使用 WebAssembly 的一些應用,請升級至 Firefox 52,並觀賞由Epic 開發的《Zen Garden》遊戲的宣傳影片。以下就是這支影片。

如果您是開發人員,想要開始使用WebAssembly的話,請參考MDN上的WebAssembly文件。您還可看看由Mozilla工程師Lin Clark所發表的一系列文章,他用生動的漫畫解說 WebAssembly 的特色和功能。

Mozilla 致力於推動 Web 不斷向前邁進。我們的目標是要讓 Firefox 成為不做第二想的最佳瀏覽器。有了新版 Firefox 支援 WebAssembly,以及推展中的「量子計畫」(Project Quantum),我們對於 Web,以及 Firefox 的信心更是大幅躍進!

原文連結

--

--

Mozilla Taiwan

我們是Mozilla 美商謀智台灣分公司,由非營利組織 Mozilla 基金會所擁有,在台灣為自由開放的網路未來而努力。