Mobile Web App發展現狀及展望 |
發布時間: 2012/8/25 15:42:31 |
在計算機的發展過程中,目前移動設備的時代可謂是潛力最大,發展最為迅猛,也是競爭最為激烈的一個時代。硬件的發展速度令所有的消費者驚嘆,如果2008年給你一部主頻528MHz,內存192M,屏幕3.2寸,分辨率320*480的手機,你可能會覺得非常前衛,因為CPU和分辨率足夠高。而放到三年之后的今天,這部機器已經淪落到無人問津,成為古董機型的地步。不錯,這就是G1的配置。而現在雙核1.5G的CPU,4寸,甚至5寸的超大屏手機已開始成為用戶心中的主流手機。毫無疑問,這種手機的處理能力已經開始能夠趕上PC的處理能力。而傳說中的模塊四核的Pad,更有趕超PC發展速度的勢頭。
在硬件處理能力不斷強大的同時,移動設備的操作系統的競爭也開始越來越激烈,不僅僅是iOS, Android還有不知道市場反響如何的Windows Phone。而僅僅是這三種平臺,就已經開始讓傳統PC轉向移動的開發者以及企業開始頭疼。與此同時,HTML 5能力的不斷強大,使得Web App和Native App之爭不斷升溫,在移動設備上的討論尤為突出。但無論如何,當硬件能力的進一步強大,性能問題得到改善之后,快速開發程序的能力以及構建程序的成本會成為影響和推動技術選擇的一個重要原因。 Mobile Web App的現在 作為一個堅定的Web App的支持者,筆者認為,開發難度和跨平臺的需求會在技術和商業兩個方面都會推動Web App得到越來越廣泛的應用。市場對Web App的接受程度也在不斷地得到印證,大家所熟知的Mobile Web App先行者Finance Time ,在短短的三個月的時間內已經獲得超過100萬的下載量。相比起很多原生的程序,這個下載量不算太高,但其幾乎匹敵原生應用的體驗,已經讓很多人留下了深刻的印象。 不僅僅如此,還有很多其他的數據可以用來分析Web的趨勢。如大家所熟知,Facebook也一直在推進Web的發展。Facebook不僅收購了HTML 5的移動應用開發商Strobe,同時 Facebook也正式推出了名為Spartan的HTML 5移動開發平臺,其目標就在于更好地幫助開發者開發Web App。不僅如此,最近有消息傳出,作為在Web App開發的最火的工具/框架之一Sencha的技術推廣經理跳巢去了Facebook。足以見得Facebook在這個方面在不斷積蓄力量以求更大的突破以及發展。而另一則Adobe放棄在移動設備上支持Flash的消息,更讓人看到了HTML 5在同一技術標準以及能力上的突破。 與此同時,國內對Web App的技術的關注也非常活躍。一個致力于探討和分析業界對Web App的最新進展和發展趨勢的博客Web App Trend的已經出現,并且質量相當之高。不僅僅如此,PhoneGap中文站也已經浮出水面,為國內的開發者帶來了全中文的教程以及學習資料。 這一切都在說明業界對Web App不僅僅停留在口號,而是有更多的實質性的推動。 Web App開發現狀 回到一個實質性的問題,什么才是Web App? 引用Web App Trend博客里面的一篇博文的內容,有著如下的定義: “要給出完整的Web App的定義是一件很復雜的事情,因此我們在此只給出一個簡單的定義: Web Application是指通過使用Web和Web瀏覽器技術,跨越網絡完成一個或多個任務的應用程序,通常需要使用Web瀏覽器。 “ 簡單來說,就是利用Web技術,能夠做出超越傳統理解網站的功能,讓它更具有交互體驗,讓這個App看起來和用起來更像Native App。這樣就非常清楚Web App和Native App的差別具體在哪里了。之前的文章筆者探討過,在目前的技術儲備上Web App同樣也開始用戶Cache, Drag&Drop等等Native App所必備的功能。 那么從開發層面來看,Web App的開發和Native App的開發又有怎樣的差距和距離呢? 讓我們回想一下一個Native App的開發過程: 界面開發。一般來說,Native App的界面開發擁有非常強大的控件庫。不管是對用戶交互的Button、 Checkbox , 還是用戶輸入的textbox、RichTextbox,或是用戶展示的ListView或者GridView之類的控件(不同的開發平臺下控件的名稱未必一致),控件庫里面已經為這些控件的展現方式。為屬性設置、事件響應等基本的開發需求做好的充分了準備。絕大部分的開發者只需要拖拽控件,然后就可以實現自己的邏輯代碼,而無需做太多的準備工作。 事件響應/數據綁定。在絕大部份的場合下,對于數據的處理成為了Native App開發中間的重要工作。這部分的工作的本質就是把從網絡上傳輸的一組數據(不管是從數據庫,還是從Web Services)轉換成為業務邏輯中所定義的對象,然后綁定到相應的數據控件中。而事件響應的過程則是相反的過程,根據用戶的響應,修改相應數據控件里面的值或者狀態,然后通過數據處理邏輯回傳到數據庫或者Web Services中。在這個過程中一般來說Native App的開發過程中,同樣有邏輯處理非常完善的庫來幫助實現這個工作。比如說Android里面的Content Provider或者Adapter。 數據狀態管理。數據的狀態管理是指根據實習的開發需求所帶來的本地緩存,配置文件讀取等等操作。比如聊天應用,文本編輯應用或者基本的信息管理系統都有能力直接從本地的磁盤中讀取之前的操作記錄或者緩存信息。從而讓程序能夠有能力很快地啟動并且展示。比如聊天程序中的聯系人列表,比如郵件客戶端里的本地郵件等等。這些都依賴于有本地的存儲和緩存,來讓用戶更快地獲取信息。 這里沒有強調具體和網絡操作,具體和業務相關的邏輯處理等具體需求。對比在Web App開發的過程來說,情況則不太一樣。 由于傳統的Web 展示能力有限,傳統的Web開發過程中,由于位于前端。因此界面的開發本質上讓位于了CSS所創造的效果以及Javascript所包裝出來了各種各樣交互效果。這部分的工作更多地集中在樣式的調整以及和動畫效果制作上。 對于所謂的事件響應,數據綁定等等方面,在早期的開發過程中基本上不存在這個概念,完全跳轉回服務器,然后重新刷新頁面。在AJAX引入之后,利用Javascript + XMLHttpRequest,使得HTML的頁面邏輯可以轉移到Javascript中實現和完成。 對于數據的狀態管理部分。本質上來說,早前的Web基本不存在這個概念,僅有的Cookie能力有限,僅能部分保存狀態。直到Web Storage開始實現,甚至是Web Database的出現,才增強了Web在這個方面的編程能力。 那么,回過頭來看Web App和Native App之爭的本質是什么? 無非就是Web App是否能夠完整實現Native App所能作的事情。這樣Web App在開發簡單,跨平臺方面的能力才能充分凸顯出來。但對現階段的狀況來說,當期望把Native App所擁有的功能轉向到Web App時,不可避免地因為工具的缺失,甚至是開發理念的缺失,導致了在開發中始終存在不夠的狀況。可以坦率地說,現在Web App的開發中,還處于構建不同的開發工具和開發庫,甚至是在摸索開發模式的過程中,還尚未成熟。 當然,這不是不能解決的問題。Web App開發,尤其是Mobile Web App 的很多工具和框架已經開始組建建立。 界面開發。如前面所說,非常強的Native App界面控件成為了提高效率的有效保證。在Mobile Web App開發中,Sencha以及jQTouch已經提供了非常強大的界面開發支持。同時在界面庫方面,jQuery Mobile可以認為是一種增強型的javascript庫,能夠有效地幫助用戶來解決和提升開發效率。 事件響應/數據綁定。如果和Native App相比,這塊本來就不是Web開發的強項,但是也許根據開發的需要,未來會衍生出包裝的非常完善的一站式解決方案。比如可以直接把一組RSS里面的內容,更加方便地變成具有交互能力的List或者功能。 數據邏輯/緩存處理。Web Storage已經提供的技術的支持,需要的就是最佳的開發實踐,甚至是利用緩存的模式。對于簡化開發的工作來說,應該會出現專門的Storage的管理模式,甚至是封裝的非常完善的庫。 現有Web App開發模式的問題以及挑戰 從工具層面來說,Web App在工具方面的演化正在不斷地進步。但是在現有的Web App開發過程中,依然存在非常多的問題和挑戰。 性能問題。性能問題依舊是非常大的挑戰。由于Web App的開發幾乎完全構建在Webview的基礎之上,因此在Webview上對事件的處理以及響應的能力就直接決定了用戶的體驗。在這里有兩方面的性能,一個性能是對事件響應的速度。在Web上控件的響應速度比原生的控件響應速度要慢;另外一個是直接在渲染和執行速度上面的速度。 分辨率的問題和適配的問題。和Native App的開發方式一樣,不同的分辨率,橫豎屏切換,以及對于不同機型的識別,甚至與對不同的web 瀏覽器內核的適配,同樣存在一樣的問題。同樣需要比較多的調試和適配的工作。 離線的問題。和Native App相比,可能這是最應突破的一件事情。一是這是一個0或者1的問題,實質上是突破了原有的Web開發的限制,二是界面和邏輯數據的分離。對于Web的頁面來說,這可以認為是界面,中間涉及到分離的js, css文件以及沒有更新的img等靜態元素的緩存問題,同時也存在把動態數據元素(比如某個控件里的狀態,比如離線郵件中的郵件信息)緩存以及載入的問題。這需要重新建立起一套解決方案來實現。 跨平臺問題。Web App和Native App另一個不同在于訪問硬件資源上的不同。由于受限于瀏覽器的功能,有很多的硬件資源不能直接訪問。所幸的是PhoneGap為在多個平臺上開發提供了非常的好的解決方案,使得Web App擁有了能夠在多個平臺上執行的能力。有理由相信這個問題能夠被解決的越來越順暢。 總結 如果從開發的工具以及各種支持來說,Mobile Web App開發現在尚處于比較早期的原始階段,甚至也會出現很多因為性能問題導致不夠實用的情況。但是,從技術的角度來看,并沒有太多的致命門檻,而是出于構建框架,重建游戲規則的過程中。不僅僅是Facebook, Google這樣在互聯網上的巨頭,連IBM這樣的老牌公司也已經在開始搭建Mobile上的工具以及解決方案,這完全有理由詳細,在Mobile上Web App的開發會越來越火熱,讓我們拭目以待。 本文出自:億恩科技【www.laynepeng.cn】 本文出自:億恩科技【www.enidc.com】 --> |