close

隨著網路速度逐漸發達,各種網頁的互動性和可程式化的需求也越來越高。在Web 2.0時期,Ajax興起之後,隨著智慧型手機的興起,加上Flash的勢弱,Html5更加是後續網頁技術結合的結果。於是Javascript的使用的比重更加重許多,也讓瀏覽器在後續的改進上,除了頁面顯示速度之外最大的著重之處就在於Javascript的效能提昇。而現在3大瀏覽器公司決定合作推出二進制的網頁程式語言WebAssembly。而會出現這樣的發展,主要是要從以下這些起點談起:


1.原先各種不同的解決方案

Google在Chrome瀏覽器之後就不斷在精進針對Javascript的編譯效能。例如像V8引擎就是讓Chrome當初推出就造成轟動的原因,然後像蘋果對於自己Webkit的Javascript解譯速度也是不斷在精進。另外Google自己也在Chrome當中增加一個稱為Native Client的原生編譯外掛元件,希望能吸引開發者開發出更高效能的瀏覽器程式。


然而畢竟Native Client還是會被侷限在Chrome瀏覽器當中,在這之後Mozilla也推出asm.js項目,讓C/C++的使用者可以運用Javascipt編譯器Emscripten編譯成適用asm.js的程式。

除了執行效能,Javascript由於年代久遠,很多功能上的限制也逐漸產生。像Google就推出了Go和Dart,而Mozilla也推出Rust,微軟也有同樣希望針對Javascript進行功能集合推出了TypeScript,這些新語言的推出,都是希望能夠取代Javascript在web開發方面的使用,而這些動作最後都指向一個目的,那就是希望能讓web的可程式化層面能更加強化。


從App花園中奪回使用者目光,解決各自的平台問題

不過現在行動裝置這麼發達,大家都在使用App,Web的可程式化功能究竟為何有需要讓這些大廠願意進行整合?各自的原因在於,像Google雖然是Android的最大擁有者,但是他最大的獲利來源還是來自於自己的老本行,Google搜尋所附帶的廣告利益。而Android本身在很多國家(例如中國)都被以自訂化的方式在避開Google Play服務的使用。所以對於Google來說,使用者過度的著重在App使用,卻會開始出現Web使用率降低的情況,這對Google來說是比較不利的。


而像Mozilla因為推動了Firefox OS這樣的一個Web Base技術的系統,對於Web開發技術的倚重相當高。雖然近期因為內部策略改變的關係,可能會傾向於讓整個系統都依附在Android之上,也就是B2GDroid計畫。但是總歸來說,更高效率的網頁程式開發化。對其本身是有利而無害。


而微軟因為在行動平台的錯失,現階段只能倚靠過去Visual Studio龐大的開發人員資源來鞏固目前的獲利。WebAssembly技術的出現,則是能讓微軟本身可以更加沿用這樣的優勢,持續維持其在網頁開發市場上的競爭地位。


至於蘋果原先在App Store出現之前就希望iPhone是個只能運行網頁程式的裝置,在iPhone一代時要開發軟體只能以網頁開發的方式進行,只是後來App Store意外成功導致這個發展趨勢減緩而已,不知道是否Apple目前獲利最少,所以目前並未看到積極投入,而是讓其負責webkit項目的雇員加入而已。


WebAssembly的優勢

由於WebAssembly到使用者端的運行,還是依靠瀏覽器的Javascript編譯引擎來運作。所以不同於Java或Flash都要另外再附帶一個外掛虛擬機來配合。並且從Mozilla推出asm.js之後Google和微軟紛紛表示要支援的情況來看,可以想見其效能的提升的確是有相當大的進步,並且其技術性質又不需要被綁定在任何一個特定的瀏覽器平台當中,而且目前也提出了polyfill程式庫讓其可以往前相容,所以只要各瀏覽器讓各自的Javascript引擎可以支援即可獲得這些改進。目前也因此推測WebAssembly會以asm.js為基礎,輔以Google的NACL+V8引擎,微軟的Typescript和Apple在LLVM上面的經驗加以整合。


還有誰可能受惠或加入?

雖然目前WebAssembly看到的是四大瀏覽器的合作,不過或許當中會有個意外的對象受惠。那就是Adobe,Adobe在Flash被棄用之後受到了不少打擊。雖然他們本身還是設計業者的龍頭,但是在行動裝置上的影響力卻有日趨減少的狀況。然而以設計工具來說,Flash的多媒體設計和程式化的功能還是相當方面。如果將來WebAssembly的發展成熟。讓其他各種語言都可以適用,並且編譯出WebAssembly的元件的話。設計人員也就可以在Flash當中同時獲得支援並使用過去熟悉的工具開發。一來是因為Flash採用的Actionscript本身就是ecmascript的擴展,二來是Flash本身虛擬機的效能問題就可以被避開。或許Adobe也應該要積極投入這項整合,畢竟這與他們後續也有相當大的幫助。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 droger 的頭像
    droger

    droger的資訊心得整理

    droger 發表在 痞客邦 留言(0) 人氣()