作为HTML5开发者,我来为Flash说句公道话
自从有了HTML5,大家都在就开始说flash的坏话,颇有点有了媳妇忘了娘的感觉。不过这新媳妇到底长啥样,我估计广大关注HTML5,贬低flash的网友们也可能只听过没见过。就算见过人家做的,也没有真正自己摸过,做过,深入探究过。
大家对新技术的热爱和追捧无可厚非,但没有调查就没有发言权,大家一窝蜂的贬低html5的所谓的”竞争对手”flash,我认为有点不太公道。
所以我想在此就我对flash和html5的认识,客观的评论一下他们的关系。
1。批判原因,大家跟风批评flash,恐怕还是源自苹果总裁乔布斯。殊不知,老乔说话都是基于苹果公司的利益(虽然他自己煞有介事的极力否认,但也就骗骗一部分只懂技术不懂市场的技术狂)。
iPhone OS不支持网页FLASH应用,是因为网页Flash应用可以绕开iTunes,绕开苹果苦心设置的垄断围墙,让用户可以从第二个途径合法地获得应用,从而降低了苹果的利润,这是绝对不允许的。但为了掩盖真实目的,回击指责,并且为自己的敛财行为加上一道正面的神圣光环,只能抛出html5。
但细心的你就会说了,HTML5如果取代了flash,垄断不是照样被打破吗?
首先,HTML5取代flash还不知道是猴年马月的事呢,现在html5的功能比起flash还差的远,取代根本无从谈起。而且,html5是由浏览器解释的,也就是说,被解释成什么样,完全由苹果控制主动权,而不是像flash那样基于adobe的虚拟机。所以他们想造成点HTML5在iphone上的缺点进而限制其发展是轻而易举的。
如果有一天苹果又想打击HTML5了,估计肯定会另有理由的。
更多请看:《apple,疯狂的敛财机器!》http://html5cn.net/archives/135.html
2。封闭性。
我想问一下大家,什么叫封闭?
JAVA封闭吗,编译器和虚拟机都是专有技术(当然现在迫于无奈小部分开放了虚拟机源代码),但大家都用的不亦乐乎,也没人批判他封闭。微软封闭吧,你怎么不让他们把windows开源?所以很多时候我们的批判都是片面的,双重标准的。以前有人批判Opera不开源,但Opera CEO说了:“开源不重要, 重要的是开放标准。”flash标准开放吗?AS语言是吗?绝对是的。
但我们看看都是谁在批判flash封闭:苹果(世界上最封闭最自私最崇尚垄断的公司),微软,Opera(我就没见过这么无耻的人,无奈了)。
而HTML5的最热烈实践者、新技术最大的最捧者已经开源的有力支持者:google,怎么就从来没说过flash一句不好呢?以为人家“不作恶”,不会为了自己的利益误导群众,睁着眼说瞎话。所以被误导的不知情围观者们,好好醒醒吧!
adobe已经Flash Player 的核心,ActionScript虚拟机交给了开源组织(详见《flash也要开源了》http://html5cn.net/archives/157.html)(虽然可能也是迫于无奈,但我们当然欢迎flash能一步步走向开放)。
3。效率低。
我们以数据说话(详见《Flash和HTML5效率测试对比》http://html5cn.net/archives/158.html),国外一位开放人员做过HTML5与FLASH的性能测试。在Mac的Safari上,HTML5的效率是FLASH的两倍。在MAC的chrome和firefox上,两者基本相当。Windows下,Flash播放器10.1 的效率比HTML5高58%。由于支持HTML5的浏览器还不多,所以测试的不完全。总体上两者各有优势,在MAC上FLASH落后不少,但大家注意,苹果在Mac上禁止adobe使用其硬件加速,这才是flash落后的主要原因(又是乔布斯的阴谋)。
所以说flash效率低是不公平且无根据的。如果你要说html5的运行还可以优化,那flash就不能优化了?请不要搞双重标准了。
还有一个大家经常忽略的问题,HTML5需要和JS整合使用,而JS是解释型语言,效率势必比AS这种编译型的要低,而且JS代码天生的无法保护,不易加密和混淆,也是HTML5的硬伤。而AS的混淆和防破解现在还是比较成熟的。
4。功能。
据本人自己的不完全不权威的研究,HTML5能做到的功能,flash都能做到。而flash能做到的,有30%的HTML5目前还是做不到的。
如果你用过ActionScript 3.0,你就会知道与简陋的基于对象的弱类型的JavaScript相比,完全面向对象的强类型的AS 3.0是多么好用,多么新潮,效率多么高。
如果你要说HTML5有一天能在功能上超越flash,这也是有可能的,前提是adobe放弃flash,不再进行升级维护,而巧合HTML5忽然出现大量的开发人员,短时间内贡献出大量的类库和开源框架。我们确实不能否定这种事的概率。
5。专有性
HTML5和flash都是开放标准的,但区别在于一个运行于广大浏览器的平台上,一个运行在adobe提供的平台上。
或者说,flash是专有的。但专有真的是一种坏处吗。HTML5的标准是各种浏览器厂商自己定的,很容易产生兼容性问题(或者说一定会),这就为开发人员带来巨大的麻烦。而专有的技术就不会,可以完美兼容各种平台。
就像JAVA技术一样,如果当年SUN公司把虚拟机的开发交出去,那JAVA“一次编译,到处运行”的理念可能只能是口号吧。(由于现在JAVA虚拟机的开源,和手机平台SDK的不专有,JAVA正在面临这种危机)开源带来的负面效应就是版本泛滥,未来的浏览器恐怕还是会出现很多不同版本的 ASVM,这是开发者很不愿意看到的。
所以,我们不必总是想万一哪天adobe发神经不让我们用flash了怎么办这种事来批评专有平台,真不知道到底是谁发神经。
我承认flash有很多的不足,特别是在移动设备上有很多问题,而且我也不是flash技术的追捧者。但至少在目前来讲,flash在很大程度上还是无可替代的。flash的各种缺点似乎也不是致命的缺陷。而且我们也要给adobe进步的机会,我们可以看到flash player发展到第10版,每次都有令人叹服的飞跃。
我所发表的都是我自以为公道的评论,但本人才疏学浅,有失公道的地方,欢迎各位拍砖。如果言辞中过度偏袒flash,也只是对目前贬低flash观点的平衡罢了。