HTML5第一階段: Web增強(qiáng)與破壟斷
自HTML5誕生以來(lái),一共經(jīng)歷了兩個(gè)階段,分別是Web增強(qiáng)和移動(dòng)互聯(lián)網(wǎng)。我們先從Web 增強(qiáng)說(shuō)起。
web體驗(yàn)的豐富增強(qiáng)主要表現(xiàn)在:1. webapp,比如gmail;2. 流媒體;3. 游戲。我們就這3個(gè)方面來(lái)講HTML5做了什么。
1. webApp
HTML5新增了離線存儲(chǔ)、更豐富的表單(比如Input type=date)、js線程、socket王樂(lè)、標(biāo)準(zhǔn)擴(kuò)展embed、以及很多css3新語(yǔ)法…
2. 流媒體
HTML5新增了audio、video
3. 游戲
HTML5新增了canvas、webgl
當(dāng)然還有Google努力在HTML5中推進(jìn)Header和Section等標(biāo)簽,以利于搜索引擎分析,這些不多述。
HTML5補(bǔ)充流媒體和游戲能力后,加上蘋果強(qiáng)勢(shì)拒絕在iOS上引入Flash,成功的遏制了Flash的發(fā)展,然后就該遏制IE私有語(yǔ)法了。
在HTML5標(biāo)準(zhǔn)的升級(jí)過(guò)程中,蘋果和Google同時(shí)也看到了瀏覽器市場(chǎng)重新洗牌的機(jī)會(huì),他們一方面參與HTML5的規(guī)范,一邊在瀏覽器產(chǎn)品上發(fā)力。Apple首先開始大力發(fā)展Safari,建立WebKit開源項(xiàng)目,Mac、iOS、Windows多平臺(tái)齊發(fā)力;Google起初是贊助Mozilla開發(fā)Firefox,后來(lái)自己開發(fā)了v8引擎,合并WebKit,于2008年正式推出Chrome。“IE的私有規(guī)范+Flash不是標(biāo)準(zhǔn),我們才是標(biāo)準(zhǔn)”這樣的口號(hào)在新一代瀏覽器大戰(zhàn)中打響,IE瞬間成為千夫所指的壟斷代表,甚至成了阻礙Web發(fā)展的罪人(當(dāng)時(shí)IE6已數(shù)年未更新,并且絲毫不懼Firefox的發(fā)展)。
偏偏微軟此時(shí)也出了暈招,推出了一系列即不完整支持規(guī)范又互相不兼容的IE7、8、9、10,徹底失去了開發(fā)者的心。
Adobe的Flash被遏制,與Web霸主的位子擦肩而過(guò);IE的私有標(biāo)準(zhǔn)被遏制,并且造成IE市場(chǎng)份額不停下滑,直到IE最新的移動(dòng)版本反過(guò)來(lái)開始支持WebKit私有語(yǔ)法,真是令人唏噓。不知道HTML6是不是該打倒WebKit壟斷了。
HTML5第二階段: 移動(dòng)互聯(lián)網(wǎng)
隨著Chrome和Safari的高歌猛進(jìn),以及IE+Flash的衰落,HTML5告一段落,進(jìn)入了下一個(gè)時(shí)代——移動(dòng)互聯(lián)網(wǎng)。HTML5的跨平臺(tái)優(yōu)勢(shì)在移動(dòng)互聯(lián)網(wǎng)時(shí)代被進(jìn)一步凸顯。HTML5是唯一一個(gè)通吃PC、Mac、iPhone、iPad、Android、Windows Phone等主流平臺(tái)的跨平臺(tái)語(yǔ)言。Java和Flash都曾夢(mèng)想這個(gè)位置,但夢(mèng)斷于iOS。此時(shí)人們紛紛開始研究基于HTML5開發(fā)跨平臺(tái)手機(jī)應(yīng)用。很多人當(dāng)時(shí)認(rèn)為,原生應(yīng)用只是過(guò)渡,就像當(dāng)年從C/S結(jié)構(gòu)轉(zhuǎn)變?yōu)锽/S結(jié)構(gòu)一樣。而且學(xué)習(xí)Objective-C和Java很費(fèi)勁,我既然會(huì)網(wǎng)頁(yè)開發(fā),為何不試試HTML5。
W3C此時(shí)成立了Device API工作組,為HTML5擴(kuò)展了Camera、GPS等手機(jī)特有的API,然而麻煩的是,移動(dòng)互聯(lián)網(wǎng)初期的迭代太快了,手機(jī)OS在不停的擴(kuò)展硬件API,陀螺儀、距離感應(yīng)器、氣壓計(jì)……每年手機(jī)OS都有大版本更新。而W3C作為一個(gè)數(shù)百家會(huì)員單位共同決策的組織,從標(biāo)準(zhǔn)草案的提出到達(dá)成一致是非常復(fù)雜的過(guò)程,跟不上移動(dòng)互聯(lián)網(wǎng)初期的快速迭代。
PhoneGap的出現(xiàn),給開發(fā)者打開了一扇窗。很多人期待PhoneGap不停擴(kuò)展API,來(lái)補(bǔ)充瀏覽器的不足。Adobe看到PhoneGap仿佛看到了重振江湖地位的希望,但在Adobe收購(gòu)PhoneGap后,又發(fā)現(xiàn)這個(gè)東西可商用性不足,而且開源使得Adobe無(wú)法像Flash那樣獲取商業(yè)利益,于是就把PhoneGap捐給了Apache,改名為Cordova。
因?yàn)楦鞣N原因,Cordova的定位最終沒(méi)有成為瀏覽器的強(qiáng)化,而走向了混合式開發(fā)。基于當(dāng)時(shí)的背景,他們認(rèn)為原生是不可替代的,“原生+HTML5”的混合模式更有意義。所以現(xiàn)在Cordova的使用模型是“原生工程師+HTML5工程師”一起協(xié)作完成App。
這時(shí)Facebook加入了W3C,牽頭成立了Mobile Web工作組。Facebook是混Web圈的,并且在手機(jī)OS上沒(méi)有自己的領(lǐng)地,他不喜歡被蘋果和Google掌控的原生應(yīng)用生態(tài)系統(tǒng)。Mobile Web這個(gè)工作組的重要目標(biāo)就是讓HTML5開發(fā)的網(wǎng)頁(yè)應(yīng)用達(dá)到原生應(yīng)用的體驗(yàn)。然而,事與愿違,它不努力也就算了,結(jié)果是努力了卻失敗了。2012年,F(xiàn)acebook放棄了HTML5的新聞充斥了全世界的IT媒體,HTML5瞬間被打入冷宮。
Facebook為何放棄HTML5?核心是當(dāng)時(shí)基于HTML5真的做不出好的移動(dòng)App。對(duì)比Twritter等競(jìng)爭(zhēng)對(duì)手的原生App,F(xiàn)acebook的HTML5版本實(shí)在無(wú)法讓用戶滿意。比如Push功能,到現(xiàn)在HTML5的推送和原生的推送體驗(yàn)差距依然巨大,更不用說(shuō)HTML5應(yīng)用的頁(yè)面切換白屏、下拉刷新/側(cè)滑菜單不流暢等眾多問(wèn)題?粗こ處熭p松實(shí)現(xiàn)搖一搖、二維碼、語(yǔ)音輸入、分享到朋友圈等功能,更是讓HTML5工程師感覺(jué)自己站錯(cuò)了隊(duì)。
即使Facebook不喜歡被控制,也不能拿被用戶拋棄來(lái)冒險(xiǎn)。而且Facebook并沒(méi)有掌握關(guān)鍵點(diǎn)—手機(jī)瀏覽器內(nèi)核。如果瀏覽器不跟上,徒然定一堆標(biāo)準(zhǔn)草案落不了地。
而瀏覽器在手機(jī)上的表現(xiàn)是什么呢?先看Google,Chrome性能雖高,但Android上的瀏覽器卻并非Chrome,而是WebKit改出來(lái)的一個(gè)蹩腳的Android瀏覽器;再看蘋果,iOS上不允許其他瀏覽器引擎上架App Store,而且其他使用Safari引擎的應(yīng)用也無(wú)法調(diào)用蘋果自己的JavaScript加速引擎Nitro。結(jié)果是蘋果和Google不但不在瀏覽器上積極實(shí)現(xiàn)HTML5關(guān)于移動(dòng)App所需的規(guī)范,反而對(duì)HTML5做出種種限制。
不管是當(dāng)時(shí)硬件能力不足,還是手機(jī)OS廠商的故意限制,總之結(jié)果就是:在移動(dòng)互聯(lián)網(wǎng)的初期,一定是原生應(yīng)用生態(tài)系統(tǒng)的天下,iOS和Android首先自己的地盤穩(wěn)固后,產(chǎn)業(yè)才會(huì)向下個(gè)階段升級(jí)。
Facebook也好,PhoneGap也好,想在移動(dòng)互聯(lián)網(wǎng)初期就分一杯羹是分不到的,但堅(jiān)持下來(lái),機(jī)會(huì)往往會(huì)出現(xiàn)。
HTML5這回真的來(lái)了
終于,在2014年10月底,W3C宣布HTML5正式定稿。這個(gè)時(shí)間,不晚不早,硬件性能更強(qiáng)、手機(jī)OS迭代速度下降。
隨著HTML5標(biāo)準(zhǔn)定稿,一切紛爭(zhēng)將告一段落,現(xiàn)在,屬于HTML5的時(shí)代到來(lái)了。
有人說(shuō),光標(biāo)準(zhǔn)定稿沒(méi)用啊,配套起來(lái)了嗎?HTML5做的應(yīng)用究竟能否匹敵原生App?答案是,HTML5不但可以匹敵原生App,甚至它天然的很多特性超越了原生App。
我們先談?wù)凥TML5原來(lái)不如原生應(yīng)用的地方,業(yè)內(nèi)俗稱HTML5有“性工能”障礙。即HTML5性能不如原生、開發(fā)工具不如原生、能力調(diào)用不如原生。
這幾個(gè)問(wèn)題導(dǎo)致開發(fā)者無(wú)法使用HTML5做出與原生一樣的App。然而,不管是硬件升級(jí)還是OS廠商策略變化,以及相關(guān)軟件技術(shù)的成熟,已解決了HTML5的“性工能”障礙。
1. 硬件升級(jí)
2011年,iPhone 4s的CPU是A5,現(xiàn)在iPhone 6是A8,按蘋果的歷次發(fā)布會(huì)的說(shuō)法,速度共提升了7.5倍。這3年間7.5倍的速度提升,抹平了太多HTML5的性能問(wèn)題。
2. 蘋果、Google的策略變化
Google在2013年底發(fā)布的Android 4.4,內(nèi)置的Webview不再是蹩腳的Android WebKit瀏覽器,而是Chromium,性能大幅提升。從最新的Android5.0開始,Webview可以通過(guò)Google Play Store實(shí)時(shí)更新,和Chrome的升級(jí)保持一致,用戶就可以不刷機(jī)享受到最新的瀏覽器引擎;再看Apple方面,2012年iPhone 5發(fā)布后,HTML5在iOS上的表現(xiàn)已令人滿意,Safari獨(dú)家的JavaScript加速引擎Nitro不再那么重要,不過(guò)在iOS 8發(fā)布后,蘋果還是很識(shí)趣地取消了三方程序調(diào)用Nitro的限制,現(xiàn)在任意瀏覽器或應(yīng)用調(diào)用iOS的UIWebview都可以利用Nitro加速,這樣在前端使用JS做大型運(yùn)算也成為可能。兩大手機(jī)操作系統(tǒng)霸主和瀏覽器巨頭的態(tài)度發(fā)生了變化,使得HTML5在手機(jī)上的發(fā)展不再受限,而且這個(gè)變化不可逆只能繼續(xù)向前,這種變化勢(shì)必會(huì)產(chǎn)生深遠(yuǎn)的影響。
3. 軟件技術(shù)的成熟
PhoneGap的發(fā)展雖然放緩了,但其他產(chǎn)品技術(shù)卻成熟了。2014年的iWeb大會(huì)上,眾多廠商的產(chǎn)品提供了面向開發(fā)者免費(fèi)或開源的HTML5性工能障礙的解決方案。
(注:編者作為從業(yè)人員,也會(huì)在分析各種方案時(shí)提到我們公司的方案,但編者會(huì)客觀不夸張的陳述方案,而且該方案是純免費(fèi)的,沒(méi)有商業(yè)銷售嫌疑。)
DCloud公司在iWeb大會(huì)上發(fā)布了系統(tǒng)的HTML5“性工能缺失”的解決方案,包括:
a) 性能:提升HTML5性能的手機(jī)端引擎,讓側(cè)滑菜單、下拉刷新等動(dòng)態(tài)交互卡頓的問(wèn)題得以解決;
b) 工具:HTML5開發(fā)IDE產(chǎn)品HBuilder, 超快的編程利器;
c) 能力:把40萬(wàn)原生API封裝成JavaScript對(duì)象,以解決HTML5能力不足問(wèn)題的Native.js技術(shù);
d) 最接近原生體驗(yàn)的高性能框架:MUI框架,體積只有幾十K,加載、運(yùn)行遠(yuǎn)快于一般框架。
基于該方案開發(fā)的HTML5應(yīng)用完全可以達(dá)到原生App的功能和體驗(yàn)。
使用HBuilder開發(fā)HTML5應(yīng)用
英特爾公司發(fā)布了Crosswalk引擎,可以讓Android 4.0-4.3的手機(jī)上的應(yīng)用打包Chromium引擎而不是Android WebKit。畢竟目前市場(chǎng)上存在大量Android 4.0-4.3的手機(jī),同時(shí)統(tǒng)一的webview也避免了兼容性的煩惱。
在專業(yè)方向上很多公司也做出了不錯(cuò)的成績(jī)。觸控的Cocos2d-html5、Egret runtime和Ludei CocoonJS強(qiáng)化了Canvas的表現(xiàn),讓HTML5游戲體驗(yàn)更好;UC、獵豹等手機(jī)瀏覽器都強(qiáng)化了音視頻播放的表現(xiàn)。
不管是硬件升級(jí)、軟件成熟,還是操作系統(tǒng)廠商策略變化,都在強(qiáng)力推動(dòng)HTML5的爆發(fā)。
不過(guò)要注意,我說(shuō)的HTML5爆發(fā),不是指手機(jī)瀏覽器會(huì)替代桌面成為應(yīng)用入口。有人說(shuō)HTML5不好,因?yàn)橛脩粲憛挻蜷_瀏覽器輸入U(xiǎn)RL的過(guò)程。我想說(shuō)這種想法是對(duì)HTML5的片面理解。HTML5!=傳統(tǒng)瀏覽器,雖然編程語(yǔ)言還是HTML、Javascript、CSS,但發(fā)行方式絕不是傳統(tǒng)網(wǎng)站那么簡(jiǎn)單。HTML5應(yīng)用的入口,反而很少是啟動(dòng)瀏覽器輸入U(xiǎn)RL,它可以是存在于手機(jī)桌面的圖標(biāo)、也可以來(lái)自超級(jí)App(如微信朋友圈)、以及搜索引擎、應(yīng)用市場(chǎng)、廣告聯(lián)盟……到處都是它的入口。它的入口,比原生App更多。
原生App的顛覆
HTML5的“性工能”障礙得到解決,可以接近原生App的效果,所以它就可以替代原生App嗎?很多人認(rèn)為,即使HTML5會(huì)發(fā)展的比現(xiàn)在好,也將是與原生App各占一部分市場(chǎng)的格局,要求不高的長(zhǎng)尾應(yīng)用會(huì)使用HTML5,而主流應(yīng)用仍是原生App的天下。
但我認(rèn)為這樣的想法很危險(xiǎn),就像Apple成立前,HP的高層告訴沃茲:誰(shuí)會(huì)在家里擺一臺(tái)電腦呢?未來(lái)HTML5肯定會(huì)顛覆原生App。
結(jié)語(yǔ)
其實(shí)未來(lái)如何發(fā)展是沒(méi)人能準(zhǔn)確預(yù)測(cè)的,變量非常多。但我想讓用戶和開發(fā)者都更方便的趨勢(shì)是不會(huì)錯(cuò)的。
我在這里拋磚引玉,歡迎大家一起討論,但我希望我們能理智的分析,在爭(zhēng)議中提煉真知,而不是未經(jīng)思考或驗(yàn)證僅因?yàn)楹ε卤活嵏捕鵁o(wú)謂的亂噴。也祝愿大家在HTML5的浪潮中,把握住機(jī)遇,享受下坐在風(fēng)口當(dāng)豬的感覺(jué)。