自 W3C 于 1999 年发布 HTML4 后,Web 世界快速发展,一片繁荣。人们一度认为 HTML 标准不需要升级了。一些致力于发展 Web App 的公司另行成立了 WHATWG 组织,直到 2007 年,W3C 从 WHATWG 接手相关工作,重新开始发展 HTML5。
纵观 HTML5 的发展,也是一波三折,有用户的需求在推动,有技术开发者的需求在推动,更有巨大的商业利益在推动。过去这些年,HTML5 颠覆了 PC 互联网的格局,微信朋友圈里的一个神经病猫小游戏,打开了人们对移动互联网的各种幻想,优化了移动互联网的体验,接下来,移动互联网将产生一个全新的入口,而由超级 App+HTML5 主导的 web app 将颠覆原生 App 移动互联世界。
传统浏览器+HTML5 组合的灰色时期
在 HTML5 标准的升级过程中,苹果和 Google 同时也看到了浏览器市场重新洗牌的机会,他们一方面参与 HTML5 的规范,一边在浏览器产品上发力。Apple 首先开始大力发展 Safari,建立 WebKit 开源项目,Mac、iOS、Windows 多平台齐发力;Google 起初是赞助 Mozilla 开发 Firefox,后来自己开发了 v8 引擎,合并 WebKit,于 2008 年正式推出 Chrome。「IE 的私有规范+Flash 不是标准,我们才是标准」这样的口号在新一代浏览器大战中打响。
随着 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 都有大版本更新。HTML5 没有跟上移动互联网初期的快速迭代。
PhoneGap 的出现,给开发者打开了一扇窗。很多人期待 PhoneGap 不停扩展 API,来补充浏览器的不足。Adobe 看到 PhoneGap 仿佛看到了重振江湖地位的希望,但在 Adobe 收购 PhoneGap 后,又发现这个东西可商用性不足,而且开源使得 Adobe 无法像 Flash 那样获取商业利益,于是就把 PhoneGap 捐给了 Apache,改名为 Cordova。
因为各种原因,Cordova 的定位最终没有成为浏览器的强化,而走向了混合式开发。基于当时的背景,他们认为原生是不可替代的,「原生+HTML5」的混合模式更有意义。
这时 Facebook 加入了 W3C,牵头成立了 Mobile Web 工作组。Facebook 是混 Web 圈的,并且在手机 OS 上没有自己的领地,他不喜欢被苹果和 Google 掌控的原生应用生态系统。Mobile Web 这个工作组的重要目标就是让 HTML5 开发的网页应用达到原生应用的体验。然而,事与愿违,结果是努力了却失败了。2012 年,Facebook 放弃了 HTML5 的新闻充斥了全世界的 IT 媒体,HTML5 瞬间被打入冷宫。
而在 HTML5 定稿之前,国内绝大多数浏览器也已经支持 HTML5,包括 UC 在内的很多手机浏览器已经迫不及待发展 Web App,用于抵消原生 App 所吞噬的流量。在 HTML5 之前 Web App 曾经试图和原生 App 争夺手机桌面,不过限于 Web App 天生的缺陷―卡顿、无法 Push 等,其体验流畅程度远远落后于原生 App,导致目前手机桌面依然是原生 App 的天下。
HTML5 定稿 WebApp 迅速崛起了
Facebook 为何放弃 HTML5?这一事件,甚至让别有用心的人经常拿来唱衰 HTML5 以及 Web App。
核心原因是当时基于 HTML5 真的做不出好的移动 App。对比 Twitter 等竞争对手的原生 App,Facebook 的 HTML5 版本实在无法让用户满意。比如 Push 功能,到现在 HTML5 的推送和原生的推送体验差距依然巨大,更不用说 HTML5 应用的页面切换白屏、下拉刷新/侧滑菜单不流畅等众多问题。看着原生工程师轻松实现摇一摇、二维码、语音输入、分享到朋友圈等功能,更是让 HTML5 工程师感觉自己站错了队。
即使 Facebook 不喜欢被控制,也不能拿被用户抛弃来冒险。而且 Facebook 并没有掌握关键点―手机浏览器内核。如果浏览器不跟上,徒然定一堆标准草案落不了地。
Facebook 也好,PhoneGap 也好,想在移动互联网初期就分一杯羹是分不到的,但坚持下来,机会往往会出现。
终于,在 2014 年 10 月底,W3C 宣布 HTML5 正式定稿。这个时间,不晚不早,硬件性能更强、手机 OS 迭代速度下降。HTML5 的定稿的预示着新时代的起航。
对于移动设备来说,硬件性能的提升移动程度上抹平了 HTML 的不足,同时补充了流媒体和游戏能力。行业支持上从最新的 Android5.0 开始,Webview 可以通过 Google Play Store 实时更新,和 Chrome 的升级保持一致,用户就可以不刷机享受到最新的浏览器引擎;iOS 8 发布后,苹果还是很识趣地取消了三方程序调用 Nitro 的限制,现在任意浏览器或应用调用 iOS 的 UIWebview 都可以利用 Nitro 加速。
Google 在 2013 年底发布的 Android 4.4,内置的 Webview 不再是蹩脚的 Android WebKit 浏览器,而是 Chromium,性能大幅提升。从最新的 Android 5.0 开始,Webview 可以通过 Google Play Store 实时更新,和 Chrome 的升级保持一致,用户就可以不刷机享受到最新的浏览器引擎;再看 Apple 方面,2012 年 iPhone 5 发布后,HTML5 在 iOS 上的表现已令人满意,Safari 独家的 JavaScript 加速引擎 Nitro 不再那么重要,不过在 iOS 8 发布后,苹果还是很识趣地取消了三方程序调用 Nitro 的限制,现在任意浏览器或应用调用 iOS 的 UIWebview 都可以利用 Nitro 加速,这样在前端使用 JS 做大型运算也成为可能。
两大手机操作系统霸主和浏览器巨头的态度发生了变化,使得 HTML5 在手机上的发展不再受限,而且这个变化不可逆只能继续向前,这种变化势必会产生深远的影响。
全新的互联网入口超级 App+Web App 的时代来临
首先从硬件方面来说,随着 Apple iPhone6 的发布,硬件性能的提升,已经抹平了 HTML5 的性能劣势。Apple 和 Google 的策略也在发生变化,在 2013 年底 Google 发布的 Android 4.4 内置的 Webview 已经不再是 Android Webkit 了,而是 chromium。2012 年的 iPhone5 上面的 HTML5 表现已经令人满意,Safari 独家的 Javascript 加速引擎 Nitro 已经不再那么重要。而且在 iOS8.0 发布后,Apple 还取消了第三方程序调用 Nitro 的限制,现在任意浏览器或应用调用 iOS 的 UIWebview 都可以利用 Nitro 加速。两大移动巨头有意或无意的改变,让 HTML5 再说手机平台上面的发展不再受限。
而对于开发者而言,开发者为什么不愿意开发 WP 版本,很多时候是因为工作量太大,除了版本适配,分辨率调整等,一旦有新版本推出,在原生 App 中开发者不得不等待多达两周时间去接受审核。另外内容维护上也很麻烦,这也是为什么有些媒体开始放弃原生 App 鼓励读者使用 Web App 的原因。除此之外,跨平台在多屏时代给开发者非常痛苦的体验,人们都期待当年 Java 的一次编译处处运行的理想情况。HTML5 目前正在扮演一个开发者救星的角色。
这也是为什么这两年诞生了很多基于 HTML5 的开源技术框架,并且非常受用户欢迎的原因。云适配是一家只有两年的小公司,他们主要基于 HTML5 在 PC 网站植入一行 JS 代码就能实现 PC 网站的移动适配,而其在 2014 年推出的中国首个开源 HTML5 跨屏前端框架 Amaze UI 推出仅仅 3 个月就收到了近 10 万的下载,帮助众多的中小企业成功建立了自己的 Web App,在全球最大的社交编程及代码托管网站――GitHub 上,获得近 2000 用户的星级标注,成为中国最受欢的 HTML5 开源框架。而这一切,都意味着 HTML5 带来的移动互联网的风向转变。
你手机里装了多少 App,最常用的有哪些?
可能最多的回答是,我用「微信、QQ,或者其他浏览器」等等所谓的超级 App。
对于其他更多的原生 App,要先进入 App Store,每次下载都要输入密码,而安卓则不得不经历一系列的权限确认、安装等,App 下载安装所需要的用户成本一定程度上成为大家使用 App 的障碍。但是在 Web App 中这一切都不是问题,它极大的降低了用户使用成本,用户眼睛看到一个兴趣点,点击后,就应该立即开始满足用户需求。比如流媒体可以立即看,页游可以立即玩。
而 HTML5 应用导流也非常容易,超级 App(如微信朋友圈)、搜索引擎、应用市场、浏览器,到处都是基于 HTML5 的 Web App 的流量入口。而原生 App 的流量入口只有应用市场。
目前可以看见的是,国内外各大浏览器都在推广 Web App,效果已经慢慢显现。然而,可以预见的是,短时间内原生 App 还会占据主流,但是基于原生 App 本身的缺陷和门槛,未来的移动互联网潮流,说不定就在 HTML5 中实现。