大家都知道 Facebook 將 iOS App 改版,而且執行速度、操作反應比舊版提昇許多;許多人也知道,其中最大的改變是把 App 所採用的技術從 HTML5 改為 iOS 原生技術,因此有人認為這是 HTML5 技術的挫敗,事實真的是這樣嗎?畢竟 HTML5 也是 iOS 內建支援的技術之一,而且連 Steven Jobs 都推崇 HTML5 。

Facebook 在 2011 年初宣示要以 HTML5 整合所有的平台,當時的理由是 Facebook 必須維護七種版本,如果全部的平台都使用 HTML5 技術就能降低維護的版本。但,這次改採 iOS 原生模式,等於是放棄了這種作法,而且媒體也都報導,Facebook 後續也會對 Android 等平台做原生模式的 App。

所以, Facebook 證明 HTML5 是比較不好的技術嗎?

不一定。

如果科技報橘要做個 App ,讓大家可以很方便的看文章,我還是會建議採 HTML5 技術。原因很簡單,只要把行動版網頁卡入 App 就完成,並且可以同時在各行動裝置平台推出。而且,如果有必要,隨時還可以在網站後台用 HTML5 技術,進行改版或加入先前網頁所沒有的功能,不需要重新發佈 App 更新。

缺點呢?這個 App 跟使用者把科技報橘連結存在瀏覽器中很接近,瀏覽器能怎麼用,這個 App 也只能那樣用。事實上,如果你用 Android 內建的瀏覽器開啟 Facebook ,有時候跑的比獨立 App 還順暢,功能也大致相同。

但如果你是要做 3D 動作遊戲,我就不會建議您用 HTML5 ;沒錯,還是可以用 OpenGL 等 HTML5 技術做出 3D 遊戲,但畫面繪製速度可能會讓使用者抓狂。

為什麼會有這些速度差異呢?在於翻譯!

原生 App 是直接使用該裝置作業系統內的功能,而 HTML5 則是多一層翻譯。

你可以把 HTML5 寫成的 App 看成是模擬器中的程式,這個程式的一舉一動必須透過模擬器(瀏覽器)翻譯成作業系統的功能,才能呈現結果,但原生軟體可以直接使用作業系統的資源。同樣的道理,Java、Flash 這兩種技術也是類似,所有的指令都必須經過翻譯才能跨平台執行,導致執行效率不如原生軟體。

那 Facebook 為何不推出 Windows 版或 OS X 版的應用程式來提升使用者體驗呢?其實也可以,問題在於有沒有必要。

例如 DropBox 可以只用網頁來執行,但各平台裝上專用軟體或 App,DropBox 的威力馬上加強百倍;但 Facebook 必須考慮到,在電腦平台發行獨立應用程式,能增加什麼功能是網頁做不到的呢?如果沒有,反正電腦網頁執行效率不低,大家也都習慣整個介面,那還不如乖乖待在瀏覽器內。

從上面的分析看來,越是接近網頁模式的內容,越是適合使用 HTML5 來製作,而需要大量互動、3D 影像、使用到硬體特色的內容,似乎應該使用原生模式來開發。

但 Facebook 卻給我們一個反例。

Facebook 是網站,理論上本質就適用 HTML5,但使用原生模式寫出來的 App 硬是比 HTML5 技術的快一倍。

為什麼?

第一個理由當然就是我們舉例的翻譯問題,多了一層指令轉換,因此在資料讀取或顯示圖片等方面的速度比較慢。

第二個理由據說是 Facebook 先前所寫的 iOS App,並沒有做好最佳化,因此沒有善用 iOS 的硬體加速功能;我看過這樣的報導,但我懷疑這個說法,因為理論上依照 HTML5 來寫,應該就可以如瀏覽器般取得硬體加速的協助。

第三個理由是,可以作弊。如同部分瀏覽器可以預估使用者想看的內容,然後提早擷取一樣,Facebook App 也可能預先抓取你比較會有興趣的內容,因此當使用者點擊之後,會感覺速度加快,而且有些視覺效果可以讓使用者覺得等待時間沒有很久。

所以,如果我要開發一個 App,該怎麼選擇這些技術?

我想到一個老笑話,老闆應徵女秘書,應徵的三個人各有專長,但最後這些專長都不是決定人選的理由,老闆挑胸部最大的那個成為他的秘書。同樣的道理,不管這些技術哪種適合,你會先挑你熟悉的技術來使用,除非開工前你就清楚這個技術無法達到你要的功能。

我相信 Facebook 先前選擇使用 HTML5 也是這個原因,畢竟他們就是靠網頁起家的公司,HTML5 搞不好是他們公司內部的官方語言,等到 Facebook 發現這個技術無法完全滿足需求時,才開始尋求其他的技術解決。

更多 HTML5 的未來趨勢與發展,這個星期五晚間登場的 TO Mixer #4 將帶來更多討論!歡迎立即報名加入我們,或前往活動頁面看看更多資訊!

(圖片來源:remysharp, CC Licensed)