HTML5 真能代替 Flash 吗?
程序员文章站
2022-05-12 12:07:02
...
回复内容:
从长远来看,HTML5会挤占Flash大部分的市场,但Flash主要是在游戏开发方面还是会有一块生存空间。- 功能上:现代浏览器正在迅速地拓展javascript的应用范围: 原生的视频/音频API,2D绘图有Canvas,3D有WebGL,即时通信有WebSockets,还有Local Storage。正在讨论并有可能会在将来加入标准的API还有Geolocation(地理位置),File API(更强大的上/下传),WebStorage(加强版cookie),甚至还有本地文件处理能力等。Flash现阶段在功能已经没有太大优势可言,作为流媒体解决方案暂时还有一席之地,但浏览器原生API普及之后被取代是迟早的事情。在数据存储和本地操作方面,由于是一个插件,更是受到各种安全性的制约。 (这里基于web,不讨论Air)
- 性能上:曾经Flash在整体性能上具有明显优势,AS3是编译语言,在虚拟机上运行效率比当年的javascript要快很多。但是现在各大浏览器都注重了javascript引擎的优化,尤其是Chrome的V8,单纯在代码运行的效率上已经和AS3并驾齐驱。但是在2D动画上,Flash的优势依然明显,即使是在Chrome上,平均fps依然要比canvas高出一截。另外Flash本身的IDE对矢量图的支持也是Canvas所不具备的。从这一点来看,Flash在依赖大量2D图像的游戏上仍然保持着绝对优势。3D方面,Flash Player通过Molehill API获得了GPU支持,而WebGL也是直接调用GPU的,性能上没有太大差别,主要是开发上API和第三方3D引擎的比较,这方面Flash显然更为成熟,但js正迎头赶上。
- 语言上:AS3本身是从ECMAScript(也就是javascript的ISO标准的正式名称)拓展出来的,但是提供了更完善的类型支持,风格上变得更接近于java,在复杂的OO项目上要比js更容易管理。Javascript本身是一个很独特的语言,兼具OOP, imperative和functional的风格,但是对类型的支持很弱(prototype-based),这使得用js开发复杂的项目比较麻烦,但是近来随着js的升温,各种针对js的design pattern和模块化js库相继出现,借助它们也可以有效的加强js代码的结构性。另外需要指出的是js现在的应用范围已经远远超越了浏览器内部,Node.js提供了一个基于V8引擎的js运行环境,使得js可以用来作为服务器语言,也可以用来写各种命令行工具。其他也有如MongoDB就是使用js的数据库。javascript的未来应用前景要比AS3广泛的多。
- 平台支持上:Flash是嵌入型的,只要能运行,那么在它本身的虚拟机内就不存在兼容性的问题,只存在版本的问题;而Flash Player的版本更新adopt rate向来是非常高的。这一点上对开发者而言少了很多麻烦。HTML5最令人头痛的就是参差不齐的浏览器兼容性,这也是现阶段HTML5最大的硬伤。但是HTML5在平台上也有一个明显优势,那就是越来越重要的移动平台上,HTML5的支持情况要好很多很多(iOS支持几乎所有的HTML5 API和CSS3属性,而大多数移动浏览器都是HTML5支持良好的webkit内核),相比之下Flash在iOS上直接出局,也是一个硬伤。从长远来看,HTML5还是绝对赢家,因为浏览器支持度只会越来越好,而移动平台上Flash已经没有竞争力,Adobe最近已经宣布停止了移动平台上Flash Player的继续开发。
- 额外一点:在相当多的大型企业内部,都有很多昂贵的内部专用的网络应用,因为开发年代久远,都是针对IE6开发的,一旦不用IE6就要出问题。更新浏览器意味着要替换这些应用,耗费会很大,加上这些企业的管理层不懂技术,往往不愿意这么做。而开发新应用的时候,开发者就必须要针对IE6开发,这就给了Flex应用一个独特的生存空间:在IE6里也可以提供丰富的界面和复杂的功能要求。不过这一点随着时间的推移,迟早也是要不成立的。
下面是六千多图元时的弹簧布局效果,背后界面是十万图元拓扑图渲染
优酷视频:
基于HTML5的拓扑图 - 十万图元流畅展示 http://v.youku.com/v_show/id_XNzI1NDc2NzQ0.html
我感觉flash肯定会慢慢没落的,因为adobe现在的投资基本已经不在flash上面。而HTML5也肯定会发展,以后还会有HTML6,JS2之类。有一天,会被替代的。当前,还没完全替代。 如果未来的互联网是基于“云+终端”构架,那么Html5或类似Html5的终端兼容解决方案必然会出现。Html5出现的最大意义也在于此,开发者不需要为iOS平台和Android平台重复开发应用,Html5提供一个统一的解决方案。
-----------------------------------------------------
好像跑题了。。。 哈哈
好吧,再补充一下Html5和Flash的比较。 Flash的效率和通用性很成问题,这尤其体现在移动终端上面。对于用户来说,不用每次安装完系统、浏览器后还要装个Flash插件。也不需要忍受浏览器老崩溃的情况;对于Flash开发者固然不是什么好消息,不过现在学习还来得及。。。 而传统的Web开发者的春天就来了,Html5可以让他们可以写出和桌面软件一样强大无比的应用,而且所有平台通吃。 我adobe的同事,已经证实了,adobe放弃flash转向HTML5了,再辩论这个问题还有意义么? 不能,主要是在游戏方面。
或许将来出来替代flash的技术,但肯定不会是HTML5。 不能,就如同Flash不应替代HTML5一样
各司其职是硬道理。 不能
- 这两个技术覆盖的面不是100%重合的。flash平台有其独到的应用领域。
- HTML5本身和周边的发展还很不充分,现在提出这个问题其实还没有什么现实意义。
- 当然HTML5对Flash生存空间的挤压也是理所当然的。
- 技术的优劣不仅限于技术本身,跟大企业支持度,现有市场份额等均有很大关系,而人为因素有时也会起到决定作用。
HTML5文档在iPhone、iPad、Android手机/平板和现代浏览器上的显示效果是一样的;采用HTML5技术之后,文档加载速度提升30%,文件体积减小40%;HTML5具有语义性,方便Google爬虫等程序分析、收录。自己想吧。。。 就说一条:对于在各种操作系统平台、浏览器视觉呈现的一致性,Flash 比 HTML5 方便不是一点点。