HTML 5與本地App孰優(yōu)孰劣?
大量新生移動(dòng)設(shè)備的興起,改變了當(dāng)今互聯(lián)網(wǎng)的格局。在技術(shù)的發(fā)展上,HTML5會(huì)取代App應(yīng)用嗎?或者說(shuō)能夠在多大程度上取代呢?在HTML5規(guī)范中,已經(jīng)加入了相機(jī)、磁力羅盤、GPS信息的支持。很多新興瀏覽器也已經(jīng)開始支持這些新特性。能否用一個(gè)統(tǒng)一的HTML5來(lái)替代Android和iOS并行開發(fā)的雙重成本呢?以下譯自Michael Mahemoff的一篇文章,詳細(xì)分析了HTML5和本地App的優(yōu)缺點(diǎn)。
以下為文章原文:
移動(dòng)應(yīng)用程序(App)和HTML5都是目前最火的技術(shù),二者之間也有不少重疊之處。在移動(dòng)設(shè)備瀏覽器里運(yùn)行的HTML5的Web頁(yè)面,也可以重新打包成不同平臺(tái)上運(yùn)行的App。目前很多瀏覽器都有很好的跨平臺(tái)支持性能,HTML5的Web方案,對(duì)開發(fā)者來(lái)說(shuō)更為方便。完成一次開發(fā),即可多平臺(tái)使用。但這確實(shí)可行嗎?目前,仍有許多原因,使開發(fā)者選擇了App開發(fā)。 很明顯,很多人已經(jīng)在這么做了。本文將詳細(xì)分析這兩種方案的優(yōu)劣。
1、功能豐富
正方:App里可以開發(fā)出更豐富的功能。我們把移動(dòng)功能分成兩類。程序本身和程序與系統(tǒng)的結(jié)合。比如在Android里,加入Widget圖標(biāo)或者通知提醒之類的。App對(duì)這兩者都沒(méi)問(wèn)題。不用多說(shuō),這是肯定的。
反方:雖然APP發(fā)展迅猛,但Web也正在迎頭跟進(jìn)。確實(shí)很多原生App實(shí)現(xiàn)的功能是HTML5望塵莫及的。不管你的Web做的再好,如果停留在一個(gè)沒(méi)有攝像頭支持的沙盒中,還是無(wú)法滿足一些功能。幸運(yùn)的是,現(xiàn)在沒(méi)有這樣的沙盒限制了。如果你需要你的Web來(lái)照相,可以做一個(gè)負(fù)責(zé)照像的App,再把你的Web打包進(jìn)這個(gè)應(yīng)用里面。開源的 PhoneGap 框架就是這么做的。
但這種混合開發(fā)的問(wèn)題在于,增加了項(xiàng)目的復(fù)雜性,而且不象傳統(tǒng)Web那樣可以直接在瀏覽器里運(yùn)行。這個(gè)問(wèn)題短時(shí)間內(nèi)恐怕還無(wú)法解決。不過(guò)好在現(xiàn)在網(wǎng)絡(luò)標(biāo)準(zhǔn)在不斷的高速擴(kuò)充,先進(jìn)的瀏覽器也在一直跟進(jìn)。Android 3.1已經(jīng)支持Camera了。iOS瀏覽器也開始支持WebSocket和設(shè)備方向檢測(cè)了。
總得來(lái)說(shuō),移動(dòng)設(shè)備在發(fā)展,而Web也同樣在快速變化。而目前也有5家主要瀏覽器開發(fā)商在改進(jìn)現(xiàn)有標(biāo)準(zhǔn),豐富新的功能。所以原生App在快速前進(jìn),同時(shí),Web也在縮小差距。
2、運(yùn)行效率
正方:原生APP速度更快。原生APP沒(méi)有瓶頸,而且可以直接調(diào)用GPU加速、使用多線程。
反方:現(xiàn)如今Web的速度已經(jīng)很快,而且多數(shù)應(yīng)用不需要這么快的速度。
這種說(shuō)法有點(diǎn)落伍了。Chrome發(fā)布之時(shí)帶來(lái)的Javascript V8,給Web訪問(wèn)速度帶來(lái)質(zhì)的飛躍。而現(xiàn)在,計(jì)算速度變得更快了。
圖片處理引擎已經(jīng)使用Web來(lái)加速。現(xiàn)在硬件加速也已經(jīng)開始。讓我們看看用上硬件加速的Canvas的效果:


如果要開發(fā)3D游戲,或許速度還不夠,但對(duì)于普通用戶來(lái)說(shuō),新聞、郵件、時(shí)間管理、社交網(wǎng)絡(luò),這些用Web就已經(jīng)足夠。另外,越來(lái)越多的框架結(jié)合WebGL,可以發(fā)揮OpenGL的優(yōu)勢(shì)了。
3、開發(fā)感受
正方:原生APP易于開發(fā)。原生APP使用強(qiáng)壯的程序語(yǔ)言(Java, Objective C, C++),適合編寫復(fù)雜的程序,API豐富,在桌面環(huán)境可以方便的用模擬器進(jìn)行測(cè)試。而Web程序的Runtime和亂七八糟的各路瀏覽器讓人頭疼不已。
反方:一般來(lái)說(shuō)WEB更簡(jiǎn)單一些,特別是需要兼容不同設(shè)備的時(shí)候。WEB最初的功能只限于文檔展示,而不是程序應(yīng)用。更何況Web不只是靜止的,HTML5,CSS3都給開發(fā)者極大幫助。雖然你喜歡C++,Java, Javascript,但是現(xiàn)在沒(méi)人能否認(rèn)Javascript也和前者站在同一擂臺(tái)上。
瀏覽器/Runtime的互不兼容(碎片化),APP也存在同樣的情況。用Java寫了Android App,然后又要面對(duì)iOS的Objective C。此外還有WebOS, BlackBerry,Windows Mobile等。如果能寫一個(gè)程序,馬上能在所有平臺(tái)上運(yùn)行,這該多么方便啊。當(dāng)然,這只是一個(gè)理想。要是想讓程序在每個(gè)平臺(tái)都能正常的運(yùn)行,就要做不少調(diào)試和妥協(xié)。這對(duì)很多原生APP也是一樣的。
所謂的Web碎片化,一直都是如此。但好消息是現(xiàn)在已經(jīng)有很多不錯(cuò)的解決辦法。比如 Modernizr 庫(kù)就可以幫你兼容一大批主流設(shè)備,不管是哪種系統(tǒng)平臺(tái)。有興趣的話,你可以看看2011年的Google IO演示。
4、用戶體驗(yàn)
正方:原生APP更契合原有平臺(tái)。操作感受的定義之一,就是用戶希望在你的程序里,用與系統(tǒng)連貫統(tǒng)一的方式來(lái)操作。不同的平臺(tái),都有一些約定俗成的習(xí)慣。你不能期望用一套統(tǒng)一的HTML***pp去滿足所有用戶。
此外,整個(gè)平臺(tái)的操作感受都由用平臺(tái)自有的軟件庫(kù)協(xié)調(diào)。直接調(diào)用平臺(tái)工具包就能直接免費(fèi)獲得完整支持。
反方:Web有自己的傳統(tǒng),但如果你想開發(fā)帶有原有平臺(tái)那種感覺的Web,同樣可以做出來(lái)。前面已經(jīng)講過(guò),WEB開發(fā)的方式,是先做一個(gè)大體適合所有平臺(tái)的版本,然后再針對(duì)不同平臺(tái)不斷改進(jìn)。當(dāng)這些改進(jìn)主要是針對(duì)功能時(shí),你可以選擇幾個(gè)你最關(guān)心的平臺(tái)做優(yōu)化。類似于瀏覽器檢測(cè)。我們經(jīng)常可以聽到技術(shù)論壇里的程序員們,抱怨有太多的瀏覽器版本要測(cè)試。不過(guò)如果你優(yōu)先關(guān)注兩三種主流平臺(tái),是值得為它們多花點(diǎn)時(shí)間做優(yōu)化的。
Web本來(lái)就有自己的操作感受。我們也可以說(shuō),不同的默認(rèn)瀏覽器以及運(yùn)行環(huán)境造就了獨(dú)特的"Web感受"。從更廣的角度看,這本身就是一種用戶公認(rèn)的方式。此外,還有很多成功的案例并不遵循移動(dòng)設(shè)備的原生操作習(xí)慣,但卻成功了。想想你最喜歡的手機(jī)游戲的界面?很多更傳統(tǒng)的App也是一樣,比如Twitter的客戶端。
5、傳播途徑
正方:原生App更容易接觸客戶。像Google Play和Apple Store這樣的App商店這幾年勢(shì)不可擋,推動(dòng)了整個(gè)移動(dòng)行業(yè)的發(fā)展。每個(gè)程序員都能在市場(chǎng)里發(fā)布自己的應(yīng)用。用戶都擠在市場(chǎng)里瀏覽、搜索、接受推薦。不僅如此,只要你的程序足夠好,現(xiàn)有用戶的打分會(huì)幫助你說(shuō)服更多新的客戶。
反方:其實(shí)Web才容易接觸到客戶。通過(guò)Web找到內(nèi)容,這是經(jīng)過(guò)論證的可靠途徑。利用URL,每一項(xiàng)發(fā)布的內(nèi)容都有一個(gè)獨(dú)立的地址,包括在網(wǎng)站上發(fā)布的應(yīng)用程序。搜索引擎幫助發(fā)現(xiàn)內(nèi)容,其他網(wǎng)站提供鏈接,還有一些類似應(yīng)用市場(chǎng)的分類網(wǎng)站。用戶還可以通過(guò)郵件、短信和社交網(wǎng)站分享你的鏈接。你的應(yīng)用鏈接可以直接在不同設(shè)備上直接打開。
6、收費(fèi)
正方:App收費(fèi),應(yīng)天意,順民生。“六歲孩子在午飯時(shí)做的App,3美刀一個(gè),已經(jīng)賣出幾百萬(wàn)”。最近常聽到類似的新聞。各種大小廠商也跟著蜂擁而至,等著圈錢。應(yīng)用商點(diǎn)幫開發(fā)商直接收費(fèi)。最簡(jiǎn)單的辦法,一次性收費(fèi)。也有在App里再另行收費(fèi)或者做訂閱收費(fèi)的,這都幫助開發(fā)商贏得長(zhǎng)期穩(wěn)定的回報(bào)。
此外,傳統(tǒng)網(wǎng)站的廣告、贊助,在App里也同樣適用。
反方:網(wǎng)站賺錢,從來(lái)都不是問(wèn)題。現(xiàn)在機(jī)會(huì)還會(huì)越來(lái)越多。Web能成為現(xiàn)在社會(huì)的推動(dòng)力,有能力用多種方式取得回報(bào),這是基本條件。雖然使用付費(fèi)并不普遍。但SaaS的模式已經(jīng)相當(dāng)普及了。成功案例包括 Google Apps系列產(chǎn)品,各類郵件的收費(fèi)版等等。另外,直接收費(fèi)并不是Web應(yīng)用的***模式。廣告、會(huì)員鏈接、贊助和其他產(chǎn)品服務(wù)的交叉推廣都是可選的模式。
看著能在應(yīng)用市場(chǎng)里直接賺錢而眼紅的Web開發(fā)者們,你們不能直接把你的URL發(fā)進(jìn)市場(chǎng),但是做一個(gè)瀏覽Web的 App的殼子來(lái)連接到自己的Web上怎么樣?現(xiàn)在市場(chǎng)中已經(jīng)有成百上千的App正在這樣做。有些包裝的很好,以至于你甚至都察覺不到它是一個(gè)Web程序。
以后應(yīng)用市場(chǎng)會(huì)直接支持Web程序嗎?這個(gè)現(xiàn)在還不好說(shuō),但Google已經(jīng)建建立了Chrome Web Store。雖然還只能從桌面電腦放問(wèn),但這已經(jīng)挑起了瀏覽器廠商的興趣。
結(jié)論
現(xiàn)在還看不出有完勝的一方。有些應(yīng)用適合做App,有一些適合用HTML5。以目前的情況來(lái)看,原生APP肯定是一個(gè)很重要的方向。上面提到的混合式開發(fā),可能是一個(gè)不錯(cuò)的妥協(xié)方案。能用Web的時(shí)候用App調(diào)用Web,Web實(shí)現(xiàn)不了的功能再用App開發(fā)。
如果你選擇Web方式,就要在Web標(biāo)準(zhǔn)和不斷的改進(jìn)上用心。Web技術(shù)本身的優(yōu)點(diǎn)就是能兼容大批不同的操作系統(tǒng)和設(shè)備。
原文鏈接:HTML5 VS NATIVE:THE MOBILE APP DEBATE
【編輯推薦】

























