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