如果網頁程式比現在快20倍,網頁版Office能不能和桌面版擁有一模一樣的功能?

前不久,來自四大主流瀏覽器的開發者(Chrome、微軟Edge、Firefox和Safari的WebKit引擎開發人員)聯手發布了一個新的網頁檔案格式標準WebAssembly(以此為名,更有暗示網頁上的組合語言之意),將是能讓現有文字檔形式的html檔,變成2進位Bytecode形式的wasm檔。

JavaScript之父Brendan Eich指出,WebAssembly格式標準將成為一個網站程式碼的新中介層,可以提供一個二進位檔案格式標準來執行網頁。簡單來說,就像在桌面執行程式碼編譯後的.exe一樣,在瀏覽器上也能執行編譯後的wasm檔。

這麼做有什麼好處?因為JavaScript是直譯式語言,要等到執行的時候,才逐行執行編譯,也難怪執行速度遠遠比不上可以預先編譯成Bytecode低階機器碼的桌面執行檔。

不過,在wasm格式出現之前,Firefox已經想出了一套利用預編譯來提高JavaScript的作法,稱為Asm.js架構

Asm.js架構限制了部分JavaScript的功能,例如動態型別,就像是一個瘦身版JavaScript,因此就能在執行網頁程式時,先將網頁上的每一行JavaScript程式碼都預先編譯完成後再開始執行,而不像過去只能編譯一行才執行一行,效能因而大幅提高。Brendan Eich先前來臺參加Modern Web大會演講時也大秀用Asm.js架構開發的3D即時射擊遊戲,畫面特效和反應速度,完全不輸桌面3D遊戲。

但是Asm.js只有Firefox瀏覽器支援,而且得禁用某些JavaScript功能。所以,這群瀏覽器開發者才乾脆聯合發起WebAssembly格式來實現預先編譯JavaScript的目標。實測後發現,編譯成wasm格式後的3D遊戲,執行速度甚至可以快上23倍,檔案大小也比純文字格式更少。可以說,wasm格式的網頁應用,也能擁有像桌面應用一樣的「執行效能」。

不過,編譯成二進位檔後,就無法像過去HTML網頁內容公開,人人可看的特性消失了,所以,WebAssembly推動者也承諾要推出新的AST語言,若有人想看wasm內容,可以反組譯成等效的文字形式AST檔,就像將執行檔轉換成低階組合語言一樣。

若將IE市占率算在Edge,這四大瀏覽器合計能影響全球95%的使用者。換句話說,未來wasm檔能在全球95%的使用者電腦(或手機、平板等)上執行。這將是全球普及率最高的檔案形式,比Windows、OS X或Linux上任何檔案執行格式的普及率都高。

儘管目前WebAssembly編譯器只能支援C/C++程式碼,但Brendan Eich表示,未來的目標是建立成網頁標準,並將任何開發語言寫的「網頁」應用,都能編譯成wasm檔,再交給瀏覽器執行。就像是許多開發語言撰寫的Windows桌面應用,都能編譯出.exe(或.com)檔在桌面執行。

那JavaScript會因此消失了嗎?不會,JS之父極力澄清,因為,wasm檔將由瀏覽器內的JS引擎來執行,所以,JavaScript能直接呼叫和管理wasm程式寫出來的元件,其他語言都不行。JS將成了控制這類應用的最佳開發語言,反而以後,不論誰要開發網頁程式,都得對JS略知一二不可。所以,wasm不是取代,而是要增強JS。網頁標準制訂組織W3C已經成立了一個工作小組來推動WebAssembly、微軟、Google和Mozilla也率先表態未來將支援,蘋果還不漏口風,但已將此納入WebKit開發工作清單了。

回到最開頭的提問,網頁版Office能不能和桌面版擁有相同的功能?我想答案是Yes。

專欄作者


熱門新聞

Advertisement