Flash恐惧症

我发现我在开发上对Flash有恐惧症。Flash/Flex现在作为不可多的的RIA应用的开发平台,有着许多优势。但是我总是排斥使用Flash/Flex。虽然我在Flash5/MX的时代也做过些动画,那个时候还没有成形的ActionScript,还要用telltarget,Flash也并非开放标准的。当时能用Flash做RIA应用是非常了不起的,因为那个时候没有Flex这种套件框架,也没有适用的IDE,虽然我也很想尝试用Flash做一个社区,但是后来失败了。再后来我就再也没有碰过Flash。

然而我倒并不排斥Flash应用,包括AIR,我觉得很多优秀的应用用起来非常不错。究竟是什么令我在开发上如此排斥Flash呢?我仔细分析了一下,想到以下问题:

当时Flash不是开放的。当时Flash只能使用Macromedia Flash来制作,几乎没有其他够用的工具(我记得有个Swiss)。随着Flash的标准开放,现在情况改变了,有不少的第三方工具。不过因为当时Flash的不开放,让我错过了。

当时Flash在其他平台上的支持非常差。当然,现在已经好很多了。不过即使现在,Flash在Linux下的实现还是有些问题,CPU占用率非常高。Flash曾经是没有Linux开发工具的,现在也没有多少,当然后来Adobe推出了Flex for Linux,结果最近看一则新闻说因为Flex for Linux用得太少,所以Adobe要停止维护Flex for Linux了。这样看来,如果要跨平台,无论是开发时还是运行时,Flash比起html+js还是差一些。

过去Flash主要作为动画来使用,文件非常庞大,那时候也很少使用动态加载。现在用Flex做客户端应用非常方便,但是Flex相对于HTML来说,还是过于庞大。同样的,Flex开发套件也太庞大了,尤其是如果把Java也算进去的话。而我使用HTML/JS可以需要用文本编辑器和一个浏览器。

Flash并非事实上的标准,网站可以不使用Flash,却不能不使用HTML。现在主流的浏览器,都支持JavaScript,却不一定有Flash。

其实我认为我害怕使用Flash最关键的是在于我在开发上的思维转变,过去我很喜欢很酷很眩的特效,觉得有了这些东西,程序肯定就很牛B。但后来我意识到这种想法是幼稚的,这些特效都是浮云,要先抓住问题本质,要去掉这些复杂的外观,直接呈现内容。而如果不需要特效,Flash比起html + js就没有明显的优势了,而我更喜欢html+js的简洁快速。

~~~~~~~~~~~~~~~~~~~~~~~~

Flash作为RIA,目前是如日中天,AIR也是相当流行,但实际上是杀机四伏。

微软也推出了Silverlight与Flash直面竞争。

由于JavaScript的发展,各种JavaScript特效框架的出现,过去需要使用Flash才能实现的很多特效现在可以直接使用js实现,直接消除了一部分对于Flash的需求。

JavaScript的一些工具包,也能实现很多窗体控件,使开发简单,如extjs dojo jquery-ui等,除了IDE上支持不够。这对于Flash的Flex框架也是一种威胁。

Adobe的AIR还比较聪明,没有完全把赌注押在Flash上,兼容了html+js的开发,Mozilla已经推出了Prism来竞争,而Prism的最强大的地方莫过于既有的Web应用可以直接运行在Prism上。

其实对Flash最大的威胁来自于HTML5:

  • 过去JavaScript一直有跨域的问题,而且对长连接支持有些问题,HTML5中的Websocket为Ajax提供了更强大的通讯能力,Flash的优势又进一步减弱了。
  • 利用HTML5中canvas,JavaScript就可以进行高速的2D图形绘制,这也是抢了Flash的市场。
  • HTML5支持离线存储Dom Stoarge,Flash的又一个特性被直接支持

以上这些标准组件在某些浏览器中已经被支持了,Flash对于浏览器毕竟只是第三方支持,但是HTML5的这些东西将来可都是直接在浏览器核心中的。

我想还有一个不得不提的就是3D了,Flash现在也可以实现3D,但是Flash的3D效果只能算普通,效率也比较低,做复杂的3D应用是不适合的。在这方面,Java Applet却可以调用OpenGL,效率就不在同一个层次上了。而最近Google为Chrome推出的o3d,也是Flash强劲的对手。

所以,我觉得Flash未来的好日子有限。

“Flash恐惧症”的7个回复

  1. 有同感。Flash AS当初的IDE界面相当难用,现在随着js的执行效果被越来越多人重视,更过的特性会被加入web标准,到时候浏览器本身就会支持各种特效。而flash这种过渡型的东西可能最终也就完成了自己的历史使命。

  2. 别忘了,Adobe也在不断的发展中!另外,linux下的FF执行swf性能很差么?JavaScript的一些工具包,jquery会让你不知道js到底怎么写,因为它的封装。html + js的简捷快速,实验下在dom解析N兆的XML,看看其性能。

  3. @rosen jiang
    Linux下的swf性能是很差,至少我这儿就是。
    而且我这里没有只说用jquery,同样也有做Flash动画但是不会用AS的人
    DOM本身就不适合解析大XML文件,大的应该用流式解析器如SAX。

    当然,讨厌使用Flash只是我个人偏好,我觉得Flash也是有生命力的。

  4. 呵呵,作为Flash从业者,我自己是很反对使用flash做前端开发所有类型网站应用的。
    Flash有自己的强项,突出在视频、交互上。所以游戏、视频网站、播放器才是它应该做的。如果网站仅仅是作为产品展示、宣传,使用flash技术也无妨。
    个人觉得,每一项技术能存活下来都是值得令人尊敬的,也自有其生存之道。作为程序员我觉得我们需要的是,选择合适的技术去完成需求而已。

发表评论

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