author: YouYee | publish time: 2010-05-31 02:32:30
从标题就看出来这是一篇附带强烈个人感情色彩的文章,而这个标题所描述的对象就是——Flash。
先从我自己的经历开始介绍吧,从高中开始就接触Flash 5一直到现在,我除了中间中断了接近两年的时间从事JavaScript开发,这七年来几乎都在围着Flash打转。在我毕业前一年,我开始着手JavaScript方面的开发,直到毕业后一年也是一直从事JavaScript开发,期间依旧没有放弃过Flash,只是工作上更加偏重与JavaScript。到09年底,因为工作需要,我又继续回到了Flash开发这个职业角色。
从Flash 5一路走来,Flash给我们开发者带来了一次又一次的惊喜,也带来了一次又一次的失望,我们看到了Flash的进步,但是也看到了Flash的局限和不足。尤其是最近Apple处于自身利益对Flash的批判更加将Flash推到了风头浪尖上,我,做为一个开发者来谈谈自己对Flash的感受吧。
Flash Player作为一个自称能跨浏览器提供体验一致的平台,在很多时候都是被用来呈现图表,用于提供相对于HTML + JavaScript更加丰富体验网页应用程序,比如数据图表和图片编辑等,Flash在大多数情况下都能提供比较好的体验,而且合理的将界面和逻辑分离成SWC与AS,从开发体验上也还算比较合理,在PC平台上,Flash至少在目前而言还是非常好用的。
可是Flash始终就不是万金油,想想开发者用Flash开发RIA的初衷,很多是因为浏览器不能或者很难提供的功能才让Flash进行开发,随着前端程序的架构复杂,Flash很多的自身的问题也一一暴露出来了:
基于插件,说白了,要是浏览器把插件给关掉,Flash就只能等着死。有人会说Ajax也会啊,Ajax不也是基于XMLHttpRequest的么,而这个对象在IE下不也是通过插件么,但是在浏览器下除了使用XHR来实现数据的异步请求还有很多的方法来实现,XHR只是其中的一种手段而已。Adobe之所以发布AIR就是想Flash本身脱离浏览器的束缚,然后AIR的客户端普及问题呢?
莫名其妙的小Bug,距离而言输入法总是在某些浏览器下的某些或者全部wmode下莫名其妙地失效,在Firefox下甚至Flash发出的请求很多时候竟然不带Referrer或者干脆连Cookies也丢了,Bug表面上看不是啥问题,可是对于复杂前端程序,这些足以致命,也就是说Flash并不能像宣称的一样提供跨平台的无差异体验,连在电脑上也无法提供,更不要说在手机上了,Flash可用性很差。
文本能力还是很弱,TextEngine虽然在布局上或多或少的弥补了这个问题,但是实现起来还是非常困难,我们需要将HTML转换成显示对象,这个过程复杂繁琐,不亚于做一个HTML解析器了,与其这样还不如直接用HTML显示在浏览器上来得方便直接。
执行效率是最近一直被诟病的地方,连V8引擎跑JavaScript都和ActionScript 3.0的效率相差无几了。这样的效率怎么能够让大家满足?
不是真正的跨平台技术,面对PC的各个浏览器,Flash依旧存在很多跨平台的问题,在Mac下的Safari连接摄像头甚至都要写特殊的逻辑,让大家赶到都回到JavaScript写屏蔽浏览器差异的时代了。的确这个问题在HTML上更加普遍存在,但是总是有方法可以解决,而Flash很多时候连给你解决的机会都没有,这个时候只能去做产品上的Trade Off!
Apple最近阻止Flash进入iPad,是对Adobe或者说Flash当头一棒,这或许应该让Adobe警醒一下了,Flash的今天不仅仅是Apple为私利导致,其中也有不少的自身原因。没有正视自己的问题,没有去及时修复自己的Bug。
前不久Flash Player放出了Android的版本,可是还是差强人意,糟糕的操作体验使得很多没有经过专门优化的内容几乎无法完成最基本的点击操作,而且耗电量也非常大。
随着版本的更新,Flash IDE越来越臃肿,运行起来越来越慢,我都搞不懂为什么配置那么高的机器跑CS5还是会卡,难道Adobe自己的人就不觉得吗?难道Flash CS5的代码都是很业余的临时工写出的代码吗?Flash Builder 4在设计模式下拖拽的体验也大不如从前,总感觉很多提出的体验Adobe总是做坏了,虽然提供了很多新的功能,但是却开始丢掉了以前一些好的东西这让开发者很懊恼。
随着HTML5和CSS3的普及,Flash的优势将越来越少。而这个时候开发者就会作出新的决策,从而背离Flash的阵营。而Flash的失败不是因为Apple的唆使,也不是因为SilverLight的竞争,最终她还是输给了自己。
PS:当还有人骂Adobe的时候至少还说明大家还没有放弃Flash,等到有一天大家都不骂了,说明Flash就真的退出了互联网的舞台了。