phoneGap可行性分析

1   移動應用現狀

        移動應用產品往往常常考慮多個平臺的支持.單一平臺很難保證應用的覆蓋面或者換句話說就是用戶羣體的量和持續的活躍性上從長期的角度而言往往存在短板.另外從開發的角度而言.多平臺的支持往往需要建立不同的技術團隊.而平臺之間開發技術也是完全迥異的. 開發一個具有相同業務的應用Natural-Application需要使用到不同平臺的框架和開發語言.使用 C/C++ Symbian、使用 Object C iOS 和使用 Java Android 應用開發技術,幾乎是完全無法融合的. PhoneGap跨平臺移動應用開發框架正是應運而生.

        我們需要搞清楚幾個概念:Web AppNative App,Hybird App移動平臺Application幾個概念:

Web App

        這個主要是採用統一的標準的HTML,JavaScript.CSSweb技術開發.通過不同平臺的瀏覽器訪問來實現跨平臺.同時可以通過瀏覽器支持充分使用HTML5特性,缺點是這些基於瀏覽器的應用無法調用系統API來實現一些高級功能,也不適合高性能要求的場合.

Native APP

        就是所謂的原生應用.指的是用平臺特定的開發語言所開發的應用.使用它們的優點是可以完全利用系統的API和平臺特性,在性能上也是最好的。缺點是由於開發技術不同,如果你要覆蓋多個平臺,則要針對每個平臺獨立開發,無跨平臺特性.

Hybird App

        則是爲了彌補如上兩者開發模式的缺陷的產物.分別繼承雙方的優勢.首先它讓爲數衆多的web開發人員可以幾乎零成本的轉型成移動應用開發者;其次,相同的代碼只需針對不同平臺進行編譯就能實現在多平臺的分發,大大提高了多平臺開發的效率;而相較於web App,開發者可以通過包裝好的接口,調用大部分常用的系統API.

        而PhoneGap正是Hybird APP目前框架中集大成者

2    phonegap簡介

        phoneGapNitobi開發的一個免費開源的開發框架,目前最新版本是1.5,用來構建跨平臺的使用HTMLCSSJavaScript的應用程序。以written once, run everywhere一次編譯到處運行而受歡迎,只需要改動少量代碼而實現跨平臺。

        phonegap 簡單來說是一箇中間件,爲移動前端提供訪問移動終端設備及資源的接口。採用統一的標準的htmljavascriptcssweb技術開發.通過不同平臺的瀏覽器訪問來實現跨平臺。通過javascript腳步代碼調用系統資源,以降低開發難度,所以受到廣大web開發人員的青睞。

        2011104Adobe宣佈收購了創建了HTML5 移動應用框架PhoneGap PhoneGap Build的新創公司Nitobi Software。這使得phonegap有了堅強的後盾,phonegap的發展前景也是一片光明。與此同時,PhoneGap的開源框架已經被累積下載60萬次,藉助PhoneGap平臺,已有數千應用程序建立在iOSandroid以及其它操作系統之上。

        下圖是phonegap對各手機平臺的支持情況

 

3    phonegap成功案例

       

上圖是phonegapjquery mobile結合一起的mobile應用。這樣應用都爲簡單的移動web應用,在國內來說,phonegap的成功案例比較少,目前還處於研究階段。

4     phonegap技術要求

        Adobe dreamweaver 5.5版本爲phonegap提供了優越的開發環境。開發人員可以使用dreamweaver 5.5開發android app。雖然phonegap門檻較低,但是也要求開發人員具備必要的技能。

        要求開發人員掌握htmlcssjavascript技術,特別要求javascript技術,在javascript基礎上需要掌握jQuery mobil框架ajax通訊技術。

5    phonegap優缺點評估

        日前,phonegap框架熱度如火如荼。一項技術當然會有其優缺點,我們是選用phonegap還是選擇Native APP,要先分析兩者的利弊,再根據具體應用選擇,

5.1 phonegap優點:

        5.1.1、可跨平臺。phonegap作爲跨平臺框架,其實並別written once, run everywhere,各移動平臺的差異還是較大,phonegap框架幫我們解決了差異性,javascript與平臺系統的連接由phonegap框架完成。成爲連接移動終端的適配器,或者說中間件。它的原理如下圖:

 

 

 

PhoneGap通過調用JavaSCript 調用API庫實現和各個平臺的SDK進行無差別的交互. 以達到調用不同平臺手機上攝像頭,文件系統,重力感應.GPS定位等功能。

 



 

5.1.2   易用性

        phonegap開發人員無需直接操作平臺資源。對平臺資源的操作完成由phonegap框架完成。開發人員只需要用javascript調用phonegap  API就可以完成對平臺資源操作。由於phonegap框架限制,對平臺資源操作是有一定限制的。

        phonegap開發人員可以從web開發人員轉入,目前來說web開發人員較多,成本也較低,轉入phonegap開發後,可以降低移動應用產品的開發成本。這樣,移動應用數量將直線提升。

5.1.3   提供硬件訪問控制

      比起傳統的Web程序,PhoneGap提供了一些列的JS 的類,可以直接訪問硬件。比如加速,相機,指南針,GPS,文件訪問等,可以讓你用JS方便地調用系統的硬件。以彌補傳統Web程序的一塊錯誤。

5.1.4   可利用成熟javascript框架

        web的發展,誕生了許多javascript框架。著名的有Ext jsjQuery。隨着移動應用的需求越來越大,jQuery出現了jQuery mobile版本。它的體積小,爲移動應用量身定製。使用javascript框架也降低了開發難度,使得移動應用更美觀。

5.1.5   方便的安裝和使用

        PhoneGap的架構很複雜,但對於大多數開發者來說,並不需要了解phonegap內部,只用很簡單的配置就可以搭好環境。只用專注寫好自己的Web頁面,拷貝進去就可以了。

5.2       phonegap不足之處

5.2.1    運行速度慢

        PhoneGap集成多了個平臺.程序的載入和UI界面的反應都比原生的程序慢,UI反應延時——這是個致命傷 .它實際上還是在展示Web頁面,所以載入、頁面刷新等肯定是需要一定時間的。 這在用戶體驗上來說PhoneGAp依然無法替代原生應用程序。

        另外,htmljavascriptcss都運行在各平臺內置瀏覽器webkit之上,受到webkit處理速度影響。目前來說運行速度比較慢,性能較差。

5.2.2    不適合部分程序

        如果你的程序需要3D功能,或者對界面刷新有較高的要求,比如類似於遊戲的程序現在來說還只是用原生的語言會比較好。PhoneGap支持API還有待在各個平臺逐步完善

5.2.3    調用平臺資源差

     phonegap應用程序對平臺資源的使用依賴於phonegap框架本身,由於phonegap是第三方框架,做不到100%調用平臺資源,只有依靠phonegap的升級滿足調用平臺資源的需求。

        比如說,現在版本未能支持視頻解碼與播放等

5.2.4     內存消耗大

        有測試表明,用phonegapandroid java開發同一個應用。運行phonegap應用內存消耗遠大於原生態android java應用。對於頻繁操作,釋放內存較慢,從而導致內存消耗量飆升。

5.2.5     調試難度大

        目前phonegap可以在控制檯輸出簡單的JS調試日誌,但是並不方便。調試js只能選擇firefox  firebug調試。

5.2.6    開發費用方面

        phonegap可以滿足web開發人員轉入。但由於html5的新發展,對javascriptcss的要求更高。所以開發良好用戶體驗應用,在開發費用上並不太樂觀。

6      phonegap與android java對比評測

    測試對象:Delicious書籤訂閱應用

 

Android應用類型

Html5 (phonegap)

Android java

功能實現

Html + jQuery基礎庫

ListView組件

文件大小

159KB

23KB(只用了系統的原生界面)

內存佔用

45.37MB(RSS)

27.02MB(RSS)

數據通信

Ajax

Apache http Java功能包

啓動速度

打開相同訂閱源2.7

打開相同訂閱源2.3

操作響應速度

正常操作速度流暢,頻繁操作響應會變慢

操作速度流暢

穩定性

Monkey測試注入大約4萬個事件時,整個應用已經處於空白無響應狀態。有連接超時情況發生。手動頻繁操作會引起,響應速度變慢,webkitWebView不能很好釋放內存,甚至會引起應用的crash

能較好處理Activity切換延時等待。運行較爲流暢。Monkey測試時書籤列表頁切換時有時候會出現黑色背景,然後再載入列表,比正常速度稍慢。能夠比較好的釋放內存,沒有出現過應用crash的情況。

資源佔用

對於頻繁操作時,內存釋放不夠理想,導致內存佔用上升。

內存佔用相對比較穩定。

開發成本

運用html + css + javascript開發,適合前端人員開發。由於webkit在不同的終端機發行版本不一樣,所以需要針對不同的機型進行適配。同時對於不同屏幕大小在適配上也只能通過Javascript進行控制實現。

適合有Java開發經驗的程序員,可以充分利用Android提供的組件進行開發。但是開發學習成本較高。

開發難度

目前phonegap只使用一個WebView,開發時需要使用OPOA的模式,對代碼的組織方式及開發方式有較高要求。同時介於手機的資源有限,對如何管理和分配內存提出了要求。目前phonegap可以在控制檯輸出簡單的JS調試日誌,但是並不方便。

需要有Java開發經驗,同時對Android開發體系有較深入的瞭解。

多人協作

OPOA模式並不利於多人協作並行開發,只能通過基礎的javascript的設計模式來解決多人協作的問題。

比較方便支持多人協作並行開發。

其它問題

1.內存優化:webapp因爲是基於瀏覽器的,而瀏覽器自身是進行了相應的優化的,所以在圖片顯示上很不錯。     

原生app如果在一頁中顯示比較多的圖片的時候,必須比較細緻完善的進行內存優化工作,否則極易出現因爲圖片資源過大而引起的崩潰問題。

2.圖片縮放裁切 webapp一般情況下通過jscss來進行縮放裁切。在進行圖片動態縮放的時候,頁面顯示情況不是很正常(抖動,跳躍)。最好的辦法是後端服務器對圖片處理後再發送給手機端。

原生app可以直接通過java來對圖片進行處理。

3.佈局 原生app可以利用android提供的特殊技術方案,來自動適應多種分辨率的屏幕。如9png drawable目錄。 相當簡單方面。 但是在交互方面,原生app的開發量會比較大。

webapp就比較杯具一些了,需要開發者比較多的關注。 可以通過js來動態的獲取屏幕尺寸進行資源調整和加載(開發幾套不同的ui,然後根據分辨率js動態加載),這個會花費比較多的時間。

4.調試

webapp js調試不太方便,特別是調用外部應用的時候。如果是本應用內部,可以通過firebug進行調試。

 

        此次對比主要集中在對大量數據通信下web app UI性能。通過與android Java app相比較,web appUI性能會比Java appUI性能差。主要原因是依賴webkit瀏覽器內核的渲染解析能力。同時在只有一個WebView的情況下,如何控制內存的上漲速度以無法釋放內存的情況無縫地重新啓動WebView從而不影響用戶體驗,是一個現實待解決問題。

        在非大數據量且不需要頻繁更新UI的情況下,基於wekit瀏覽器phonegap模式還是可以滿足Android開發應用的需求。同時應用的實現的效率還依賴於OPOA開發模式的Javascript基礎架構是否強大和高效。

        對於不同分辨率的屏幕,需要通過JS或者通過要集成的框架封裝來解決適配的問題。同時由於不同版本的Android所集成的webkit的版本不同,同樣也需要處理不同版本的在JavaScriptCSS支持上不同的兼容性問題。還有解決開發時多人協作及方便的調試工具集成,也是進行html5 app開發的重要前提條件。
        或者通過要集成的框架封裝來解決適配的問題。同時由於不同版本的Android的版本不同,同樣也需要處理不同版本的在JavaScript支持上不同的兼容性問題。還有解決開發時多人協作及方便的調試工具集成,也是進行html5 app開發的重要前提條件。

7    結語

         phonegap的目標就是快速開發移動應用實現written once, run everywhere跨平臺。phonegap一定程度上降低了移動開發的門檻,特別是ios開發。傳統web開發人員不需要學習object-candroid java就可以開發普通的移動應用。

        類似於phonegap這樣的框架的出現,並不能取代Native APP原生態應用。phonegap有它的不足之處,運行速度較慢、操作平臺資源不靈活、操作移動設備不方便,這些都依賴者phonegap框架本身的升級與發展。不過值得高興的是adobe公司收購了phonegap開發商,增加了phonegap的後臺實力。phonegap的種種不足之處表明Native app的地區不能被取代,只能說會瓜分一部分簡單web移動應用。

        在用戶體驗方面。phonegap運行速度相對慢,頁面動畫切換有點卡,這影響着用戶體驗。這些原因能否解決,這取結於移動平臺的webkit的性能優化和對htmlcssjavascript的支持程度。

        在硬件支持與內存方面。一個應用用兩種方式實現,native app消耗內存較低,要求硬件支持較低。phonegap消耗內存較大,內存釋放效率較低,因而要求的硬件支持相比之下就高了。

        開發費用方面。phonegap要求開發人員的javascriptcss技術高,甚至要求開發人員掌握html5新技術。這樣開發人員費用高於傳統web開發人員。不過,與native app相比,phonegap可以實現跨平臺,減少在各個平臺上花費開發費用。總體上,一個移動產品採用phonegap,費用要低些。

        至於是否採用phonegapnative app方式,這要取決於移動產品本身特性與企業對產品的要求。一般的移動web應用可以採用phonegap技術,但是用戶體驗就沒有native app好;接近於遊戲的應用,經常刷新界面的應用,使用phonegap就不太合適了。最後,採用何種技術,要看產品的側重點。像QQ這樣的應用,注重用戶體驗,應該不會採用phonegap了。

轉自:http://sunny-liang.iteye.com/blog/1452495

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章