一些关于 Html5 和 Flash 的事

最近网上流传着这样一个说法: Flash 会被 HTML5取代. 起源是由于 Apple 的 iPhone 和 iPad 不支持 Flash. 然后就是一些媒体的夸大和不实的宣传,大慨意思说是 Flash 的末日到了,人们该放弃 Flash 了. 我不认同这个, 但是 Flash 迟早是会被淘汰并逐步放弃的, 至少不再是主流的技术了. 这一点从国外网站的 Flash 应用上面来看已经在逐渐的用其他的技术手段来放弃 Flash 了.

熟悉网页制作的人都知道网页上面要使用 Flash 就必须插入 Flash 插件的调用代码, 这样浏览器才能通过网页来展示 Flash 的内容. 这就表明了 Flash 只是插件. 而不是一个浏览器直接支持的东西,要想用它就必须装插件. 那浏览器直接支持是什么呢? 那就是 HTML了.

HTML 是超文本置标语言HyperText Markup Language),简称为HTML. 是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种置标语言。HTML被用来结构化信息——例如标题、段落和列表等等,也可用来在一定程度上描述文档的外观和语义。由蒂姆·伯纳斯-李给出原始定义,由IETF用简化的SGML(标准通用置标语 言)语法进行进一步发展的HTML,后来成为国际标准,由万维网联盟(W3C)维护。

既然浏览器直接支持 HTML, 应该说是原生支持HTML. 那么 HTML5 又是什么呢?

HTML 5 是一个新的网络标准,目标在于取代现有的 HTML 4.01, XHTML 1.0 and DOM Level 2 HTML 标准。它希望能够减少浏览器对于需要插件丰富性网络应用服务(plug-in-based rich internet application,RIA),如Adobe Flash, Microsoft Silverlight, 与 Sun JavaFX 的需求。

HTML 5 提供了一些新的元素和属性,反映典型的现代用法网站。 其中有些是技术上类似 <div> 和 <span> 标签,但有一定含义,例如 <nav>(网站导航块)和 <footer>。 这种标签将有利于搜索引擎的索引整理、小屏幕装置和视障人士使用。同时为其他浏览要素提供了新的功能,通过一个标准接口,如 <audio> 和 <video> 标记。

这就表明了 HTML5 的目的不是取代 Flash 而是减少浏览器对插件的依奈, 其实就是现有的 HTML 的升级版. 现在HTML 5 的标准还在制定中, 这就产生了一个问题: 比如上面提到的 <audio> 和 <video> 标记. 这两个标记是用来在 HTML 里面插入音频和视频的代码支持的文件格式的标准了. 拿 <video> 来说, <video>使用的 H.264 来作为默认的视频解码标准. H.264 目前 Windows 和 Mac OS X 还有Linux 都是支持了的.

下面是 <video> 的代码格式
<video class='sublime' height='255' poster='http://assets3.jilion.com/05072010142052/images/embed/sublime/video/poster.jpg?1273242047' width='600'>
<source src='' title='http://medias.jilion.com/sublimevideo/dartmoor.mov' type='video/mp4' />
<source src='' title='http://medias.jilion.com/sublimevideo/dartmoor.mp4' type='video/mp4' />
<source src='' title='http://medias.jilion.com/sublimevideo/dartmoor.ogv' type='video/ogg' />
</video>

从现在流出的这个实例代码里面就知道了 <video> 不支持 Flv 的视频的. flv 视频的播放需要通过 Flash Player 插件的支持, 然后调用 Flash 的播放器来播放. 不过可惜的是 Flash 不支持 64位.

当然这个不支持64位的原因还是被一些细心的家伙发现了.其实这个不能怪 Adobe, 要怪就怪 Macromedia 了. Macromedia 为了尽可能的减少 swf 文件的尺寸, 在一部分对象中采用非字节对齐的文件格式. 简单的说, 一部分对象不是以 int/short 这样存储的, 而是以 bit 位这样存储的. 详细的请看这里.

当时 Macromedia 在设计 swf 的时候, 隐含就是假设一个 int=32 位, 根本就没有考虑到会有 64 位的出现. 恐怕 Adobe 也是在收购 Macromedia 以后才发现, Macromedia 原来这么原始. 所以需要 Adobe 要重新编写 Flsah 解析和文件格式的代码的虚拟机才能顺利的拓展成 64 位. 但是从 flex 的 sdk 来看, 我觉得 Adobe 在这个上面还有很多的事情要做.

从 05年 Adobe 收购  Macromedia 开始到现在已经过去5年了 Flash 的版本升级了 3个版本. 64位支持的问题却一直没有解决. 其实 Adobe 在每次升级版本的时候都有一个机会来推出支持 64位的解析器和提供一个文件格式的转换工具的. Adobe 在这方面却没有任何的动作.

按照现在操作系统的发展来看 64 位必然会成为主流的. 128 位的以上的操作系统以后也会出现的. 在64位操作系统上运行 32位程序的效率会比运行 64位的程序还要慢很多. 难道等 128位的系统出来后还要在 128位的系统上面运行 32位的 Flash吗? 难怪 Jobs 要骂 Flash 的运行效率达不到 Apple 的需求了, 因为现在的 Mao OS X 都已经是 64 位的了.

现在 Adobe 却在宣传说 Adobe 爱 Apple. 还不如去做点实质性的动作. 现在我那 64 位的操作系统却要忍受着用 64位浏览器来观看只支持32位的 Flash 插件来播放 flv 视频带来的浏览器崩溃的困扰. 而且这个困扰还不知是 64 位的浏览器.

现在你知道了 HTML5 取代的只是 Flash 视频播放这块应用而已.而不是完全的取代 Flash 的. 不过在动画绘制方面 HTML5 也有威胁到 Flash 的东西,  那就是 HTML5 的 <canvas> .

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

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

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

然而<canvas>也有其缺点:

  1. 开发者不得不编程描绘每一个点和矢量曲线, 在旋转缩放时更需要和矩阵变换打交道, 这会增加描绘复杂图形的难度.
  2. 动画的实现存在缺憾.<canvas>虽然提供了不同于传统的通过 div 块实现动画的方法, 但这种方法仍然非常繁琐.
  3. 没有提供一套方便的事件体系. 开发者也许需要通过捕获鼠标在<canvas>中点击的坐标, 判断用户到底点击了什么图形元素.

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

目前已经出现了基于<canvas>实现的游戏引擎. 但是从效果上看仍然无法与 Flash 媲美.但 WebGL 的提出让我们看到了硬件加速的希望, 这将极大的改进图形显示的速度. 但是目前它只被少数开发版本的浏览器支持.

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

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

不过对于 64位 <canvas> 是不会存在像 Flash 那样的问题的.

Join the Conversation

20 Comments

  1. html5就不说了,完全撇开,这和谁取代flash没关系。什么东东要想取代flash,就如同谷歌想取代微软一样。我希望看到有如同谷歌一样振奋人心的某种力量取代flash,但那很艰难。所以在没有这种力量出现前,还是不要放弃flash的好!不要盲目的去听从业界的靡靡之音。这只是一种技术,而不是方案,用合适的技术实现方案才是正道,因为某种技术被业界某些人数落而转用勉强的技术实现方案,后果可想。

  2. Shota说道:

    现在HTML5的出现,首先我们说说IE 已经被淘汰的IE6它不支持HTML包括IE8 那么微软的windows8出来,我看内部构架包括IE也是要结合HTML5的了,他是网页化的标准,而且前沿的HTML包括更多的标签语句都与HTML4不同,它也取代了很多古老的语言,每一个时代化的标准都在进步包括HTML,HTML是否能真正的达到效果也许这个才是需要考证的吧!

  3. abcjk123.com说道:

    html5就不说了,完全撇开,这和谁取代flash没关系。什么东东要想取代flash,就如同谷歌想取代微软一样。我希望看到有如同谷歌一样振奋人心的某种力量取代flash,但那很艰难。所以在没有这种力量出现前,还是不要放弃flash的好!不要盲目的去听从业界的靡靡之音。这只是一种技术,而不是方案,用合适的技术实现方案才是正道,因为某种技术被业界某些人数落而转用勉强的技术实现方案,后果可想。

  4. 濟川说道:

    老XU,最近换域名了!
    所以麻烦下你也把这的链接换哈,你在我的那整起嘞!
    谢谢哈!
    zhangjichuan.com换成http://www.jichuan.org/
    名字不用改。
    O(∩_∩)O~

  5. Xu.hel说道:

    @濟川: 恩,已经修改了.

  6. 说道:

    牛逼

  7. atrl说道:

    哈。我已经把博主的模板用html5+css3改到typecho了。

  8. 今天又仔细看了一次这篇文字。好不客气的说,MAC仍然是非主流,64位更是非主流。我并非adobe的死忠,但我不认为adobe不提供x86以上更高支援是错误或者失误。这其实是个简单的道理,就好比我们搞了个盒饭三轮车,在工地外卖,我们的主要顾客就是工人,不能为了吸引一个工地老板而将整车的盒饭都改成豪华板的,最多也就是为工地老板特意准备一份,他要赏个脸吃一盒也成,不吃也是个人情。

  9. xuhel说道:

    @恐怖的稀饭大人: Window 7 64位版本不是了吧

  10. 无聊说道:

    呵呵,强悍。。

  11. 安天下说道:

    嘿,俺是技术盲。但是进步是好事~

  12. 濟川说道:

    主題怎加了個最近訪客,漂亮!
    要是顯示的訪客能多點就好了!
    O(∩_∩)O哈哈~

  13. 本座说道:

    我也来看看,期待HTML发展。

  14. 低碳说道:

    搞笑。。。

  15. 酸奶说道:

    老xu越来越强大了耶~~~

  16. 百奥博说道:

    来老xu这学习了。

  17. 九芒说道:

    看了一大遍, 晕, 也没有看到你的博客使用什么技术。

    看这篇文章 , 也没看到什么意思。

    楼主, 你站采用HTML5了吗? 怎么感觉不出来

  18. CzBiX说道:

    @九芒: 你觉得怎样才算使用了HTML5呢。。。要使用支持HTML5的浏览器才能看到HTML5的某些效果,比如这个主题在CSS里所使用的文字阴影,还有GrowlBox(就是右上角的文字框)的显示,在HTML5是渐隐渐显的,而IE里是把DIV缩小(应该是为了兼容IE而特别写的代码)。。.等等。。。

  19. Azaria说道:

    @九芒: 你知道什么是HTML5么?不知道就不要乱说。自己看看页面代码把

  20. @Azaria:
    现在很少写代码了

Leave a comment

Shota进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注