2007年W3C(全球資訊網協會)接受HTML5,直至2014年10月底,這個長達八年的規範終於正式發表。
過去這些年,HTML5顛覆了PC網路的格局,優化了行動網路的體驗,接下來,HTML5將顛覆原生App世界。
這聽起來有點危言聳聽,但若認真分析HTML5的發展史,你會發現,這個世界的發展趨勢確實就是這樣。熟知歷史才能預知未來,先讓我們來看看HTML5為什麼誕生、這8年是怎麼過來的。
一、 HTML5的誕生
自W3C於1999年發布HTML4後,Web世界快速發展,一片繁榮。人們一度認為HTML標準不需要升級了。一些致力於發展Web App的公司另行成立了WHATWG組織,直到2007年,W3C從WHATWG接手相關工作,重新開始發展HTML5。
HTML5的發展史,有用戶的需求在推動,有技術開發者的需求在推動,更有巨大的商業利益在推動。
在網路時代早期,對用戶而言,能打開瀏覽器接入到網路世界就是一個神奇的事情,但網路發展到2005年前後,開始出現下一個變化,就是寬頻網路。
隨著寬頻的普及和電腦性能的增強,人們不再滿足於單純的通過網路看新聞、收發郵件,消耗更高頻寬的娛樂產品開始出現,就是串流影音和網頁遊戲。其實影音和遊戲是古老的需求,在網路不普及的時候,需求的滿足方式是離線傳輸的VCD和遊戲光碟;後來網路逐漸普及,人們更改了使用方式,通過下載軟體+本地媒體播放器來看影音,下載占用空間較大的端遊玩遊戲。
但是對消費者體驗更好的新方式還是出現並顛覆了以前的一切,那就是串流媒體和網頁遊戲。YouTube等公司把握住潮流迅速崛起,各種頁遊公司也如雨後春筍。
但是HTML標準沒有把握住產業的變化及時演進,瀏覽器產品也未升級,這塊新需求被瀏覽器插件滿足了,那就是Flash。這個部署在億萬瀏覽器裡的商業插件儼然成為事實標準。2005年Adobe巨資收購Macromedia,把Flash收歸旗下,緊接著大幅推廣FLV流媒體和action script語言,很明顯這樁收購可以列為IT併購的經典案例,FLV流媒體和Flash遊戲風靡網路,Adobe在新的產業升級中攫取了大量的利潤。
除了Flash這個商業產品成為了事實標準,W3C還面臨一個尷尬,就是另一個私有擴展協議的製造者—IE。IE當時在桌面瀏覽器佔有壟斷地位,並且擴展了大量的IE Only語法,開發者完全不知道這些語言是誰定義的。整個web世界,就被兩家公司微軟+Adobe綁架了。
很多IT巨頭都坐不住了,尤其是蘋果和Google。PC操作系統的世界難有突破,Web瀏覽器被蘋果寄予厚望,而且第一代iPhone只支持網頁,那時還沒有Appstore,Safari是賈伯斯非常看重的產品;新貴Google雖然大量贊助Mozilla,但並未對IE的地位產生實質影響,收購了YouTube後發現底層被Adobe控制,也是非常難過,而且Google每年給IE的搜尋框和Adoble FLV繳納的費用真不是小數目。
既然大家都是W3C的主席單位,好吧,我們重新開始做HTML5吧。
是的,HTML5其實就是這麼誕生的。那是2007年,IE和Flash由盛轉衰的轉折點。
二、 HTML5第一階段: Web 增強與破壟斷
自HTML5誕生以來,一共經歷了兩個階段,分別是Web增強和行動網路。我們先從Web 增強說起。
web體驗的豐富增強主要表現在:
1.webApp
HTML5新增了離線儲存、更豐富的表單(比如Input type=date)、js線程、socket王樂、標準擴展embed、以及很多css3新語法…
2.串流媒體
HTML5新增了audio、video
3.遊戲
HTML5新增了canvas、webgl
當然還有Google努力在HTML5中推進Header和Section等標籤,以利於搜尋引擎分析,這些不多述。
HTML5補充串流媒體和遊戲能力後,加上蘋果強勢拒絕在iOS上引入Flash,成功的遏制了Flash的發展,然後就該遏制IE私有語法了。
在HTML5標準的升級過程中,蘋果和Google同時也看到了瀏覽器市場重新洗牌的機會,他們一方面參與HTML5的規範,一邊在瀏覽器產品上發力。Apple首先開始大力發展Safari,建立WebKit開源項目,Mac、iOS、Windows多平台齊發力;Google起初是贊助Mozilla開發Firefox,後來自己開發了v8引擎,合併WebKit,於2008年正式推出Chrome。「IE的私有規範+Flash不是標準,我們才是標準」這樣的口號在新一代瀏覽器大戰中打響,IE瞬間成為千夫所指的壟斷代表,甚至成了阻礙Web發展的罪人(當時IE6已數年未更新,並且絲毫不懼Firefox的發展)。
偏偏微軟此時也出了遜招,推出了一系列即不完整支持規範又互相不兼容的IE7、8、9、10,徹底失去了開發者的心。
Adobe的Flash被遏制,與Web霸主的位子擦肩而過;IE的私有標準被遏制,並且造成IE市占率不停下滑,直到IE最新的行動版本反過來開始支持WebKit私有語法,真是令人唏噓。不知道HTML6是不是該打倒WebKit壟斷了。
三、 HTML5第二階段: 行動網路
隨著Chrome和Safari的高調進攻,以及IE+Flash的衰落,HTML5告一段落,進入了下一個時代——行動網路。HTML5的跨平台優勢在行動網路時代被進一步凸顯。HTML5是唯一一個通吃PC、Mac、iPhone、iPad、Android、Windows Phone等主流平台的跨平台語言。Java和Flash都曾夢想這個位置,但夢斷於iOS。此時人們紛紛開始研究基於HTML5開發跨平台手機應用。很多人當時認為,原生應用只是過渡,就像當年從C/S結構轉變為B/S結構一樣。而且學習Objective-C和Java很費勁,我既然會網頁開發,為何不試試HTML5。
W3C此時成立了Device API工作組,為HTML5擴展了Camera、GPS等手機特有的API,然而麻煩的是,行動網路初期的迭代太快了,手機OS在不停的擴展硬體API,陀螺儀、距離感應器、氣壓計。。。每年手機OS都有大版本更新。而W3C作為一個數百家會員單位共同決策的組織,從標準草案的提出到達成一致是非常複雜的過程,跟不上行動網路初期的快速迭代。
PhoneGap的出現,給開發者打開了一扇窗。很多人期待PhoneGap不停擴展API,來補充瀏覽器的不足。Adobe看到PhoneGap彷彿看到了重振江湖地位的希望,但在Adobe收購PhoneGap後,又發現這個東西可商用性不足,而且開源使得Adobe無法像Flash那樣獲取商業利益,於是就把PhoneGap捐給了Apache ,改名為Cordova。
因為各種原因,Cordova的定位最終沒有成為瀏覽器的強化,而走向了混合式開發。基於當時的背景,他們認為原生是不可替代的,「原生+HTML5」的混合模式更有意義。所以現在Cordova的使用模型是「原生工程師+HTML5工程師」一起協作完成App。
這時Facebook加入了W3C,牽頭成立了Mobile Web工作組。Facebook是混Web圈的,並且在手機OS上沒有自己的領地,他不喜歡被蘋果和Google掌控的原生應用生態系統。Mobile Web這個工作組的重要目標就是讓HTML5開發的網頁應用達到原生應用的體驗。然而,事與願違,它不努力也就算了,結果是努力了卻失敗了。2012年,Facebook放棄了HTML5的新聞充斥了全世界的IT媒體,HTML5瞬間被打入冷宮。
Facebook為何放棄HTML5?核心是當時基於HTML5真的做不出好的行動App。對比Twritter等競爭對手的原生App,Facebook的HTML5版本實在無法讓用戶滿意。比如Push功能,到現在HTML5的推送和原生的推送體驗差距依然巨大,更不用說HTML5應用的頁面切換白線條、下拉刷新/側滑菜單不流暢等眾多問題。看著原生工程師輕鬆實現搖一搖、QR Code、語音輸入、分享到朋友圈等功能,更是讓HTML5工程師感覺自己站錯邊。
即使Facebook不喜歡被控制,也不能拿被用戶拋棄來冒險。而且Facebook並沒有掌握關鍵點—手機瀏覽器內核。如果瀏覽器不跟上,徒然訂一堆標準草案落不了地。
而瀏覽器在手機上的表現是什麼呢?先看Google,Chrome性能雖高,但Android上的瀏覽器卻並非Chrome,而是WebKit改出來的一個蹩腳的Android瀏覽器;再看蘋果,iOS上不允許其他瀏覽器引擎上架App Store,而且其他使用Safari引擎的應用也無法調用蘋果自己的JavaScript加速引擎Nitro。結果是蘋果和Google不但不在瀏覽器上積極實現HTML5關於行動App所需的規範,反而對HTML5做出種種限制。
不管是當時硬體能力不足,還是手機OS廠商的故意限制,總之結果就是:在行動網路的初期,一定是原生應用生態系統的天下,iOS和Android首先自己的地盤穩固後,產業才會向下個階段升級。
Facebook也好,PhoneGap也好,想在行動網路初期就分一杯羹是沒辦法的,但堅持下來,機會往往會出現。