大量新生移動設(shè)備的興起,改變了互聯(lián)網(wǎng)的未來。在技術(shù)的發(fā)展上,HTML5會取代App應(yīng)用嗎?或者說能夠在多大程度上取代呢?在HTML5規(guī)范中,已經(jīng)加入了相機(jī)、磁力羅盤、GPS信息的支持。很多新興瀏覽器也已經(jīng)開始支持這些新特性。能否用一個統(tǒng)一的HTML5來替代android和ios并行開發(fā)的雙重成本呢?以下譯自Michael Mahemoff的一篇文章,詳細(xì)分析了HTML5能否取代Android和iOS應(yīng)用程序。
介紹
移動應(yīng)用程序(App)和HTML5都是目前最火的技術(shù),二者之間也有不少重疊之處。在移動設(shè)備瀏覽器里運(yùn)行的html5的web頁面,也可以重新打包成不同平臺上運(yùn)行的app。目前很多瀏覽器都有很好的跨平臺支持,(譯注:firefox居然可以在android中使用和windows下同樣的瀏覽器內(nèi)核),HTML5的web方案,對開發(fā)者來說更為方便。完成一次,即可多平臺使用。但這確實(shí)可行嗎?仍然有許多必要原因,使得開發(fā)者選擇了app開發(fā)。很明顯,很多人已經(jīng)在這么做了。本文將詳細(xì)分析兩種方案的優(yōu)劣。
功能豐富
正方:App里可以開發(fā)出更豐富的功能
我們把移動功能分成兩類。程序本身和程序與系統(tǒng)的結(jié)合。比如android里,加入widget圖標(biāo)或者通知提醒之類的。App對這兩者都沒問題。不用多說,這是肯定的。
反方:APP是挺強(qiáng),但Web也正在迎頭跟進(jìn)
確實(shí)很多原生app實(shí)現(xiàn)的功能是HTML5望塵莫及的。不管你的web做的再牛,如果停留在一個沒有攝像頭支持的沙盒中,很多場合還是玩不轉(zhuǎn)。幸運(yùn)的是,現(xiàn)在沒有這樣的沙盒限制了。如果你需要你的web照相片,可以做一個負(fù)責(zé)照像的app,再把你的web打包進(jìn)這個應(yīng)用里面。開源的PhoneGap框架是這么干的。這樣widget,手機(jī)提醒也都沒問題了。
但這種混合開發(fā)的問題在于,增加了復(fù)雜性,而且不象傳統(tǒng)web那樣可以直接在瀏覽器里運(yùn)行。這個問題短時間內(nèi)恐怕沒轍。好在現(xiàn)在網(wǎng)絡(luò)標(biāo)準(zhǔn)在不斷的高速擴(kuò)充,先進(jìn)的瀏覽器也在一直跟進(jìn)。Android 3.1已經(jīng)支持camera了。iOS瀏覽器也支持WebSocket和設(shè)備方向檢測了。
總得來說,移動設(shè)備在發(fā)展,而web也同樣在快速變化。桌面瀏覽器本身,有5家主要瀏覽器開發(fā)商在改進(jìn)現(xiàn)有標(biāo)準(zhǔn),豐富新的功能。所以原生App在快速前進(jìn),同時,web也在縮小差距。
運(yùn)行效率
正方:原生APP速度更快
原生APP沒有瓶頸,而且可以直接調(diào)用GPU加速、使用多線程。
反方:現(xiàn)如今Web已經(jīng)快多了,而且多數(shù)應(yīng)用也用不著那么快。
這說法有點(diǎn)落伍了。Chrome發(fā)布之時帶來的Javascript V8,給Web速度帶來的飛躍。而現(xiàn)在,計算速度變得更快了:
圖片處理引擎已經(jīng)使用web加速。現(xiàn)在硬件加速也已經(jīng)開始應(yīng)用了。看看用上硬件加速的canvas(圖表來源)
要開發(fā)3D游戲的就不用抬杠了,但對于平而來說,新聞、郵件、時間管理、社交網(wǎng)絡(luò),這些用Web都夠用了。試試Steve Souders的手機(jī)性能測試工具。 另外,越來越多的框架結(jié)合WebGL,可以發(fā)揮OpenGL的優(yōu)勢了。比如ImpactJS,幫助開發(fā)JS游戲。
開發(fā)感受
正方:原生APP好寫
原生APP使用強(qiáng)壯的程序語言(Java, Objective C, C++)。適合寫復(fù)雜程序,經(jīng)過歷史驗(yàn)證,API豐富。在桌面環(huán)境可以方便的用模擬器測試。而Web程序的runtimes和亂七八糟的各路瀏覽器讓人頭大。
反方:一般都是Web更簡單,特別是需要兼容不同設(shè)備的時候。
Web最初的功能只限于文檔展示,而不是程序應(yīng)用,貌似最近倆星期才有了JS。但有了JS后,web的世界馬上就不一樣了。更何況web不只是靜止的,HTML5,CSS3,EcmaScript Harmony(誰知道這是什么?)都給開發(fā)者極大幫助。你是喜歡C++,java, JavaScript,那你的個人愛好,也是基于你已經(jīng)攢下的代碼。但是現(xiàn)在沒人能否認(rèn)JavaScript也和前者站在同一擂臺上。
瀏覽器/runtime的互不兼容(碎片),反過來看做APP也是一樣。用Java寫了Android app,然后又要面對iOS的Objective C。如果能寫一個程序,馬上能在Android和iOS上運(yùn)行,多省事啊。這咱還沒提WebOS, BlackBerry,Windows Mobile呢。當(dāng)然,這是理論上的。要是想讓程序在每個平臺都跑得很漂亮,得做不少調(diào)試和妥協(xié)。這對很多原生APP也是一樣的。不同OS版本,不同的設(shè)備。。。
所謂的Web碎片化,一直都是如此。但好消息是現(xiàn)在已經(jīng)有很多不錯的解決辦法。Modernizr庫,用得好的話,可以幫你兼容一大批主流設(shè)備,不管是啥系統(tǒng),哪個牌子的?纯次覀2011年的Google IO演示。
用戶體驗(yàn)
正方:原生APP更切合原有平臺
操作感受的定義之一,就是用戶希望在你的程序里,用與系統(tǒng)連貫統(tǒng)一的方式來操作。不同的平臺,都有一些約定俗成的習(xí)慣。比如長按按鈕會有啥反應(yīng)。你不能指望用一套統(tǒng)一的HTML5 App去滿足所有用戶。
此外,整個平臺的操作感受都由用平臺自有的軟件庫協(xié)調(diào)。直接調(diào)用平臺工具包就能直接免費(fèi)獲得完整支持。
反方:我們Web有自己的傳統(tǒng),你要特想做原有平臺那種感覺的web,也一樣能做出來
前面說了,Web開發(fā)的方式,是先做一個大體適合所有平臺的版本,然后再針對不同平臺不斷改進(jìn)。當(dāng)這些改進(jìn)主要是針對功能時,你可以選擇幾個你最關(guān)心的平臺做優(yōu)化。類似于瀏覽器檢測。技術(shù)論壇里的悲催技術(shù)員們,經(jīng)常抱怨這事。太多不同的瀏覽器版本了。不過如果你優(yōu)先關(guān)注兩三種主流平臺,是值得為他們多花點(diǎn)時間做做優(yōu)化。
web本來就有自己的操作感受。我們也可以說,不同的默認(rèn)瀏覽器以及運(yùn)行環(huán)境造就了獨(dú)特的”Web感受”。從更廣的角度看,這本身就是一種用戶公認(rèn)的方式。此外,還有很多成功的案例并不遵循移動設(shè)備的原生操作習(xí)慣,人家也成功了。想想你最喜歡的手機(jī)游戲的界面?很多更傳統(tǒng)的app也是一樣,比如Twitter客戶端。
傳播途徑
正方:原生應(yīng)用更容易接觸客戶
象Google Play和Apple Store這樣的app發(fā)布機(jī)制這幾年勢不可擋,推動了整個移動行業(yè)。每個程序員都能在市場里發(fā)布自己的應(yīng)用。用戶都擠在市場里瀏覽,搜索,接受推薦。不僅如此,只要你的程序夠好,現(xiàn)有用戶的打分會幫助你說服更多新的客戶。
反方:其實(shí)web才容易接觸到客戶
通過web找到內(nèi)容,這是經(jīng)過論證的可靠途徑。利用URL,每一項發(fā)布的內(nèi)容都有一個獨(dú)立的地址,包括在網(wǎng)站上發(fā)布的應(yīng)用程序。搜索引擎幫助發(fā)現(xiàn)內(nèi)容,其他網(wǎng)站提供鏈接,還有一些類似應(yīng)用市場的分類網(wǎng)站。用戶還可以郵件、短信、在社交網(wǎng)站分享你的鏈接。你的應(yīng)用鏈接可以直接在不同設(shè)備上直接打開。
web上還沒有一個統(tǒng)一的評分系統(tǒng),但這個情況也在發(fā)生改變。往下看。。。
收費(fèi)
正方:App收費(fèi):應(yīng)天意,順民生
“六歲孩子午飯時做app,$3一個,賣出幾百萬”。最近常聽看到這樣的新聞。各種大小廠商也跟著蜂擁而至,等著圈錢。應(yīng)用商點(diǎn)幫開發(fā)商直接收費(fèi)。最簡單的辦法,一次性收費(fèi)。也有在app里再另行收費(fèi)或者做訂閱收費(fèi)的,這幫助開發(fā)商贏得長期穩(wěn)定的回報。
此外,傳統(tǒng)網(wǎng)站的廣告、贊助,在app里也同樣適用。
反方:網(wǎng)站賺錢,從來都不是問題。現(xiàn)在機(jī)會還越來越多
Web能成為現(xiàn)在社會的推動力,有能力用多種方式取得回報,這是基本條件。雖然使用付費(fèi)并不普遍。但SaaS的模式已經(jīng)相當(dāng)普及了。成功案例包括Google Apps,37Signals的系列產(chǎn)品,各類郵件的收費(fèi)版。另外,直接收費(fèi)并不是web應(yīng)用的唯一模式。廣告、會員鏈接,贊助,其他產(chǎn)品服務(wù)的交叉推廣都是可選的模式。
看著能在應(yīng)用市場里直接賺錢而眼紅的Web開發(fā)商們,你們不能直接把你的URL發(fā)進(jìn)市場,但是做一個瀏覽web的app的殼子來連到自己的web上怎么樣?現(xiàn)在市場中如果不說數(shù)以千計,至少也有上百的app這么干了。有些包裝的好的,你甚至察覺不到他是一個web程序。
以后應(yīng)用市場會直接支持web程序嗎?這個現(xiàn)在還不好說,但去年Google已經(jīng)建了個Chrome web store。雖然還只能從桌面電腦放問,但這已經(jīng)挑起了瀏覽器廠商的興趣,F(xiàn)在還只是個初步概念,但看起來挺有前途。
結(jié)論
現(xiàn)在還看不出完勝的一方。有些應(yīng)用適合做app,有一些適合用html5。目前的情況,原生APP肯定是一個很重要的選擇。上面提到的混合式開發(fā),可能是一個不錯的妥協(xié)方案。能用web的時候用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è)備。消極的看,你也可以這是碎片,但web就是一切通吃。
英文原文:HTML5 VS NATIVE: THE MOBILE APP DEBATE
中文翻譯:unicom-china