2013年10月11日金曜日

以HTML5實作應用軟體的優缺點

HTML5 這幾年飛快的竄紅,絕對是軟體產業的一大事件。相信不少人聽到HTML5時,可能連HTML先前的幾次版本都沒聽過。也開始讓許多原先小看HTML的軟體工程師吃盡苦頭。HTML5 會突然聲名大噪,主要的起因是手機的智慧化逐漸成熟,手機瀏覽器的能力逐漸強大,在手機平台眾多的情況下,已網頁為主的服務開始興起。但起初也只是簡單的網頁而已,當時的手機能力也無法做什麼強大的運算,更不用說透過瀏覽器來運算了。

但到了近幾年,手機越來越強大,瀏覽器的能力也跟著強大,對於 HTML5 及 CSS3 的支援越來越完整,讓 HTML5 開發應用軟體變成跨平台的很好選擇,不再必須開發原生軟體才能達到想要的效果。也越來越多像 PhoneGap 這類的開發套件,來協助開發者以開發網頁的方式來開發軟體。

HTML5的優點:
  • 跨平台,有瀏覽器引擎就可以執行
  • 天生對於畫面構成的便利性
  • 客戶端安全,受到先天標準規範的保護
  • 許多自動化的記憶體及快取管理已經由瀏覽器統一管理
HTML5的缺點
  • 需依賴瀏覽器(或瀏覽器引擎)才可執行
  • 沒有程式碼的保護,若需要認證保護的機制將需要重新考量
  • 受到先天標準的限制,沒有其他的外掛支援,很難做到某些功能
  • 記憶體管理的邏輯與一般軟體設計不同,也是一般軟體開發者所比較不熟悉的部分
如同Flash的缺點,由Flash換到HTML5,在軟體的角度來說,並無大差別。基本上Flash也是基於Script,然後使用原生程式來進行直譯運行。所以原本Flash應該有的缺點,HTML5也幾乎都有。比較好的大概就只有簡化了與主網頁的互動部分,HTML5不再需要以類似Flash以Plugin的方式與JavaScript互動。畫面繪圖也可以非常容易的與瀏覽器的整個頁面渲染混合,搭配出更多樣化的效果。

要能夠發揮 HTML5 的軟體開發,CSS3 的能力是決定性的關鍵。嚴格說起來,CSS3 其實應該不算在 HTML5 裡面,不過都是用來寫網頁,所以經常被包在 HTML5 裡一起談。要能把 HTML5 APP 寫好,必須了解速度的瓶頸是在 JavaScript 的直譯器上。而 CSS3 則是讓物件的顯示方式與轉換效果,甚至是狀態轉換條件,是預先載入。畫面上的物件表示與狀態轉換,不再需要以 JavaScript 介入描述動畫的變化,因此可以以原生軟體的效能來畫出動畫。效能自然比以 Script 來畫出的動畫更為流暢。

透過 HTML5 來開發雲端應用自然沒有問題,但是若用來開發離線使用的本機端軟體就會有所不同了。透過 JavaScript ,因為瀏覽器的限制,許多本機的資源是無法使用的,若要使用,就必須使用其他方式;例如 Plugin 或本地端的HTTP服務等。所以你的程式就必須在 JavaScript 與原生程式間互動。如何分配,讓原生部分盡量減少來降低不同平台的差異化也是一個挑戰。

HTML5 可以提供了 HTML 的易學特性,也提供了大型軟體開發的彈性,成為目前軟體開發不可或缺的角色。不論是以 CSS3 的方式來實作介面,或以 Plugin 等方式來與原生程式碼溝通等,都是與傳統軟體開發流程非常不同的方法。軟體工程師們,不論你會不會用到 HTML5 ,你都應該來了解現在的 HTML5 軟體開發方式,相信可以對你的軟體開發想法有不同的啟發。