Mozilla新興科技部門院士David Bryant表示,WebAssembly的目的並不是要解決特例的單一問題,而是要讓瀏覽器變成一個更強大、更多功能的平臺(攝影/洪政偉)。

當經多數使用者目光開始從PC轉移至手機的行動優先年代,利用瀏覽器,在行動裝置提供順暢體驗變得相當重要。在2015年時,JavaScript之父Brendan Eich來臺時,就在瀏覽器上執行一套即時射擊遊戲。當時背後功臣是Asm.js架構,這個瘦身版JavaScript,讓瀏覽器效能大幅成長。

主流瀏覽器紛紛支援

Asm.js證明了瀏覽器上的網頁程式也可以跑得像原生程式一樣快,另一個想要實現同一個目標的後進之秀WebAssembly登場了。WebAssembly不像Asm.js還得背負著JavaScript的既有包袱,而是直接定義了一個全新的網頁執行層,讓瀏覽器能直接執行二進位檔案格式的WebAssembly檔案,來達到像是執行Bytecode程式碼般的高效能。

今年初WebAssembly已經開始支援主流瀏覽器,像是3月時,Firefox 52版第一個宣布支援,而後繼的Chrome 57、Edge 16及Safari 11也都支援。現今透過WebAssembly,讓瀏覽器效能獲得相當幅度提升,開發者就可以減少對外部套件的依賴。

根據研究機構Netmarketshare統計,至2016年12月至2017年11月間,行動版Chrome和Safari的市占合計高達86.24%,而桌面版目前已支援WebAssembly的Chrome、Firefox、Safari及Edge的市占合計也高達79.4%。這些行動端、桌面端瀏覽器主力業者紛紛支援WebAssembly,更讓該技術所影響的使用者規模更大。

在2017年8月,負責制定網際網路標準的W3C正式啟動WebAssembly工作小組。該小組主席Brad Nelson表示,WebAssembly是一個虛擬指令集體系架構(virtual ISA),整體架構包括核心ISA定義、二進位編碼,以及適用不同環境的API,「初始目標是為C、C++等語言編寫的程式經過編譯 Web平臺上執行時,可以兼顧安全性以及達到接近原生應用的執行速度。」

WebAssembly不是取代,而是要與JavaScript互補

而WebAssembly的出現,也讓許多開發者擔心「未來JavaScript就會消失。」因應這類質疑,JavaScript之父Brendan Eich就曾大力澄清,WebAssembly並非要取代JavaScript,而是要與它互補,

而Mozilla新興科技部門院士David Bryant更點出,WebAssembly的確會取代部分JavaScript的需求,例如,開發者可用其他程式語言開發,完成編譯後再交由瀏覽器執行。但他認為,JavaScript並不會因此而消失,其中一個原因在於,開發者總是希望可以因應開發需求,來選擇合適的函式庫、程式語言或是工具,「而WebAssembly想要達成的目標,是提供開發者一個更強大的開發工具。」

David Bryant表示,與一線開發者溝通的經驗中,他發現部分網頁開發者不想使用JavaScript,卻又苦無沒有其他工具可用,由於既有應用程式是透過C語言開發,若利用JavaScript就得要全部重新開發,「而透過WebAssembly,就可以使用原生的C語言,編譯成WebAssembly檔案執行。」讓舊有應用程式在行動網頁下也能繼續延續生存。

再者,雖然WebAssembly可以讓瀏覽器效能提升,讓使用者獲得更好的網頁體驗,「但這些網頁瀏覽器的功能,仍然需要JavaScript的元件才能運作。」David Bryant舉例,JavaScript負責執行基本的網頁程式、與使用者進行互動,WebAssembly則負責執行消耗資源的運算,「兩者應該是互相合作的關係。」因此,他認為,拜WebAssembly所賜,IT業界對於JavaScript專長的工程師需求反而會增加,讓JavaScript的使用率增加,而不是對它造成負面影響。

不只遊戲,語音辨識也是潛在應用情境

WebAssembly的潛力不只如此,根據W3C WebAssembly工作小組,該技術的應用範圍,還可以做為視訊、音訊轉碼器、資料壓縮、網頁多媒體編輯工具、語音辨識,「還能將現有肥大的客戶端應用程式移植至Web平臺。」

這也意味著,在未來應可見到更多過去在行動端體驗不佳的應用程式,透過WebAssembly技術,來釋放其效能優化後的潛力。


Advertisement

更多 iThome相關內容