這位Mozilla新興科技部門院士David Bryant不只是熟諳電腦繪圖技術的Firefox瀏覽器核心開發主管,更是在Mozilla基金會發展Web技術的關鍵推手,這個由JavaScript之父Brenden Eich帶頭的WebAssembly技術,更是Mozilla力推的新一代網頁技術標準,也正是David Bryant力拱的網頁新技術,我們也採訪他來深入剖析WebAssembly這門技術對網頁未來發展的衝擊和影響。

Q:為何WebAssembly技術這麼重要?

 A  WebAssembly可以把複雜軟體進行打包,並且在瀏覽器中安裝、執行,所以開發者可以透過網頁瀏覽引擎所做的事情就變得更多。

而WebAssembly可以讓開發者不需仰賴原生套件,即可延伸瀏覽器的使用體驗。例如,過去開發者必須靠Flash才能建立的應用程式、互動媒體體驗,現在透過WebAssembly就可以做到了。

Q:WebAssembly解決網頁技術的哪些問題?

 A  它改善了網頁技術平臺,而WebAssembly的設計目的,不是要解決特例的單一問題,而是讓網頁變成一個更強、更多功能平臺。我認為WebAssembly很有趣的一點就是,我並不知道開發者會使用這一門技術來進行何種創新應用,比方說,WebAssembly可以提供影像編輯者,讓複雜的程式碼也可以利用WebAsssembly編譯。但是,該技術的重點是讓網頁效能變得更好。而Mozilla的任務是開發更多創意工具交給開發者,而且放任他們自行發展,然後我們站著旁觀,看看未來會產生出哪些有趣應用。

Q:經優化的JavaScript子集Asm.js已經很快了,為何還需要WebAssembly?

 A  雖然Asm.js很棒。不過作為JavaScript的中介語言,它仍是屬於人類可讀格式,需要花費額外資源才能讓程式碼在瀏覽器運作,所以我們想繼續改善它,讓Asm.js這樣的中介語言變成二進位格式(Binary representation),所以WebAssembly才會出來,讓瀏覽器執行程式碼擁有原生般的效能表現。

不過其中的一個挑戰就是,WebAssembly是個完全新概念,因為它使用標準化的二進位格式,讓其他的瀏覽器供應商支援這個技術。在2017年10月底前,WebAssembly就開始支援重要的瀏覽器,像是Firefox、Chrome、Safari、Edge。

Q:讓WebAssembly比Asm.js更快的關鍵?

 A  Mozilla是如何讓WebAssembly比Asm.js還快,其中有兩個關鍵。第一個原因是,透過WebAssembly,系統可以明確定義指令集轉換的二進位格式,確保在不同的瀏覽器下,都能有一致轉換作業流程。但如果是Asm.js,它仍然只是JavaScript子集,意味著開發者必須靠各瀏覽器引擎進行轉換,但各瀏覽器都各有自己特色。

第二個原因則在於,WebAssembly是二進位格式,它的運作跟底層CPU的指令集更為貼近。而JavaScript作為一個程式語言,其設計的目的是要執行各類運算工作。對於底層CPU指令集而言,JavaScript的表達式未必是很有效的溝通方式,但是利用WebAssembly,便可以克服這個困難。

Q:WebAssembly會對既有開發者產生哪些影響?

 A  在開發工作上,工程師可以使用WebAssembly模組,避開介入任何JavaScript 程式開發。有了WebAssembly,現在開發者在網頁開發的工具選擇上,可以使用其他的程式語言,將它編譯成WebAssembly格式,像是C、C++。雖然聽來很不實際,但理論上,即使開發者完全不了解JavaScript也可以進行網頁開發。

Q:有了WebAssembly後,JavaScript便會消失嗎?

 A  這種想法並不正確。其中一個原因就是,開發者總是想依據需求,選擇合適的開發工具。而WebAssembly要達到的目標是,提供開發者更強大的開發工具。而許多網頁瀏覽器功能,仍需要JavaScript的元件才能運作。

也許拜WebAssembly所賜,世界上會需要更多的JavaScript工程師,所以WebAssembly還可以加速導入JavaScript的速度,而不是對它造成負面影響。因此,我認為,JavaScript與WebAssembly是互相合作關係。比方說,WebAssembly可以執行消耗資源的運算,而JavaScript執行基本網頁程式,或是負責與使用者互動等任務。

Q:WebAssembly未來的規畫是什麼?

 A  目前有一些計畫正在進行中。目前WebAssembly還不如JavaScript,已經可以存取各類型的網頁應用程式。例如,今日多數的網頁應用程式UI都是透過文件物件模型(DOM)實作,不過現在WebAssembly還不能直接存取DOM,如果想要搭配兩者使用,開發者必須撰寫一些協作程式碼,串接JavaScript跟WebAssembly。所以我們想要讓WebAssembly可以直接存取DOM。

除此之外,我們還要讓WebAssembly可以支援更多的程式語言,可以直接編譯成WebAssembly的二進位表示值。想要支援其他程式語言,不單只是整合編譯器而已,還有一些底層的Runtime機制也要一併修改。像是Java就是一個好例子。此外,許多程式語言的都仰賴自建垃圾回收機制,如果想要把這些程式語言編譯成WebAssembly格式,Mozilla也要整合瀏覽器內虛擬CPU的垃圾回收機制。

同時,Mozilla也要改善WebAssembly周圍的工具鏈生態,其中一個開發者熱門討論的話題是除錯。讓WebAssmbly可以與既有網頁開發工具結合,使除錯工作變得更簡單。

Q:WebAssembly是否會成為重要的網頁技術標準?

 A  目前WebAssembly已經廣泛的被各主流瀏覽器使用,我認為現在建立網頁應用程式的標準工具,除了HTML、JavaScript及CSS,還可加上WebAssembly。JavaScript還會是網頁開發首選的語言,不過現在有了WebAssembly,讓開發者有更多選擇。

Q:網頁技術還有哪些重要趨勢?

 A  VR技術是其中一個。過去VR技術的發展重點在HTC Vive、Oculus Rift,靠這些裝置提供原生VR環境。但是在WebVR發展上,Mozilla所的重點是讓VR能夠跨裝置、跨平臺運作,一旦解決環境碎片化的問題,開發者更容易開發新的VR內容。透過WebVR,現在開發者在網頁平臺之上,可以設計、建置、部署或是協作VR應用程式。而開發者也不會被鎖死在特別的單一環境、裝置。

而開發者所需要的技術,在過去開發網頁應用程式就已經有了。所以我認為VR領域還有很多機會,像是混合實境(Mixed Reality)。過去幾年根本不可能發生的事情,也是因應近年網頁技術進步,才開始有實現的可能。


Advertisement

更多 iThome相關內容