咱們第一次談論 HTML5 要改變世界大概是由於喬布斯,他堅持在 iOS 上不兼容 Flash,在 Adobe 統治多媒體開發的那個年代,這須要付出極大的勇氣。這麼多年過去了,雖然全部人都在談論 HTML5,可是大部分人甚至都忘了它仍是一個仍在完善中的體系。css
2007 年 W3C(萬維網聯盟)立項 HTML5,直至 2014 年 10 月底,這個長達八年的規範終於正式定稿。接下來,HTML5 將真正開始顛覆原生(Native) App 世界。雖然這種危言聳聽已經讓人有點厭煩。可是若是回顧 HTML 這些年走過的路,你就不會再懷疑它的能量。html
1、HTML5的誕生html5
自 W3C 於 1999 年發佈 HTML4 後,Web 世界快速發展,一片繁榮。人們一度認爲 HTML 標準不須要升級了。一些致力於發展 Web App 的公司另行成立了 WHATWG 組織,直到 2007 年,W3C 從 WHATWG 接手相關工做,從新開始發展 HTML5。css3
HTML5 的發展史,有用戶的需求在推進,有技術開發者的需求在推進,更有巨大的商業利益在推進。在互聯網的早期,對用戶而言,能打開瀏覽器接入到互聯網世界就是一個神奇的事情,但互聯網發展到 2005 年先後,開始出現下一個變化,就是寬帶互聯。web
隨着寬帶的普及和電腦性能的加強,人們再也不知足於單純的經過互聯網看新聞、收發郵件,消耗更高帶寬的娛樂產品開始出現,就是流視頻和網頁遊戲。其實視頻和遊戲是古老的需求,在互聯網不普及的時候,需求的知足方式是離線傳輸的 VCD 和遊戲光盤;後來互聯網逐漸普及,人們更改了使用方式,經過下載軟件 + 本地媒體播放器來看視頻,下載體積較大的端遊玩遊戲。編程
可是對消費者體驗更好的新方式仍是出現並顛覆了之前的一切,那就是流媒體和網頁遊戲。Youtube 等公司把握住潮流飛速崛起,各類頁遊公司也如雨後春筍。canvas
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 瀏覽器被蘋果寄予厚望;新貴 Google 雖然大量贊助 Mozilla,但並未對 IE 的地位產生實質影響,收購了 YouTube 後發現命脈在 Adobe 手裏,也是很是難過,並且 Google 每一年給 IE 的搜索框和 Adoble FLV 繳納的費用真不是小數目。微信
既然你們都是 W3C 的主席單位,好吧,咱們從新開始作 HTML5 吧。是的,HTML5 其實就是這麼誕生的。
2、HTML5第一階段: Web 加強與破壟斷
自 HTML5 誕生以來,一共經歷了兩個階段,分別是 Web 加強和移動互聯網。咱們先從 Web 加強提及。Web 體驗的豐富加強主要表如今:
固然 HTML5 還爲搜索引擎的語義分析作了優化,好比新增 Header 和 Section 等標籤,也在無障礙等領域作了很多工做,這些再也不多述。HTML5 在流媒體和遊戲方面的努力,成功的遏制了 Flash 的發展,而後就該遏制 IE 私有語法了。
在 HTML5 標準的升級過程當中,蘋果和 Google 同時也看到了瀏覽器市場從新洗牌的機會,他們一方面參與 HTML5 的規範,一邊在瀏覽器產品上發力。Apple 首先開始大力發展 Safari,創建 WebKit 開源項目,遷移 Safari 到 Windows 平臺;Google 起初是贊助 Mozilla 開發 Firefox,後來本身開發了 v8 引擎,合併 WebKit,於 2008 年正式推出 Chrome。「IE 的私有規範 +Flash 不是標準,咱們纔是標準」這樣的口號在新一代瀏覽器大戰中打響,IE 瞬間成爲千夫所指的壟斷表明,甚至成了阻礙 Web 發展的罪人(當時 IE6 已數年未更新,而且絲絕不懼 Firefox 的發展)。
、
恰恰微軟此時也出了暈招,推出了一系列即不完整支持規範又互相不兼容的 IE七、八、九、10,完全失去了開發者的支持。
Adobe 的 Flash 被遏制,與 Web 霸主的位子擦肩而過;IE 的私有標準被遏制,而且形成 IE 市場份額不停下滑,直到 IE 最新的移動版本反過來開始支持 WebKit 語法,真是使人唏噓。不知道 HTML6 是否是該打倒 WebKit 壟斷了。
3、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 應用的頁面切換白屏、下拉刷新 / 側滑菜單不流暢等衆多問題。看着原生工程師輕鬆實現搖一搖、二維碼、語音輸入、分享到朋友圈等功能,更是讓 HTML5 工程師感受本身站錯了隊。
即便 Facebook 不喜歡被控制,也不能拿被用戶拋棄來冒險。並且 Facebook 並無掌握關鍵點—手機瀏覽器內核。若是瀏覽器不跟上,其餘都是白搭。
而瀏覽器在手機上的表現是什麼呢?先看 Google,Chrome 性能雖高,但 Android 上的瀏覽器卻並不是 Chrome,而是 WebKit 改出來的一個蹩腳的 Android 瀏覽器;再看蘋果,iOS 上不容許其餘瀏覽器引擎上架 App Store,並且其餘使用 Safari 引擎的應用也沒法調用蘋果本身的 JavaScript 加速引擎 Nitro。結果是蘋果和 Google 不但不在瀏覽器上積極實現 HTML5 關於移動 App 所需的規範,反而對 HTML5 作出種種限制。
無論是當時硬件能力不足,仍是手機 OS 廠商的故意限制,總之結果很明顯:在移動互聯網的初期,必定是原生應用生態系統的天下,iOS 和 Android 首先把本身變成老大後,其餘小弟才能尋覓到成長的機會。
Facebook 也好,PhoneGap 也好,想在移動互聯網初期就分一杯羹是分不到的,但堅持下來,機會每每會出現。
4、HTML5這回真的來了
HTML5 在這個時間定稿,不晚不早,硬件性能更強、手機 OS 迭代速度降低。隨着 HTML5 標準定稿,一切紛爭將告一段落,如今,屬於 HTML5 的時代到來了。這個曾讓人滿懷但願,又被 Facebook 等衆多滿懷但願的開發者放棄的技術,如今會告訴你們,曾經讓各位失望的緣由,如今已經不存在了!這聽起來有些驚人,你們不由要問:是真的嗎?讓咱們細細分析。
業內俗稱 HTML5 有「性功能」障礙。即 HTML5 性能不如原生、開發工具不如原生、能力調用不如原生。
這幾個問題致使開發者沒法使用 HTML5 作出與原生同樣的 App。然而,無論是硬件升級仍是 OS 廠商策略變化,以及相關軟件技術的成熟,已解決了 HTML5 的「性工能」障礙。
咱們都知道瀏覽器的默認控件樣式和原生控件樣式差異很大,一個高性能的、樣式體驗與原生控件同樣的 UI 框架是很是重要的,以前 jQuery Mobile 等產品的因性能不足,因此難當此任。在這裏作一個廣告,我所在的 DCloud 公司在 iWeb 大會上發佈了系統的 HTML5「性工能缺失」的解決方案,包括解決 HTML5 性能問題的手機端引擎、超快的 HTML5 開發 IDE 產品 HBuilder、還有把 40 萬原生 API 封裝成 JavaScript 對象,以解決 HTML5 能力不足問題的 Native.js 技術。
英特爾公司發佈了 Crosswalk 引擎,可讓 Android 4.0-4.3 的手機上的應用打包 Chromium 引擎而不是 Android WebKit。雖然說將來 Android 4.4 會佔據更多市場份額,但目前主流的 Android 手機的系統版本畢竟仍是 4.一、4.2。
在專業方向上不少公司也作出了不錯的成績。觸控的 Cocos2d-html五、Egret runtime 和 Ludei CocoonJS 強化了 Canvas 的表現,讓 HTML5 遊戲體驗更好;UC、獵豹等手機瀏覽器也強化了音視頻播放的表現。
無論是硬件升級、軟件成熟,仍是操做系統廠商策略變化,都在強力推進 HTML5 的爆發。
不過要注意,我說的 HTML5 爆發,不是指手機瀏覽器爆發。有人說 HTML5 很差,由於用戶討厭打開瀏覽器輸入 URL 的過程。我想說這種想法是對 HTML5 的片面理解。HTML5!= 傳統瀏覽器,雖然編程語言仍是 HTML、Javascript、CSS,但發行方式毫不是傳統網站那麼簡單。HTML5 應用的入口,反而不多是啓動瀏覽器輸入 URL,它能夠是存在於手機桌面的圖標、也能夠來自超級 App(如微信朋友圈)、以及搜索引擎、應用市場、廣告聯盟。。。處處都是它的入口。它的入口,比原生 App 更多。
5、原生App的顛覆
HTML5 的「性工能」障礙獲得解決,能夠接近原生 App 的效果,因此它就能夠替代原生 App 嗎?不少人認爲,即便 HTML5 會發展的比如今好,也將是與原生 App 各佔一部分市場的格局,要求不高的長尾應用會使用 HTML5,而主流應用還是原生 App 的天下。
但我認爲這樣的想法很危險,就像 HP 的高層告訴沃茲:誰會在家裏擺一臺電腦呢?將來 HTML5 確定會顛覆原生 App。「性工能」障礙的消除,只是 HTML5 的劣勢被削弱,但劣勢被消除後,它的優點就會大放異彩,HTML5 的優點是什麼?對開發者來講:
HTML5 對用戶的好處是:和流量入口多、分發效率高相對應的。大幅下降使用門檻。用戶眼睛看到一個興趣點,點擊後,就應該當即開始知足用戶需求。好比流媒體能夠當即看,頁遊能夠當即玩。而目前的原生應用市場,用戶須要這樣操做:選一個應用、等待下載、確認權限、等待安裝,而後點擊打開。這樣糟糕的體驗早晚要被顛覆。無論是 App、遊戲仍是音視頻,將來都將即點即用。誰先知足用戶這個需求,誰就制勝。
這就是所謂「天下武功,惟快不敗」。分析至此,咱們能夠明顯的看出,無論是站在最終用戶角度、仍是站在開發者角度,HTML5 必將取代原生應用當前的位置。並由此引起一系列顛覆。
6、還有什麼會被改變?
HTML5 的爆發,原生 App 生態系統的顛覆,是一場產業革命,不少角色都會受到影響,咱們來預測一番。
標準的 HTML5 引擎並不能解決 HTML5 的全部問題,擁有大流量入口的互聯網巨頭,莫不在思考內嵌更優秀的加強引擎。騰訊推出了 X5 瀏覽器引擎,就是看中這個機會。
目前各路瀏覽器廠商、應用市場廠商、甚至 rom 廠商,都在努力整合更優質的瀏覽器引擎。假使微信內嵌的 webview 能夠運行更優秀的 canvas 遊戲、假使 360 手機助手能夠發行即點即用的 HTML5 應用而且能力體驗與原生一致、假使小米 rom 內置更強大的 webview 使得全部 HTML5 應用在小米手機上運行的更流暢。全部巨頭都會聞風而動,沒錯,這場戰役會是移動互聯網世界的二次世界大戰。
應用分發市場將面臨洗牌,因爲超級 App 的巨大流量能輕易成爲 HTML5 應用的入口,而且會造成大者更大的效應,傳統的應用商店、甚至線下預裝,這些流量不足和效率偏低的發行模式將被擠出市場主流。自己也是超級 App 的大流量應用商店,若是轉型得當,也將以發行 HTML5 應用爲主。
原生的廣告和統計SDK提供商會面臨尬尷,Google、百度等基於網頁的廣告和統計服務會取得更大的優點。開發者再也不須要打包 SDK,引入一個 Script 便可。
開源技術將在移動互聯網領域更加流行。HTML 的開放性造就了大量的開源產品,也反向促進了 HTML 的繁榮。在 Github 上有大量的 JS 框架,而原生的開源代碼數量相比甚少。而將來移動互聯網世界將由於開源而發展的更迅速,這裏也一樣存在類 Github 廠商的機遇。
早期 HTML 只須要記事本寫幾個 Tag,中期的 HTML、JS、CSS 比較複雜,須要更高級的文本編輯器,但 HTML5 到來後,它的代碼量、複雜度、開發模型將與原生開發看齊,須要相似 XCode、Eclipse 等專業的 IDE 工具來解決開發、調試的問題。一些以會使用記事本寫代碼爲榮的開發者,將面臨思路轉換甚至被更高效的開發者淘汰。
HTML5 的強大會引起不少安全問題,而且解決思路與原生不同,業內有可能會出現新的安全廠商領導者。
7、結語
寫到結尾,感受話題有點大了。其實將來如何發展是沒人能準確預測的,變量很是多。但我想讓用戶和開發者都更方便的趨勢是不會錯的。歡迎你們一塊兒討論 HTML5 的問題,在爭議中提煉真知。