摩爾定律作為指引PC發(fā)展最重要的定律,同樣也在移動(dòng)設(shè)備的發(fā)展上起著重要的作用。國(guó)內(nèi)某款按照互聯(lián)網(wǎng)思路開(kāi)發(fā)手機(jī)的大佬曾宣稱:手機(jī)CPU的發(fā)展速度可能會(huì)超過(guò)PC的發(fā)展速度。按照這個(gè)思路可以預(yù)見(jiàn),手機(jī)的處理能力將會(huì)達(dá)到甚至超過(guò)PC的處理能力。與此同時(shí),手機(jī)瀏覽器的處理能力將會(huì)和PC瀏覽器能力不相上下。
在硬件飛速發(fā)展的同時(shí),操作系統(tǒng)和軟件的更新也在快速演進(jìn)。繼iOS超強(qiáng)的硬件加速能力之后,在Android 4.0中,為系統(tǒng)默認(rèn)引入硬件加速功能成為了最大賣點(diǎn)。這將會(huì)為Android系統(tǒng)帶來(lái)更加流暢的界面體驗(yàn),同時(shí)也會(huì)為瀏覽器帶來(lái)更好的Canvas繪制性能以及CSS Animation的效果。不僅如此,在2012年2月,Chrome for Android的發(fā)布也進(jìn)一步推動(dòng)了手機(jī)瀏覽器的發(fā)展。Chrome for Android直接移植了桌面版Chrome 16.0的代碼,同樣延續(xù)了Chrome在啟動(dòng)速度、渲染速度、網(wǎng)頁(yè)加載速度以及基于V8引擎的JavaScript執(zhí)行速度這些可以秒殺同行的能力。
快速發(fā)展的硬件加上來(lái)自瀏覽器的革新,這些都成為推動(dòng)Web App在移動(dòng)設(shè)備上發(fā)展的利好消息。盡管如此,硬件和Chrome在移動(dòng)設(shè)備上的發(fā)展僅是基礎(chǔ)平臺(tái)的發(fā)展。正如在PC+Windows時(shí)代一樣有著各種功能強(qiáng)勁的框架一樣,Web App的發(fā)展需要各種基礎(chǔ)的開(kāi)發(fā)平臺(tái)、框架以及庫(kù)的普及和推廣。本文將集中探討目前支持Web App的各種框架以及平臺(tái)的發(fā)展?fàn)顩r和不足。
Web App所依賴的框架以及庫(kù)
在Web App的發(fā)展中一直有兩種觀點(diǎn):
Web App就應(yīng)該延續(xù)Web一貫簡(jiǎn)單、靈活的風(fēng)格,延續(xù)Web的開(kāi)發(fā)模式和理念,哪怕在移動(dòng)設(shè)備上也是如此。
Web App應(yīng)該沖擊和模擬Native App的行為,用Web的技術(shù)來(lái)開(kāi)發(fā)出類比Native App的程序。
盡管這個(gè)問(wèn)題已被討論過(guò)很多遍, 并且大眾認(rèn)為它們各有長(zhǎng)處,會(huì)占據(jù)各自擅長(zhǎng)的開(kāi)發(fā)領(lǐng)域很長(zhǎng)一段時(shí)間。但我認(rèn)為,Web相關(guān)的技術(shù)一直在侵蝕Native App的領(lǐng)地。尤其是在JavaScript的語(yǔ)言進(jìn)化以及開(kāi)發(fā)能力越來(lái)越強(qiáng)的今天,基于AJAX的應(yīng)用越來(lái)越豐富,使得前端的開(kāi)發(fā)能力越來(lái)越強(qiáng),承載的功能也越來(lái)越多。因此,在Web App的發(fā)展過(guò)程中,各種類比Native App的框架和庫(kù)會(huì)越來(lái)越多,這也使得Web App所能夠具有的開(kāi)發(fā)能力越來(lái)越傾向于Native App。
那么,在移動(dòng)領(lǐng)域Web App的發(fā)展過(guò)程中,將會(huì)需要和出現(xiàn)怎樣的框架和技術(shù)支持呢?
基礎(chǔ)的調(diào)試工具。對(duì)于任何開(kāi)發(fā)平臺(tái)來(lái)說(shuō),這是最為基礎(chǔ)的開(kāi)發(fā)工具和需求。目前在PC瀏覽器中,Chrome、IE、Firefox都提供了強(qiáng)大的從資源文件瀏覽、CSS應(yīng)用規(guī)則監(jiān)控、網(wǎng)絡(luò)請(qǐng)求監(jiān)控以及JavaScript斷點(diǎn)執(zhí)行的調(diào)試工具。
UI層的組件/框架。對(duì)任何一種Native App的開(kāi)發(fā)語(yǔ)言來(lái)說(shuō),這些都是基礎(chǔ)的用來(lái)搭建大規(guī)模上層應(yīng)用的原材料庫(kù),在這個(gè)基礎(chǔ)之上才會(huì)演化出各種各樣的編程模式。從VC++對(duì)應(yīng)的MFC,到Delphi對(duì)應(yīng)的VCL,到Java對(duì)應(yīng)的AWT/Swing莫不如此。盡管因?yàn)閃eb的特殊性,基于HTML的頁(yè)面元素標(biāo)簽構(gòu)建異常簡(jiǎn)單,但對(duì)于復(fù)雜的混合交互控件,仍然需要UI的組件/框架的支持以作出絢麗的效果。
數(shù)據(jù)以及業(yè)務(wù)邏輯的組件/框架。從緩存到配置文件、數(shù)據(jù)處理、網(wǎng)絡(luò)請(qǐng)求等各部分的組件/框架,會(huì)成為開(kāi)發(fā)各種信息系統(tǒng)、具體業(yè)務(wù)相關(guān)企業(yè)信息化系統(tǒng)的主要需求。這些會(huì)成為簡(jiǎn)化企業(yè)信息化開(kāi)發(fā),各種行業(yè)應(yīng)用最為直接和有效的有利工具。正如.NET中的ADO.NET以及Enterprise Library。
跨平臺(tái)以及與移動(dòng)設(shè)備硬件能力相關(guān)的框架。如果不涉及到具體移動(dòng)設(shè)備的固有能力(比如打電話、發(fā)短信、調(diào)用聯(lián)系人信息等涉及本地?cái)?shù)據(jù)相關(guān)的能力),Web App天然就是跨平臺(tái)的。然而,如果需要和移動(dòng)的平臺(tái)能力結(jié)合在一起,那么,就需要有相關(guān)的跨平臺(tái)框架利用統(tǒng)一的數(shù)據(jù)接口,來(lái)幫助Web App獲得Native App的能力。同時(shí),伴隨著瀏覽器能力進(jìn)一步成熟,Web App會(huì)越來(lái)越不依賴于第三方的跨平臺(tái)框架。例如現(xiàn)在可以看到的獲得地理位置信息,以及通過(guò)Web GL直接訪問(wèn)GPU來(lái)獲得3D的能力等。
當(dāng)這些能力和框架開(kāi)始完善時(shí),Web App就會(huì)得到越來(lái)越多開(kāi)發(fā)者的支持,基于這些技術(shù)和框架開(kāi)發(fā)的Web App的功能也會(huì)越來(lái)越強(qiáng)大。
現(xiàn)有移動(dòng)框架上的發(fā)展?fàn)顩r
框架的成熟會(huì)進(jìn)一步催生應(yīng)用的實(shí)現(xiàn)和普及。根據(jù)前面對(duì)框架能力的分析以及評(píng)估,我們可以一一對(duì)號(hào)入座,然后靜觀業(yè)界的發(fā)展。
基礎(chǔ)的調(diào)試工具。在之前的移動(dòng)設(shè)備上瀏覽器的功能比較單一,僅能實(shí)現(xiàn)基本的瀏覽功能。在2012年2月發(fā)布的Chrome for Android中,已經(jīng)可以看到,這一塊工具已經(jīng)被Google率先補(bǔ)了起來(lái)。Chrome for Android提供了通過(guò)USB連接PC,可以利用Web來(lái)調(diào)試手機(jī)上頁(yè)面。這對(duì)所有開(kāi)發(fā)Mobile Web頁(yè)面以及Web App的開(kāi)發(fā)者來(lái)說(shuō)都會(huì)是一個(gè)利好消息。
UI的組件以及框架。jQuery可以認(rèn)為是最強(qiáng)的JavaScript Library之一。注意,是Library而不是Framework。他本質(zhì)上是簡(jiǎn)化和JavaScript的開(kāi)發(fā)工作,通過(guò)大量構(gòu)建好的Library可以快速幫助開(kāi)發(fā)者實(shí)現(xiàn)各種各樣操作DOM以及CSS的效果。在移動(dòng)設(shè)備商,由AppMobi推出的JQ.Mobi號(hào)稱是重寫了jQuery在移動(dòng)設(shè)備上的實(shí)現(xiàn),僅有3KB的大小完勝jQuery 35KB的體量。并且根據(jù)JSPerf Test的數(shù)據(jù),它在Android上比jQuery快3倍,在iOS上要快2.2倍。這對(duì)所有做移動(dòng)Web App開(kāi)發(fā)的人來(lái)說(shuō)是非常好的消息,速度和體驗(yàn)是一個(gè)非常關(guān)鍵的問(wèn)題。可以預(yù)見(jiàn)的是jQuery和AppMobi會(huì)在這個(gè)領(lǐng)域角力,然后快速推動(dòng)這一個(gè)領(lǐng)域的發(fā)展。
Sencha Web同樣也是最知名的UI Library和Framework提供商。Sencha主打的Ext JS 4可以讓開(kāi)發(fā)者通過(guò)MVC的模式來(lái)開(kāi)發(fā)Web App。Sencha Touch則定位于Mobile上的HTML 5 Web App開(kāi)發(fā)框架。除此之外Sencha Touch Charts則解決了大量圖片控件的問(wèn)題。在這個(gè)領(lǐng)域,Sencha一直是先行者,可以認(rèn)為是從0到1的轉(zhuǎn)變。盡管有開(kāi)發(fā)框架過(guò)重的問(wèn)題,但只要性能跟得上,相信Sencha會(huì)成為開(kāi)發(fā)者首選的框架之一。在MVC框架這個(gè)戰(zhàn)場(chǎng)上,還有Yahoo! Cocktails、Sproutcore、Backbone JS這樣的競(jìng)爭(zhēng)對(duì)手。除此之外,還有Zepto、Ripple、LungoJS、Joshfire、Jo這些定位在移動(dòng)HTML 5的框架。
在這個(gè)領(lǐng)域會(huì)是推動(dòng)Web App發(fā)展最前衛(wèi)也是最火熱的領(lǐng)域,有理由相信各種開(kāi)源的思路和組織,甚至是Google、Facebook、Microsoft、Adobe這樣的大公司直接介入,會(huì)越來(lái)越快地推動(dòng)這個(gè)領(lǐng)域的發(fā)展,并且會(huì)成為Web App發(fā)展的最重要的推動(dòng)力量和基石。把握和跟蹤好這些框架的變遷和大公司的最新動(dòng)向,就會(huì)非常緊密地了解Web App的能力以及發(fā)展?fàn)顟B(tài)。
數(shù)據(jù)和業(yè)務(wù)邏輯框架。這部分最重要的在于和其具體領(lǐng)域直接相關(guān),只有大型的平臺(tái)公司才具備實(shí)力和技術(shù)推廣能力將其脫離具體領(lǐng)域。因此,我預(yù)測(cè)會(huì)現(xiàn)有針對(duì)具體行業(yè)的一站式解決方案率先出現(xiàn),比如電商或者垂直門戶,然后再伴隨Web App的興起,逐漸往通用化發(fā)展。但最終可能還是會(huì)被IBM、Microsoft這些傳統(tǒng)的專長(zhǎng)于企業(yè)方案和開(kāi)發(fā)框架的公司所占有。
跨平臺(tái)的解決方案。在我看來(lái),跨平臺(tái)的解決方案實(shí)際上是各家企業(yè)試圖進(jìn)入到移動(dòng)端最為關(guān)心的方案。任何企業(yè)進(jìn)入移動(dòng)領(lǐng)域都會(huì)面臨移動(dòng)設(shè)備分裂以及很難找到合適的多平臺(tái)移動(dòng)開(kāi)發(fā)者的問(wèn)題,也會(huì)陷入是選用完全本地的實(shí)現(xiàn)方案,還是采用Web App的兩難境地。如果選用本地方案,人力成本會(huì)很高;而選用Web App的方案,則在調(diào)用本地能力上還不成熟,還未看到成功案例。在跨平臺(tái)解決方案領(lǐng)域,主要是PhoneGap以及Titanium在這耕耘。以PhoneGap為首的公司跨平臺(tái)服務(wù)提供商,本質(zhì)上是希望能夠達(dá)到非常完備的平臺(tái)覆蓋(目前PhoneGap覆蓋到iOS、Android、Windows Phone、 BlackBerry、webOS、Symbian等平臺(tái)),來(lái)讓用戶更加順手地實(shí)現(xiàn)調(diào)用本地硬件的能力。由于PhoneGap已被Adobe收購(gòu),甚至成為Adobe下注移動(dòng)互聯(lián)網(wǎng)的重要一環(huán),因此,PhoneGap可能會(huì)有更快的發(fā)展速度,從而拖垮競(jìng)爭(zhēng)對(duì)手。除此之外,也會(huì)有非常多的采用類似于PhoneGap的衍生框架出現(xiàn),它們或多或少會(huì)在某個(gè)專業(yè)領(lǐng)域有自己的優(yōu)勢(shì),然后試圖利用跨平臺(tái)這個(gè)賣點(diǎn),包裝為半成品或產(chǎn)品來(lái)為企業(yè)用戶提供服務(wù)。目前國(guó)內(nèi)已經(jīng)出現(xiàn)這樣的公司在開(kāi)拓市場(chǎng)。
總結(jié)
根據(jù)如上分析,相信讀者對(duì)Web App在未來(lái)技術(shù)領(lǐng)域可能會(huì)出現(xiàn)的框架和技術(shù)會(huì)有了一定了解,也能找到合適的切入點(diǎn)來(lái)了解以及評(píng)估目前已有的技術(shù),為自己的技術(shù)領(lǐng)域作出合適的選擇。
我感覺(jué)Web App的普及和推廣速度比想象中要快。我曾和朋友探討過(guò)兩個(gè)問(wèn)題,在這里,以我對(duì)這兩個(gè)問(wèn)題的回答作為結(jié)尾。
Web App的發(fā)展和普及差什么?本文已對(duì)技術(shù)能力的差距做出了回答。那么,在這些技術(shù)能力中,哪一個(gè)方面會(huì)成為影響Web App發(fā)展的最至關(guān)重要的點(diǎn)?我認(rèn)為,最重要的就是UI框架的發(fā)展。因?yàn)橛辛诉@一塊的發(fā)展,能夠低成本地快速構(gòu)建出性能好、交互能力強(qiáng)的Web應(yīng)用,以這些早起的開(kāi)發(fā)者用強(qiáng)大的Show Case來(lái)帶動(dòng)和推動(dòng)Web App的進(jìn)一步發(fā)展。
如果Web App的這些框架都具備了,跨平臺(tái)的方案如何選擇?我認(rèn)為,從開(kāi)發(fā)成本上來(lái)說(shuō),毫無(wú)疑問(wèn)Web App的成本低。業(yè)界期待的就是類似于當(dāng)時(shí).NET和J2EE技術(shù)比拼的PetShop的Show Case、樣板產(chǎn)品以及成功案例。而對(duì)于PhoneGap這樣的框架來(lái)說(shuō),從更長(zhǎng)遠(yuǎn)的角度來(lái)看,這些都只是中間狀態(tài)。未來(lái)HTML5的標(biāo)準(zhǔn)和瀏覽器的發(fā)展,會(huì)慢慢吞噬PhoneGap這類跨平臺(tái)解決方案的市場(chǎng)。總之,這本質(zhì)上會(huì)是Google、Microsoft、Apple等公司聯(lián)手?jǐn)D壓Adobe的戰(zhàn)爭(zhēng)。
比爾·蓋茨曾說(shuō):“人們總在短時(shí)間內(nèi)高估技術(shù)對(duì)社會(huì)的影響,而在長(zhǎng)時(shí)間中又低估重大技術(shù)對(duì)社會(huì)的影響。”Web App的框架可能就是這樣一種快速發(fā)展的重大技術(shù),就讓時(shí)間來(lái)證明吧。