HTML5前世今生
?http://www.mamicode.com/info-detail-317900.html
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,比如 gmail;2. 流媒體;3. 游戲。我們就這 3 個方面來講 HTML5 做了什么。
?
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 應用的頁面切換白屏、下拉刷新/側滑菜單不流暢等眾多問題。看著原生工程師輕松實現搖一搖、二維碼、語音輸入、分享到朋友圈等功能,更是讓 HTML5 工程師感覺自己站錯了隊。
?
即使 Facebook 不喜歡被控制,也不能拿被用戶拋棄來冒險。而且 Facebook 并沒有掌握關鍵點—手機瀏覽器內核。如果瀏覽器不跟上,徒然定一堆標準草案落不了地。
?
而瀏覽器在手機上的表現是什么呢?先看 Google,Chrome 性能雖高,但 Android 上的瀏覽器卻并非 Chrome,而是 WebKit 改出來的一個蹩腳的 Android 瀏覽器;再看蘋果,iOS 上不允許其他瀏覽器引擎上架 App Store,而且其他使用 Safari 引擎的應用也無法調用蘋果自己的 JavaScript 加速引擎 Nitro。結果是蘋果和 Google 不但不在瀏覽器上積極實現 HTML5 關于移動 App 所需的規范,反而對 HTML5 做出種種限制。
?
不管是當時硬件能力不足,還是手機 OS 廠商的故意限制,總之結果就是:在移動互聯網的初期,一定是原生應用生態系統的天下,iOS 和 Android 首先自己的地盤穩固后,產業才會向下個階段升級。
?
Facebook 也好,PhoneGap 也好,想在移動互聯網初期就分一杯羹是分不到的,但堅持下來,機會往往會出現。
?
四、 HTML5 這回真的來了
?
終于,在 2014 年 10 月底,W3C 宣布 HTML5 正式定稿。這個時間,不晚不早,硬件性能更強、手機 OS 迭代速度下降。
?
隨著 HTML5 標準定稿,一切紛爭將告一段落,現在,屬于 HTML5 的時代到來了。
?
有人說,光標準定稿沒用啊,配套起來了嗎?HTML5 做的應用究竟能否匹敵原生 App?答案是,HTML5 不但可以匹敵原生 App,甚至它天然的很多特性超越了原生 App。
?
我們先談談 HTML5 原來不如原生應用的地方,業內俗稱 HTML5 有“性工能”障礙。即 HTML5 性能不如原生、開發工具不如原生、能力調用不如原生。
?
這幾個問題導致開發者無法使用 HTML5 做出與原生一樣的 App。然而,不管是硬件升級還是 OS 廠商策略變化,以及相關軟件技術的成熟,已解決了 HTML5 的“性工能”障礙。
?
1. 硬件升級
?
2011 年,iPhone 4s 的 CPU 是 A5,現在 iPhone 6 是 A8,按蘋果的歷次發布會的說法,速度共提升了 7.5 倍。這 3 年間 7.5 倍的速度提升,抹平了太多 HTML5 的性能問題。
?
2. 蘋果、Google 的策略變化
?
Google 在 2013 年底發布的 Android 4.4,內置的 Webview 不再是蹩腳的 Android WebKit 瀏覽器,而是 Chromium,性能大幅提升。從最新的 Android5.0 開始,Webview 可以通過 Google Play Store 實時更新,和 Chrome 的升級保持一致,用戶就可以不刷機享受到最新的瀏覽器引擎;再看 Apple 方面,2012 年 iPhone 5 發布后,HTML5 在 iOS 上的表現已令人滿意,Safari 獨家的 JavaScript 加速引擎 Nitro 不再那么重要,不過在 iOS 8 發布后,蘋果還是很識趣地取消了三方程序調用 Nitro 的限制,現在任意瀏覽器或應用調用 iOS 的 UIWebview 都可以利用 Nitro 加速,這樣在前端使用 JS 做大型運算也成為可能。兩大手機操作系統霸主和瀏覽器巨頭的態度發生了變化,使得 HTML5 在手機上的發展不再受限,而且這個變化不可逆只能繼續向前,這種變化勢必會產生深遠的影響。
?
3. 軟件技術的成熟
?
PhoneGap 的發展雖然放緩了,但其他產品技術卻成熟了。2014 年的 iWeb 大會上,眾多廠商的產品提供了面向開發者免費或開源的 HTML5 性工能障礙的解決方案。
?
(注:編者作為從業人員,也會在分析各種方案時提到我們公司的方案,但編者會客觀不夸張的陳述方案,而且該方案是純免費的,沒有商業銷售嫌疑。)
?
DCloud 公司在 iWeb 大會上發布了系統的 HTML5“性工能缺失”的解決方案,包括:
?
a) 性能:提升 HTML5 性能的手機端引擎,讓側滑菜單、下拉刷新等動態交互卡頓的問題得以解決;
?
b) 工具:HTML5 開發 IDE 產品 HBuilder, 超快的編程利器;
?
c) 能力:把 40 萬原生 API 封裝成 JavaScript 對象,以解決 HTML5 能力不足問題的 Native.js 技術;
?
d) 最接近原生體驗的高性能框架:MUI 框架,體積只有幾十K,加載、運行遠快于一般框架。
?
基于該方案開發的 HTML5 應用完全可以達到原生 App 的功能和體驗。
?
? ? ? ?使用 HBuilder 開發 HTML5 應用
?
英特爾公司發布了 Crosswalk 引擎,可以讓 Android 4.0-4.3 的手機上的應用打包 Chromium 引擎而不是 Android WebKit。畢竟目前市場上存在大量 Android 4.0-4.3 的手機,同時統一的 webview 也避免了兼容性的煩惱。
?
在專業方向上很多公司也做出了不錯的成績。觸控的 Cocos2d-html5、Egret runtime 和 Ludei CocoonJS 強化了 Canvas 的表現,讓 HTML5 游戲體驗更好;UC、獵豹等手機瀏覽器都強化了音視頻播放的表現。
?
不管是硬件升級、軟件成熟,還是操作系統廠商策略變化,都在強力推動 HTML5 的爆發。
?
不過要注意,我說的 HTML5 爆發,不是指手機瀏覽器會替代桌面成為應用入口。有人說 HTML5 不好,因為用戶討厭打開瀏覽器輸入 URL 的過程。我想說這種想法是對 HTML5 的片面理解。HTML5!=傳統瀏覽器,雖然編程語言還是 HTML、Javascript、CSS,但發行方式絕不是傳統網站那么簡單。HTML5 應用的入口,反而很少是啟動瀏覽器輸入 URL,它可以是存在于手機桌面的圖標、也可以來自超級 App (如微信朋友圈)、以及搜索引擎、應用市場、廣告聯盟。。。到處都是它的入口。它的入口,比原生 App 更多。
?
五、 原生 App 的顛覆
?
HTML5 的“性工能”障礙得到解決,可以接近原生 App 的效果,所以它就可以替代原生 App 嗎?很多人認為,即使 HTML5 會發展的比現在好,也將是與原生 App 各占一部分市場的格局,要求不高的長尾應用會使用 HTML5,而主流應用仍是原生 App 的天下。
?
但我認為這樣的想法很危險,就像 Apple 成立前,HP 的高層告訴沃茲:誰會在家里擺一臺電腦呢?未來 HTML5 肯定會顛覆原生 App。“性工能”障礙的消除,只是 HTML5 的劣勢被削弱,但劣勢被消除后,它的優勢就會大放異彩,HTML5 的優勢是什么?我們分別就開發者和最終用戶來看。
?
HTML5 對開發者的 7 大優勢
?
?跨平臺:
?
在多屏年代,開發者的痛苦指數非常高,人人都期盼 HTML5 能扮演救星。多套代碼、不同技術工種、業務邏輯同步,這是折磨人的過程。有點類似個人電腦早期世界,那個時候的每家電腦都有自己的操作系統和編程語言,開發者疲于做不同版本,其實 DOS 的盛行也很大程度是因為開發者實在沒精力給其他電腦寫程序。跨平臺技術在早期大多因為性能問題夭折,但中后期硬件能力增強后又會占據主流,因為跨平臺確實是剛需。
?
快速迭代:
?
移動互聯網是一個快魚吃慢魚的時代,誰對用戶的需求滿足的更快,誰的試錯成本更低,誰就擁有巨大的優勢。互聯網產品大多免費、且有網絡效應,后入者搶奪用戶的難度非常大。使用原生開發,從招聘、開發、上線各個環節的效率都慢一倍以上,而且參與的人越多,溝通效率往往拖慢不止一倍。
?
持續交付:
?
很多人有這樣的體會,一個原生應用上線 Appstore,突然有一個大 bug,只好連夜加班修復,然后靜靜等待 2 周或更長時間的 Apple 審核,這 2 個星期被用戶的涂抹淹死,市場上一片差評,用戶大量流失。等新應用被審核上線了,用戶已經卸載了。但是,HTML5 沒有這些問題,你可以實時更新,有問題立即響應。
?
大幅下降成本:
?
創業者融資并不容易,如何花錢更高效非常重要。如果你使用原生開發的 App 和競爭對手使用 HTML5 開發的 App 沒什么區別,但你的開發成本高出一倍,我相信沒有投資人會喜歡給你投錢。
?
開源生態系統發達:
?
HTML5 前端是開放的正反饋循環生態系統,大量的開源庫可以使用,開發應用變得更輕松、更敏捷,當然這也體現在了快速迭代和成本下降上。不過更重要的是,這種開放的正反饋循環生態系統未來的生命力是比原生生態系統更強勁的。
?
開放的數據交換:
?
HTML 是以 page 為單元開放代碼的,它無需專門開發 SDK,只要不混淆,就能與其他應用交互數據。開發者可以讓手機搜索引擎很容易檢索到自己的數據, 也更容易通過跨應用協作來滿足最終用戶需求。
?
更容易推廣、更容易爆發:
?
導流入口多:HTML5 應用導流非常容易,超級 App (如微信朋友圈)、搜索引擎、應用市場、瀏覽器,到處都是 HTML5 的流量入口。而原生 App 的流量入口只有應用市場。聰明的 HTML5 開發者當然會玩轉各種流量入口從而取得更強的優勢。
?
流量大:前段時間微信朋友圈風靡一時《神經貓》,這個游戲如果放到 Appstore,絕對沒有那么多流量,超級 App 帶來的流量,遠大于原生應用市場。假如微信允許游戲在桌面創建快捷方式、假如游戲后續升級解決持續娛樂問題,未來不可想象。
?
導流效率高:除了入口多、流量大,導流效率高也不可忽視,誰都知道:頁游和端游打同樣的廣告,廣告變用戶的轉化率,頁游遠遠高于端游。
?
可精準導流到二級頁:我們都知道搜索引擎可以直接進入到。
?
HTML5 對最終用戶的 3 大優勢
?
大幅降低使用門檻
?
為什么流媒體會替代下載視頻成為主流?為什么頁游會如此火爆?只因用戶太“懶”。讓用戶更方便的滿足需求,有時效果好于更多的滿足需求。
?
用戶眼睛看到一個興趣點,點擊后,就應該立即開始滿足用戶需求。比如流媒體可以立即看,頁游可以立即玩。而目前的原生應用市場,用戶需要這樣操作:選一個應用、等待下載、確認權限、等待安裝,然后點擊打開。這樣糟糕的體驗遲早要被顛覆。
?
不管是 App、游戲還是音視頻,未來都將即點即用。誰先滿足用戶這個需求,誰就制勝。
?
實時更新、差量更新的優秀體驗
?
HTML5 應用可以繞開應用市場的限制進行自主實時更新,用戶可以快速享受新服務。
?
而且這種更新完全可以是差量更新,比如某個 HTML 頁面或某個 js 文件有問題,只更新這個幾k的小文件就可以了,這比原生應用的更新體驗好太多。
?
跨應用的使用體驗
?
目前手機應用切換是以桌面或任務管理器為中心的,但事實上這些中心很影響效率和體驗。用戶想出差三亞,先打開去哪 App 訂票,然后切回桌面,再找到并打開天氣 App,搜索輸入三亞,再切到桌面,找到并打開航旅縱橫 App,輸入航班號值機,哦對了,航班號多少來著,再切到桌面,找到并打開去哪 App 看航班號,最后找到并打開租車 App,輸入租車地點,然后再切回桌面。。。
?
在原生應用體系下,用戶只能這樣。但在 HTML5 體系下,他不需要切回桌面,他可以在 App 間方便的直接跳來跳去,而不是使用一個一個孤島 App;他更不用重復錄入數據,應用間可以方便的互相傳遞數據。
?
這種模式需要一點想象力,但未來遲早會來。
?
分析至此,我們可以明顯的看出,不管是站在最終用戶角度、還是站在開發者角度,HTML5 必將取代原生應用當前的位置。并由此引發一系列顛覆。
?
六、 還有什么會被改變?
?
HTML5 的爆發,原生 App 生態系統的顛覆,是一場產業革命,很多角色都會受到影響,我們來預測一番。
?
新型 HTML5 引擎戰火將燒起
?
標準的 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 應用的性能分析調優是另一個世界。
?
混淆與產權保護
?
HTML5 是開放代碼的,好處也帶來弊端,有些東西開發者希望暴露,但有些東西開發者希望保護。混淆技術就變得更有商業機會。PC Web 上 Gmail 的混淆就做的不錯。除了 JS 混淆,離線數據加密相信也有不少空間。
?
安全廠商的新機會
?
HTML5 的強大會引發很多安全問題,并且解決思路與原生不一樣,業內有可能會出現新的安全廠商領導者。
?
七、 結語
?
寫到結尾,感覺話題有點大了。其實未來如何發展是沒人能準確預測的,變量非常多。但我想讓用戶和開發者都更方便的趨勢是不會錯的。
轉載于:https://blog.51cto.com/kenkao/1660055
總結
- 上一篇: 文件上传利器SWFUpload入门简易教
- 下一篇: 带项目的一些体会以及合格的 Leader