移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)研究
隨著移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)持續(xù)快速的發(fā)展,以及智能手機(jī)、平板、智能電視等智能終端設(shè)備的普及,移動(dòng)互聯(lián)網(wǎng)應(yīng)用獲得了爆炸式增長(zhǎng)。面對(duì)未來的廣闊市場(chǎng),運(yùn)營(yíng)商、互聯(lián)網(wǎng)、設(shè)備生產(chǎn)商等產(chǎn)業(yè)巨頭紛紛構(gòu)建了移動(dòng)互聯(lián)網(wǎng)生態(tài)鏈,其中蘋果App Store成功創(chuàng)造了移動(dòng)互聯(lián)網(wǎng)應(yīng)用商業(yè)模式,激發(fā)出了廣大開發(fā)者進(jìn)行移動(dòng)互聯(lián)網(wǎng)應(yīng)用創(chuàng)作的極大熱情。
移動(dòng)互聯(lián)網(wǎng)應(yīng)用形態(tài)主要分為原生應(yīng)用和移動(dòng)Web應(yīng)用兩大類。這兩種形態(tài)的移動(dòng)互聯(lián)網(wǎng)應(yīng)用,我們暫且可以理解為PC平臺(tái)上的C/S架構(gòu)應(yīng)用和B/S架構(gòu)應(yīng)用,它們有著各自的優(yōu)缺點(diǎn)。
目前,運(yùn)行在移動(dòng)終端上的應(yīng)用大多都是原生應(yīng)用,它通過終端操作系統(tǒng)支持的程序語言(如蘋果iOS系統(tǒng)支持使用Objective-C語言,谷歌Android系統(tǒng)支持使用Java語言,微軟Windows Phone系統(tǒng)支持使用C#語言)編寫,軟件直接運(yùn)行在操作系統(tǒng)之上。
原生應(yīng)用可以完全利用終端操作系統(tǒng)的API和平臺(tái)特性,具有開發(fā)能力強(qiáng)、交互性好、效率高等優(yōu)點(diǎn)。由于原生應(yīng)用通常需要依靠廠商提供的特定開發(fā)語言和開發(fā)工具進(jìn)行軟件開發(fā),因而一款移動(dòng)互聯(lián)網(wǎng)應(yīng)用若要覆蓋多種移動(dòng)終端平臺(tái),開發(fā)者需要花費(fèi)大量的時(shí)間和精力進(jìn)行跨平臺(tái)的開發(fā)移植工作,導(dǎo)致應(yīng)用開發(fā)周期長(zhǎng)、開發(fā)門檻高等問題。
移動(dòng)Web應(yīng)用,簡(jiǎn)單理解就是針對(duì)移動(dòng)終端優(yōu)化過的Web網(wǎng)站,采用網(wǎng)頁(yè)語言(HTML、JavaScript、CSS)開發(fā),運(yùn)行于終端瀏覽器之上,具有開發(fā)簡(jiǎn)單、跨平臺(tái)適配等優(yōu)點(diǎn)。缺點(diǎn)是應(yīng)用基于瀏覽器,無法調(diào)用系統(tǒng)API(如手機(jī)的重力感器、攝像頭等API)來實(shí)現(xiàn)一些高級(jí)功能,也不適合高性能要求的場(chǎng)合。
為了滿足開發(fā)者進(jìn)行跨平臺(tái)移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)的需要,盡量減少針對(duì)不同的終端平臺(tái)進(jìn)行的二次開發(fā)和適配工作,出現(xiàn)了兩類主要的跨平臺(tái)開發(fā)技術(shù):基于HTML5的移動(dòng)Web應(yīng)用開發(fā)與混合應(yīng)用(Hybird App)開發(fā)。
2.1 基于HTML5的移動(dòng)Web應(yīng)用開發(fā)
基于HTML5的移動(dòng)Web應(yīng)用開發(fā),繼承了前述移動(dòng)Web應(yīng)用的開發(fā)簡(jiǎn)單、跨平臺(tái)適配的優(yōu)點(diǎn),并通過HTML5支持的Geolocation、Vibration、Battery Status等跨平臺(tái)API,實(shí)現(xiàn)對(duì)終端硬件的調(diào)用,從而可以實(shí)現(xiàn)部分原來只能通過原生應(yīng)用才能實(shí)現(xiàn)的復(fù)雜功能。
移動(dòng)Web應(yīng)用部署于Web服務(wù)器,移動(dòng)終端通過瀏覽器訪問應(yīng)用時(shí),服務(wù)器以HTML5、CSS3和JavaScript形式的數(shù)據(jù)響應(yīng)瀏覽器的請(qǐng)求。應(yīng)用的UI展現(xiàn)及其動(dòng)態(tài)切換效果,是通過Webkit內(nèi)核對(duì)HTML5、CSS3和JavaScript的解析實(shí)現(xiàn)的,應(yīng)用對(duì)終端硬件的跨平臺(tái)調(diào)用是通過瀏覽器提供的JavaScript擴(kuò)展API實(shí)現(xiàn)的。
移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)通常需要充分調(diào)用終端的硬件能力,但由于HTML5標(biāo)準(zhǔn)還未完成制定,因而各種移動(dòng)終端瀏覽器對(duì)HTML5支持程度還有很大差別,無法保證良好的跨平臺(tái)硬件能力調(diào)用。
鑒于上述原因,為了充分發(fā)揮Web應(yīng)用開發(fā)的跨平臺(tái)特性和原生應(yīng)用開發(fā)自由調(diào)用系統(tǒng)API的特性,出現(xiàn)了結(jié)合兩者優(yōu)點(diǎn)的混合應(yīng)用開發(fā)技術(shù)。
2.2 混合應(yīng)用開發(fā)
混合應(yīng)用開發(fā)彌補(bǔ)了原生應(yīng)用開發(fā)和移動(dòng)Web應(yīng)用開發(fā)模式各自的缺陷,繼承了雙方各自的優(yōu)勢(shì)。首先,它讓開發(fā)者通過一次性的Web應(yīng)用代碼編寫,即可編譯成多種類型終端平臺(tái)上的應(yīng)用程序,大大提高了多平臺(tái)開發(fā)的效率。其次,它可讓為數(shù)眾多的Web開發(fā)人員以幾乎零成本轉(zhuǎn)型為移動(dòng)應(yīng)用開發(fā)者。另外,相對(duì)于移動(dòng)Web應(yīng)用,混合應(yīng)用開發(fā)者可以自行進(jìn)行系統(tǒng)API封裝,調(diào)用任何期望的系統(tǒng)能力,這可以在很大程度上克服目前HTML5跨平臺(tái)API匱乏的缺陷。
混合應(yīng)用開發(fā)與基于HTML5的移動(dòng)Web應(yīng)用開發(fā)的區(qū)別主要在于,應(yīng)用對(duì)終端硬件的跨平臺(tái)調(diào)用是通過JavaScript調(diào)用自行封裝或者由第三方插件封裝的系統(tǒng)API實(shí)現(xiàn)的。另外,混合應(yīng)用程序,包括HTML、CSS、JavaScript和系統(tǒng)API封裝等都是部署于終端側(cè)的,應(yīng)用的UI展現(xiàn)及其動(dòng)態(tài)切換效果,同樣是通過Webkit內(nèi)核的解析實(shí)現(xiàn),構(gòu)建出類似Web應(yīng)用的移動(dòng)應(yīng)用UI。而Web服務(wù)器主要部署Web Service接口,終端程序通過Ajax與其進(jìn)行數(shù)據(jù)交互。
隨著智能終端的迅速普及推廣,進(jìn)行高效率、低成本的跨平臺(tái)移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)的需要日益迫切,因而出現(xiàn)了眾多跨平臺(tái)框架。這些框架主要分為兩類:移動(dòng)Web開發(fā)框架和跨平臺(tái)開發(fā)框架。通過這兩類開發(fā)框架的組合運(yùn)用,可以實(shí)現(xiàn)更加快捷高效的跨平臺(tái)混合應(yīng)用開發(fā)。
3.1 移動(dòng)Web開發(fā)框架
移動(dòng)Web開發(fā)框架主要用于構(gòu)建運(yùn)行于移動(dòng)終端Web瀏覽器中的跨平臺(tái)界面(HTML、JavaScript、CSS)。移動(dòng)Web開發(fā)框架眾多,包括jQuery Mobile、Sencha Touch、iWebKit、Safire、WebApp.Net、Dojo Toolkit等,常用的移動(dòng)Web開發(fā)框架包括jQuery Mobile和Sencha Touch,兩者均支持HTML5。
jQuery Mobile建立在jQuery和jQuery UI框架之上,為移動(dòng)設(shè)備上的移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)提供jQuery核心庫(kù)和jQuery移動(dòng)UI框架。它繼承了jQuery支持多瀏覽器的特性,支持iOS、Android、BlackBerry、Palm WebOS、Symbian、Windows Phone、bada、MeeGo等主流移動(dòng)平臺(tái)。Sencha Touch由基于JavaScript編寫的Ajax框架ExtJS,整合JQTouch、Rapha?l庫(kù)而來。它繼承了ExtJS的優(yōu)點(diǎn),提供針對(duì)觸摸屏的豐富的UI布局解決方案,支持復(fù)雜交互,目前支持iOS、Android、BlackBerry、Windows Phone平臺(tái)。
與Sencha Touch相對(duì)比,jQuery Mobile屬于輕量級(jí)框架,支持的UI復(fù)雜度較低,但它開發(fā)門檻低,支持更多移動(dòng)平臺(tái)。因而,jQuery Mobile更適合交互較為簡(jiǎn)單的移動(dòng)互聯(lián)網(wǎng)應(yīng)用的開發(fā),而Sencha Touch更適合面向特定行業(yè)的有豐富交互需求的產(chǎn)品化應(yīng)用的開發(fā),如企業(yè)辦公系統(tǒng)和移動(dòng)信息化應(yīng)用。
3.2 跨平臺(tái)開發(fā)框架
跨平臺(tái)開發(fā)框架主要用于提供跨平臺(tái)API,讓開發(fā)者不必關(guān)心各終端平臺(tái)的系統(tǒng)API和原生開發(fā)語言,通過Web開發(fā)就可以完成跨平臺(tái)混合應(yīng)用的開發(fā)。國(guó)內(nèi)常用的跨平臺(tái)開發(fā)框架包括phoneGap、AppCan、WAC Widget。
PhoneGap是一個(gè)讓開發(fā)者通過普通的Web技術(shù)編程,快速創(chuàng)建跨平臺(tái)移動(dòng)應(yīng)用程序的混合應(yīng)用開發(fā)平臺(tái)。它支持iOS、Android、BlackBerry、Palm WebOS、Symbian、Windows Phone、bada等主流移動(dòng)平臺(tái),支持的硬件API包括重力感應(yīng)、攝像頭、通訊錄、文檔、地理定位、聲音和振動(dòng)等。此外,它還擁有豐富的第三方插件,功能可以無限擴(kuò)展,并且采用開源MIT許可證。
AppCan是國(guó)產(chǎn)的混合應(yīng)用開發(fā)平臺(tái),它著重解決了基于HTML5的移動(dòng)應(yīng)用不流暢和體驗(yàn)差的問題,使得基于AppCan開發(fā)的HTML5移動(dòng)應(yīng)用的用戶體驗(yàn)基本接近原生應(yīng)用的體驗(yàn)。它支持iOS、Android、Windows Phone等主流移動(dòng)平臺(tái)。
WAC Widget是一種可運(yùn)行在移動(dòng)設(shè)備上的Widget開發(fā)框架,它支持標(biāo)準(zhǔn)Web技術(shù)開發(fā),支持iOS、Android、Symbian、Windows Phone等主流移動(dòng)平臺(tái),通過它定義的一套完整的API可以訪問移動(dòng)終端系統(tǒng)和網(wǎng)絡(luò)側(cè)平臺(tái),例如語音呼叫、通信錄、文件操作、系統(tǒng)軟硬件信息、拍照、重力感應(yīng)、位置服務(wù)等。它是由W3C著手制定的一套Widget系列規(guī)范,獲得了全球眾多運(yùn)營(yíng)商、廠商的廣泛支持。
3.3 跨平臺(tái)混合應(yīng)用開發(fā)
移動(dòng)Web開發(fā)框架可以顯著提高移動(dòng)Web應(yīng)用的開發(fā)效率,而PhoneGap等跨平臺(tái)開發(fā)框架可以減少甚至避免混合應(yīng)用開發(fā)中的原生開發(fā)的工作。在移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)中,跨平臺(tái)開發(fā)比原生開發(fā)擁有更高的開發(fā)效率;而基于移動(dòng)Web開發(fā)框架和跨平臺(tái)開發(fā)框架的跨平臺(tái)混合應(yīng)用開發(fā),可以進(jìn)一步提高應(yīng)用開發(fā)效率,顯著降低開發(fā)成本。
跨平臺(tái)混合應(yīng)用開發(fā)主要分為移動(dòng)Web開發(fā)和原生開發(fā)兩部分工作,移動(dòng)Web開發(fā)主要用于構(gòu)建混合應(yīng)用的界面和業(yè)務(wù)邏輯等,而原生開發(fā)主要是針對(duì)不同終端系統(tǒng)平臺(tái)進(jìn)行跨平臺(tái)API的封裝,為基于Web技術(shù)開發(fā)的移動(dòng)應(yīng)用提供統(tǒng)一的JavaScript接口。
基于HTML5的移動(dòng)Web開發(fā)和跨平臺(tái)混合應(yīng)用開發(fā)兩類跨平臺(tái)開發(fā)技術(shù),兩者的共同基礎(chǔ)是Web開發(fā),不同點(diǎn)是前者通過HTML5標(biāo)準(zhǔn)支持跨平臺(tái)API,后者通過終端原生開發(fā)支持跨平臺(tái)API。
隨著移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展、智能終端的迅速普及,移動(dòng)互聯(lián)網(wǎng)應(yīng)用低成本運(yùn)營(yíng)的需求日益強(qiáng)烈,這就催生了基于HTML5的移動(dòng)Web應(yīng)用和混合應(yīng)用兩類跨平臺(tái)開發(fā)技術(shù)。而移動(dòng)Web開發(fā)框架和跨平臺(tái)開發(fā)框架的出現(xiàn),進(jìn)一步推動(dòng)了移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)技術(shù)的發(fā)展。
相信在不遠(yuǎn)的將來,隨著移動(dòng)終端瀏覽器對(duì)HTML5標(biāo)準(zhǔn)支持度和運(yùn)行效率的迅速提高,移動(dòng)互聯(lián)網(wǎng)應(yīng)用跨平臺(tái)開發(fā)技術(shù)將會(huì)獲得迅猛發(fā)展,完全有可能替代原生應(yīng)用開發(fā)技術(shù),成為移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)的首要技術(shù)。
[1]Sarah Allen, Vidal Graupera, Lee Lundrigan. 智能手機(jī)跨平臺(tái)開發(fā)高級(jí)教程[M]. 北京: 清華大學(xué)出版社, 2011.
[2]陳樺,杜啟宏,程剛. 移動(dòng)智能終端Web應(yīng)用平臺(tái)開發(fā)技術(shù)研究[J]. 移動(dòng)通信, 2013(5): 23-26.
[3]楊曉華,程寶平,朱春梅. Mobile Widget——新一代移動(dòng)互聯(lián)網(wǎng)應(yīng)用技術(shù)[J]. 電信技術(shù), 2011(2): 30-34.
[4]劉春華. 基于HTML5的移動(dòng)互聯(lián)網(wǎng)應(yīng)用發(fā)展趨勢(shì)[J]. 移動(dòng)通信, 2013(9): 64-68.
[5]胡世良. 移動(dòng)互聯(lián)網(wǎng)軟硬一體化商業(yè)模式探析[J]. 移動(dòng)通信, 2013(9): 56-59.