战胜 Flash ,HTML5 还需要什么?

    如今,HTML5 可谓如众星捧月一般,受到许多业内巨头的青睐。且不说谷歌、苹果等业内巨头把它描绘为互联网体验的未来,即便是以不服从标准著称的微软,也向它频频示好, 决心在 Internet Explorer 9 中加入对 HTML5 的大量支持。然而,HTML5的路途真的将一帆风顺么?本文将列举了一些在HTML5发展和普及过程中需要解决的问题。

    什么是HTML5?

    根据维基百科上的解释,HTML5 的前身是 Web Applications 1.0,由 WHATWG 于2004年提出。2007年,它被 W3C 接纳,并于2008年1月22日发布第一份正式草案。

    以下摘录自维基百科的文字介绍了 HTML5 的特点和与 HTML4 的差别:

新应用程序接口(API)
即时二维绘图
定时媒体播放
储存
离线
编辑
拖放
通讯/网络
后退按钮管理
MIME 和协议处理程序时表头登记

    与 HTML 4 的不同之处

新的解析顺序
新的元素:section, video, progress, nav, meter, time, aside, canvas
input 元素的新属性:日期和时间,email, url
新的通用属性:ping, charset, async
全域属性:id, tabindex, repeat
移除元素:center, font, u, strike, s, frameset, frame, applet

    战胜 Flash, HTML5 还需要什么?

    决定胜负的因素很多,在此分为两部分分析。

    一、技术方面

    HTML5 与 Flash 在功能上并不是完全重叠的,比如对于摄像头等计算机硬件的调用,仍然只能使用 Flash 或其他方法实现。但是 HTML5 却引入了一些让 Flash 不得不认真对待的元素。其中最为人所知的和最重要的即为 canvas 和 video 标签。在我看来,其他的新属性跟 Flash 的竞争关系很弱,只有此二者是真真正正要抢 Flash 的饭碗,而且一旦普及,将深刻的改变整个互联网,可谓是 HTML5 的左膀右臂。

    canvas

    在 Flash 流行之前,曾经出现过很多种在网页中实现绘图功能的方法,其中包括著名的Java Applet 。这些方法各有千秋,相互竞争不休。但是在 Macromedia 公司推出 Flash 之后,这场战争很快就结束了。

    为了对抗 Flash,又有很多新的技术被提出,其中就包括现在 Flash 的东家 Adobe 提出的 SVG。然而这没有能够阻止 Flash 迅速的被网民接受。基于 Flash 的动画、游戏等应用几乎是在一夜之间蔓延到了互联网的每个角落。

    而今,新的挑战者出现了,他就是 HTML5 的新标签 canvas。

    canvas 相比 Flash 显然是有其优点的。它不依赖于外部插件、与浏览器渲染引擎紧密结合、节约资源,最重要的是极大的简化了图形和网页中其他元素的交互过程。

    对于 Flash 来说,使 Flash中的元素与网页中其他元素进行交互是要消耗大量时间和资源的,另外在编程上也相当不方便。

而 canvas 本身就是 HTML5 的一个元素,可以像操作普通 HTML 元素一样操作它。开发人员可以将所有的代码整齐的写在一个文件里,降低了维护与更新的难度。

    然而 canvas 也有其缺点:

    其一,开发者不得不编程描绘每一个点和矢量曲线,在旋转缩放时更需要和矩阵变换打交道,这会增加描绘复杂图形的难度。而在 Flash 里,图形显示的 API 被封装在名为“Sprite(显示列表)”的类里,大部分图形元素都继承于此类,开发者可以使用多种工具设计图形,对图形进行旋转放缩只需要简单的调用类 的函数。

    其二,动画的实现存在缺憾。canvas 虽然提供了不同于传统的通过 div 块实现动画的方法,但这种方法仍然非常繁琐。开发者必须在每一桢动画显示时清空画布,然后重画所有元素,这必然导致包含大量元素的场景动画缓慢,只移动少 量元素就要重画整个画布会浪费大量资源。而且创建动画也是一件十分繁琐的事情。相比起来,Flash的实现就方便多了,虽然从最底层来说,动画时仍然需要 重画整个画布,但其被交予 Flash Player 自动处理,无需开发者手动管理。基于字节码的 Flash 在解析的过程中将会比即时编译的 HTML5 和 JavaScript 快速。一般来说,复杂动画将会更流畅。另外,良好封装的图形类和强大的设计工具使得动画的创建非常方便。

    其三,没有提供一套方便的事件体系。开发者也许需要通过捕获鼠标在 canvas 中点击的坐标,判断用户到底点击了什么图形元素。在这个过程中可能要遍历所有的显示元素并判定点是否在图形内,实现起来比较繁琐,更不要说实现事件的冒泡 和递归模型了。虽然今后出现的图形库可以解决这个问题,但这实质上相当于使用 JavaScript 构建了一套事件响应模型,其效率显然不如内建于浏览器的原生事件模型高。在 Flash 中,事件也被良好封装为类,捕获点击等事件自然不在话下,更重要的是提供了判断两个图形是否有交集的事件和函数,这在游戏编程中非常方便。另 外,Flash 的最新版本将会支持多点触摸事件的响应,而 HTML 想要支持这点恐怕要等到 HTML6 了。

    由以上分析我们可以看出,HTML5 需要的几个非常重要的东西:一个强大易用的图形库、硬件加速的图形解析和重绘、一个强大的编 辑器(IDE)

    目前已经出现了基于 canvas 实现的游戏引擎。但是从效果上看仍然无法与 Flash 媲美。

WebGL 的提出让我们看到了硬件加速的希望,这将极大的改进图形显示的速度。但是目前它只被少数开发版本的浏览器支持。

    IDE 方面,讽刺的是恰恰是 Adobe 为 Adobe Flash CS5 添加了一个将 Flash 转化为 canvas 的功能。在 JavaScript 方面,鉴于其为非强制类型的编程语言,对其进行代码提示等非常困难,提高编程效率较难。

    如果以上三个问题不能被良好解决,将会限制 canvas 所能实现的效果的丰富度,增加开发的复杂度,从而最终阻碍其普及。

    图为一个用 canvas 实现的绘图应用

    video

    video 标签可能是 Adobe 最反对的东西了,它极有可能打破 Flash 在在线视频领域的垄断地位。

    但目前的情况是作为 video 内容的视频存在编码问题,Apple 和微软所支持的 H.264 不是开放标准,浏览器厂商必须为其付费。因此,作为三大浏览器之一的火狐浏览器拒绝支持此编码格式。谷歌虽然也收购了一套优质的编码技术,但是目前没有迹 象表明谷歌会开放这个技术标准。

    根据最近的统计,虽然 Google Chrome 浏览器和 Apple Safari 浏览器增长很快,但浏览器市场还是主要被火狐和 IE 所统治。如果火狐坚持不支持 H.264 编码格式,video 标签的推广将会十分困难。

    所以,HTML5 需要一个既开放又优质的视频编码标准

    图为 video 标签 的演示

    二、商业方面

    团结

    要让微软、谷歌、苹果这三个在很多方面存在竞争关系的业界巨头团结一心的支持同一套标准是很困难的。

    苹果方面对 Flash 痛下杀手,微软方面则极少参与这场论战。至于谷歌则在支持 HTML5 的同时在 Android 中加入了 Flash 支持,甚至存在将 Flash 纳入 Chorme 安全沙箱的计划。在这种情况下,如果 Adobe 能够良好利用三大巨头之间的分歧并加以运作,HTML5 的前景堪忧。

    即便 Adobe 没有那样的智慧与能力挑拨三大巨头之间的关系,三大巨头自己就可能葬送 HTML5 的未来。前车之鉴就是大名鼎鼎的 OpenGL。这一标准成立之初的联盟成员几乎可以用豪华来形容,结果因为各个成员之间为了自己的利益相互争吵,使得OpenGL的发展速度远不及 Direct3D,直至到目前这样游戏市场几乎被竞争对手占据、应用范围局限在专业领域的情况。

    用户的接受

    无论各大厂商如何宣传,用户的接受才是最后的检验标准。目前来看 HTML5 在普通桌面领域可能的作为不大,与 Flash 的关系必然是长期并存。原因在于用户并不在意页面到底使用的是什么技术,而更关心最后的效果怎么样。HTML5 的 canvas 若要达到 Flash 实现的相同效果所需要的难度更大,这样限制了中小网站在网页里使用 canvas 的积极性,如果 canvas 不能普及,就相当于 HTML5 断了一条腿,而 video 标签的编码问题再得不到解决,HTML5 真得就没办法和 Flash 竞争了。

    大胆的预测

    在最后,我将对 HTML5 和 Flash 的这场世纪之战做出我自己的预测。

    首先用一个比喻描述目前的情况:

    谷歌、微软、苹果、Adobe 四家围在一起打牌,其中 Adobe 是庄家,手中的牌最多最好。苹果、微软都很想把 Adobe 从庄家的位置上拖下来,但是又不愿意合作。谷歌与 Adobe 关系暧昧,但是也有自己的打算。

    在这场牌局中,Adobe 几乎是立于不败之地的,从目前来看 Flash 被 HTML5 完全取代的可能不大,原因在于Flash 已经占领了绝大部分传统桌面终端的市场,其地位几乎无法撼动,即便 Flash 做得不够好,但是只要没到很不好的地步,还是无法被超越。虽然传统桌面收到了新兴的移动终端的挑战,但是这一过程将发展的比 Flash 和 HTML5 之间的竞争更缓慢。Adobe 控制着 Photoshop、Dreamweaver 和 Fireworks 等知名软件,制作网页即便可以缺少 Flash 却无法缺少     Photoshop,即便是编制全 HTML5 的网页,Dreamweaver 依然是首选的网页制作利器,制作 canvas 也可以使用 Flash CS5 新加入的生成 canvas 的功能。

    图为 Adobe Flash CS5

    广受诟病的 Flash Player 并不能给 Adobe 带来直接的利润,它的意义在于将富媒体应用的市场和标准掌握在手中。用于制作 Flash 的编辑器才是 Adobe 真正的利润来源。如果在 HTML5 的时代,开发者仍然不得不选择 Adobe 的产品来制作基于 canvas 的交互页面,那么又何必需要 Flash Player 的存在呢?Adobe 更是省下了维护一个复杂系统的费用。

    至于微软,他内心是非常纠结的,他手里有 Internet Explorer 这张不知道是好是坏的牌,原因在于由 Internet Explorer 6 占领的浏览器市场份额仍然没有被有效释放,新版本的 Internet Explorer 不得不跟自己的前辈竞争。另外,微软也急于推广自己的 SliverLight ,这一产品与 Flash 和 HTML5 都是竞争关系。支持 HTML5 或多或少会对 SliverLight 的推广有所打击。所以微软必然不会全力支持 HTML5,而是只将他作为 SliverLight 的补充。

    苹果的算盘打得很响,他要从移动终端领域着手,逐步渗透到桌面领域。iPhone 是第一步,也是相当成功的一步,他的存在说明智能手机领域并不需要 Flash 的存在,事实上,Flash 在这一领域表现的确很差。但是真正关键的是 iPad。iPad无论是屏幕大小还是操作体验都更接近与普通桌面电脑,如果平板电脑被证明不需要 Flash 的存在,那么桌面电脑为什么不可以?如果大量用户通过使用平板电脑而习惯了没有 Flash 的互联网体验,那么 Flash 就真的没有未来了。iPad发售之后 Adobe 与苹果之间争论的升级,从侧面证实苹果和 Adobe 都看到了平板电脑将在这场战争中发挥的作用。

    但是苹果真得能如愿以偿么?苹果的产品即便销售很好,也不可能做到像微软的产品这样普及。原因在于苹果的产品文化就在于提供高质量和高品位的体验, 而这种体验伴随着高价。必然只有少数人能够用得起苹果,必然只有使用苹果是能够成为一种身份和品味的象征,苹果的产品才会有这么大的吸引力。难道除了苹果 就没有其他厂商可以提供同样的技术了么?难道微软不能像苹果一样以用户体验为先么?显然不是,重要的原因在与微软所要提供的是一个给所有人使用的产品,这 一产品要有广泛性,要有继承性,而且不能太昂贵。所以微软在用户体验方面改变的动力不足,微软试图在 Visita 里极大的改变用户体验的方式,原来使用 XP 非常熟练的用户到了 Visita 里就变得不知所措了。结果显而易见。

    事实上,苹果从一开始就不打算让所有人都用上苹果,只要有少部分人愿意掏钱购买,它就能赚足够的钱。

    到了平板电脑这里也是一样,iPad 不可能独自积累到足够大的用户群,以至于可以挑战传统桌面终端。更具性价比的其他厂商的产品将会让更多人享受到平板电脑。而且这些平板电脑很可能会支持 Flash。这样的话,利用新兴终端,改变用户对 Flash 的依赖的计划就会失败。

    谷歌方面,这场战争的胜负对谷歌的影响都不大,只要能把用户留在页面上,它并不在意到底使用的是 HTML5 还是 Flash。然而他却最终胜负有者非同寻常的影响力。谷歌除了 YouTube 之外,很少在自己的产品中使用 Flash。也许谷歌认为一个开放的标准更容易控制。对于 Flash 这样封闭的产品,虽然好用,但是谷歌很难对其发展方向有发言权。而今,Chrome 浏览器的迅猛发展日益增加了谷歌在 HTML 新标准中的发言权。但是这并不意味着谷歌会完全抛弃 Flash。

    Flash 可以作为谷歌牵制苹果的重要工具,作为 Android 挑战 iPhone 的筹码。谷歌正筹划将 Flash 纳入 Chrome OS 的安全沙箱。如果成功,Flash 饱受诟病的耗电问题、安全问题都能得到较好的解决。

    由此得到结论,Flash 气数未尽,仍将长期统治互联网富媒体领域的市场。在移动领域的发展将取决于谷歌的态度,但可以预见的是将会有很多困难。

    至于 HTML5,预计在1-3年内会达到相对普及的程度,但是不会取代 Flash。他们之间甚至是可以和谐相处,取长补短的。然而不要对 HTML5 的发展速度抱有太大希望,毕竟业内巨头之间矛盾重重,现有标准能够被各大浏览器无差别支持就已经相当困难了,想要加入任何新功能都要很久才会被广泛支持。 这样缓慢的发展速度如何能够体现强大的竞争力,我们拭目以待。

    原文链接:http://www.techxav.cn/2010/05/13/how-can-html5-beat-flash/

posted @ 2010-05-13 21:14  梦想天空(山边小溪)  阅读(954)  评论(0编辑  收藏  举报