功能上:现代浏览器正在迅速地拓展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图形组件优化,实现基于canvas的拓扑图,上万图元流畅操作,可导出两亿像素的大图,图形渲染能力已经将flex, silverlight抛到脑后了,actionscript效率低就不说了,现在连flash拿手的2d图形也落了下风,被替代是自然的事
下面是六千多图元时的弹簧布局效果,背后界面是十万图元拓扑图渲染
优酷视频:
基于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 方便不是一点点。
