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也好,想在行动网路初期就分一杯羹是没办法的,但坚持下来,机会往往会出现。