有了HTML5,Flash还能走多远?

谈到Flash能走多远的问题时,我们不得不先聊聊作为Flash前辈的Applet。

所以要提它,是因为人类历史上第一个运行在浏览器之上的交互式应用,本来就是Java小程序,而非什么Flash。

早在1995年之初,当Gosling和Gage在WebRunner浏览器(即日后的HotJava浏览器)上展示3D分子模型之际,人们对Java的第一印象就是“这是种可以将静态网页变成动态的语言”,而并非这是种“开发手机应用的语言”或者这是种“开发企业级应用的语言”。

直言不讳的说,自从Java与Applet诞生之初,直到2000年Flash5出现以前,Java和Applet一直都是网站动态效果实现的首选媒介(尤其是网络教学)。而在此以前的Flash还算不得主流,登不得台面。

为什么Java(Applet)会变得不如Flash普及?

关于这点,抛开WindowsXP后期版本不再内置JVM的影响不谈,应该说同Sun高层的愚蠢无能,以及Macromedia高层的下作龌龊不无关系(某个时期的Flash真的就像流氓软件一样,不经过任何预警便自行安装,也没有必要的砂箱保护,什么都能运行)。

正是这群墨守陈规,不思进取,被Java技术所带来的惊天财富冲昏了头脑(2000-2001年Sun最兴盛时,股票峰值曾达258.75美元/股,公司估价超过2000亿美金),对技术趋势把握犹如童蒙的Sun高层,最终葬送了Java在网页乃至桌面领域的大好河山。

要知道,当时的Applet虽然有着相当完善的Java类库支持,并有稳妥的砂箱机制保证程序安全,但运行速度却异常缓慢(特指JRE1.0-1.3),运行界面也远没有Flash那么鲜艳友好,已经变得渐渐无法适应越来越复杂的网络展示需求,业界甚至开始出现关于Java与Applet的不利消息。

更关键的是,假如当时没有Macromedia的Flash,或者Flash根本就是个连Applet也不如的垃圾那还好说。可偏偏,偏偏Flash在界面效果与运行速度方面都远胜于当时的Applet!而这群理应在脸上被刻下S13星烙印的Sun高层,不单在不必要的时刻过早地与微软决裂,甚至还对Flash这样新兴技术的威胁无动于衷!

他们即不想办法走正道完善自己的Java与Applet体系,又不会运用邪道将Flash挤出市场,既没能预见到网页前端市场中蕴含的巨大商机,更无法适时的调整公司经营战略寻求新的Java赢利模式,任凭别人风生水起,自己却只管悠哉游哉的数着因股价飞涨而带来的绿色钞票。

——此辈若能成事,岂有天理乎!

事后的结果证明,相对于系统内置,小巧灵活,并有足够强大图形编辑工具支持的Flash。原有的Applet技术显得臃肿、缓慢、不易开发,甚至没有一款拿得出手的图形编辑器。

要知道,在IT领域中按资排辈这种事情根本就不曾有过。即使几十年的老店,也很可能会被某个车库中诞生的新生公司打的体无完肤。

更何况,在那些愚不可及的Sun高层眼里,网页前端甚至桌面市场或许本就是一盘可有可无的生意,赢了没什么不好,输了也不可惜。毕竟Applet只是Java功能中的一小部分,Sun有SPARC、Solaris、Java这三大法宝,即便Java中舍弃了Applet,依然有大把本钱,根本不必在意。

很明显,当时的Sun高层,对于“占领桌面,跳进口袋”这样的经营理念还缺乏认知。假如他们明白,那么无论Applet/AWT/Swing也好,J2ME也罢,也决计不会是今天这种地位。

此消彼长下,Flash的兴起与Applet的堕落几乎都成了必然,越来越多的开发者投向Flash阵营,最终导致了今天Flash的兴起与Java(Applet/AWT/Swing)在网页前端领域的没落。

在新的时代里,伴随HTML5的逐渐普及,网页技术的大洗牌时代将会再次来临。

正所谓“长江后浪推前浪,前浪死在沙滩上”,就像当时的Applet技术,会被更先进,更进取(也更流氓)的Flash技术所取代一样,新技术体系的出现,永远是旧有技术体系所无法回避的恐怖梦魇。

——就连Abode公司与Flash也无法逃避这种规律。

诚然,现今的Flash比之当初改进了很多,Abode将它变得比以前更完善(他们干脆重写了Flash核心),除了原有的小动画、小广告、小游戏之外,Flex的出现让J2EE或其它技术体系能够利用Flash开发商业应用,ActionScript脚本让死硬技术派们可以直接编写出Flash程序而不必拖拽界面。小到AV视频展示,大到网络游戏应用,几乎到处都可以见到Flash的踪影,Flash简直成了RIA的代名词。

无论实际怎样,在当今这个时代里,“够快、够简、够普及”早已成了人们对Flash技术的潜在共识。

——然而,这些印象恐怕也只能维系到HTML5普及以前。

没错,HTML5标准的出现,将彻底颠覆现有的网页前端生态体系。

因为HTML5的诞生,很大程度上就来源于浏览器厂商们对于网页前端技术需求的反思。干脆点说,根本就是对于Flash大红大紫的一种醒悟。

在这里,我们姑且将其想象为一场阴谋,一场“HTML5”诡计。

在某个阴暗偏弊的房间里,业界的大佬们,或许曾经进行过类似这样的讨论“既然Flash用几MB的支持库就可以在浏览器上实现的功能,难道我们这些平台(浏览器)就做不到吗?既然是人人都要用到的功能,我们又为什么非要通过Flash进行中转实现呢?既然现在大家都需要这些功能,并且寻求更好的用户体验,干嘛不将它们绕过Flash,直接内置到浏览器中,以换取既快且稳的效果呢?!”

这些人大概会达成这样一种共识,那就是Flash很牛,牛到了几乎没它不成。可长此以往,兄弟们恐怕也都没得混了。所以,只好委屈Flash先走一步吧!

正如站在汽车上跑步,无论跑得再快,始终跑不过汽车一样。任凭Flash的UI再漂亮、制作再简便、运行速度再快,它又该如何超越它所在的浏览器平台本身?如何摆脱这群大佬巨鳄的魔掌呢?

事实上,HTML5所提供的API标准,彻底克制于Flash之上。一旦标准普及,毫无悬念的,HTML5将秒杀Flash。

可以设想一下,随着HTML5的逐渐普及,当你通过一个

Ext3.0提供的

Web3D效果:

不客气地讲,当HTML5真正普及之日,Flash的优点都将变得不能再称为优点,而它的缺点却会开始凸现得越来越严重。

所有依靠Flash,特别是依靠Flash在网页方面养家糊口的同仁们,我劝大家千万不要相信那个关于HTML5要到2022年才会正式实施的传闻,误以为还有很长的周期让Abode改进技术甚至相信自己能在此前就熬到主管级别。

只要稍微看看最近Chrome、FireFox的更新趋势,乃至未来的IE9规划,你立刻就会发现,它们会等你到2022吗?绝对不会!不到2015年,HTML5就已经是各个浏览器的事实标准了。

看到这里,你或许会说:“胡说!Flash可不只是那么一点功能,况且现在有那么多的Flash应用,难道都能轻易舍弃吗?兼容性问题你都解决了吗?”

——没错,原有的Flash功能,就是会被人们所遗忘舍弃。

正如有声电视机取代无声电视,电话机取代传声筒一样,让你在一台免费的PSP3,一台免费的Xbox中抉择你想要哪台主机,你可能很难下决定。然而,如果换成一台是免费的小霸王,一台是白来的Xbox间抉择,该搬哪台回家,肯定不用笔者去教。

即便网络上有97%的网站在使用Flash,即便网络上有数不清的Flash/Flex应用存在,一旦更简便、更快捷、更高效的HTML5标准普及,这些都会变得毫无意义。

毕竟新近的开发者们决不会选择一种低效、缓慢、过时、并且可以被替代的技术作为自己的开发语言。

到了这时,就算你给地球上60多亿人口每人配备一个Flash应用,这60亿也将成为一个永远不会增加的死数,也就是Flash的极限。而人有寿命,网站同样也有寿命,即便某些死硬派不愿放弃,即便某些死硬网站不改初衷,他们也只能维系自己这点地盘,却丝毫影响不了别人的选择。最终,他们不是被别人吞并,就是自己也改弦更张,至多是死抱着Flash直到寿终正寝,但无论如何,迟早都是同样的下场。

谈到这里时,我希望大家不要忘记,当初Netscape的市场占有率有多少,现在又有多少?更加不要忘记,当初Applet在网页前端应用的市场占有率有多高,现在又有多高?

假如他们的被取代大家都能想通,到了Flash被取代时,我们会再犯糊涂吗?不会。

——应该说,只要未来普及了HTML5,Flash回老家结婚就是注定的。

或者你还会想,如果低端走不通,那么我就走中高端,让Flash继续增加HTML5所不具备的特性,毕竟Flash10以后的安装文件也有10多MB了,所谓“虱子多了不咬,债多了不愁”,再加点也没什么,自然有人会用。

嗯,没错,如果Abode继续复杂化Flash功能,并能够完成那些HTML5所无法实现的复杂应用固然很好。

——但是,您是不是忘了点什么,真以为Java和C#都是摆设不成?

Applet/Javafx,Silverlight这些现成的网页前端应用解决方案是摆着好看的吗?Oracle、Microsoft在复杂应用,尤其是企业级应用上是吃素的吗?莫非Flash开发者就真的集体空闲到会用N多年来逐一重复开发轮子,然后再做项目?莫非有现成的一体化解决方案不用,资方还非要用你的Flash前台,微软或甲骨文的后台?即便你一口咬定Flash开发就是简单,但这时已经有了更简便的HTML5可用(甚至连swf的加载都省了),你又何苦自残呢?照此发展下去,就算开始时真有几个想不开的,可一旦做HTML5的渐渐多了,傻子始终会不够用的……

就在此刻,只要你去下载最新版本的Chrome,稍微尝试下HTML5即将带来的全新功能,你就会发现,以前看上去那么短小精悍的swf文件,曾几何时,怎么就变得这样臃肿没用了呢?!以前那么艳丽生动的Flash动画,曾几何时,怎么就变得这样繁琐呆滞了呢?!

——我们应该清楚的看到,HTML5的出现,并不仅是一场技术革新,更是一场业界洗牌!它将彻底破坏现有网页前端技术的游戏规则,将Flash打入万劫不复之地!

再者,这么多年来Flash普及甚广,吃这碗饭的人不在少数。而反过来说,Flash程序员品质参差不齐,技术有高有低,被人利用Flash中马,被人利用Flash盗取个人信息者更不在少数,对Flash深恶痛绝者也不在少数。

且不提乔布斯这样痛骂Flash的业界领军人物,单单是你我这样的普通技术人员,又有几个从没有被网站上的Flash广告搞的页面崩溃,又有几个没有安装过FlashBlock的呢?

有些Flash开发人员看到此处或许会心有不甘,但至少在网页前端领域,Flash的衰落已不可避免,并非你我这样的凡夫俗子所能干预影响。

在这里,就让我们提前说一句:“Flash你好,Flash再见”吧!

Flash不成了,Applet/JavaFx,Silverlight还能有什么作为?

此刻,我们回头去看Applet,就会发现到它已然错过了一场本该属于它的技术革命,错过了一场本可以大赚特赚的饕餮盛宴。

假如当时的Sun管理者有幸穿越时间隧道到现今看看,并且活着回去。我想Macromedia的下场无非两个,要么被Sun收购,要么就是被Sun打的连北都找不到了。

更直接的讲,如果当时的Sun高层来到今天,看到JavaFX这种“后知后觉”的网页前端技术,看到JDK1.6这种“迟到”的性能改进,甚至捎带手将Android的做法也学习一下,并且在那个时代就付诸实践的话,还有什么Flash/Flex?哪来什么Silverlight?Java早该“千秋万载,一统江湖”了。

——但当时又有几个人能想到,网页前端市场会发展到如今这样白热化的地步呢?

历史不允许假设,穿越的事情更是“可求而不可遇”,我们所面对的,是一个Macromedia被Abode收购,Sun被Oracle收购的时代,也是一个HTML5即将渐渐普及的时代。

放眼当今,即便Flash真如笔者所言即将成为明日黄花,抛开有微软银弹力挺的Silverlight不谈,莫非连Applet/JavaFx这路“古董货”也会有所作为吗?

——笔者认为是可能的。

事实上,任何了解Flash的人都知道,Flash是很简单,很快捷,很高效没错。

但是,这也仅仅局限于简单的动画效果,或者说仅仅局限于一些比较简单的业务实现当中。

——任何一位有经验的Flash程序员,即便你有多爱Flash,恐怕也很难讲出ActionScript是一门设计完善,性能卓越的语言吧?

以Flash开发诸如偷菜、调教秘书的小游戏,抑或制作个上传下载的简单界面确实又快又好。但轮到真正复杂的应用时,譬如让你用它开发个3D的《魔兽世界》(仅指模拟效果),甚至要求再低些,让你去搞个《传奇》级别的网游,就根本不是那么一回事了。

而Java方面,我们都知道如蓝港在线之类的国内公司,在很早以前就率先尝试过利用Java技术开发过诸如《倚天剑与屠龙刀》之类的2.5D即时战斗类游戏,现今该公司所开发的《西游记》也依旧延续了这一体系。但假如我们将它转换为Flash,而非Java开发,试问哪家游戏公司既能做出这样的即时战斗效果,又不被活活卡死?谁敢说这样的话?!

你或许会说这只是个桌面应用,那我们就单说网页游戏,我们都很清楚现在国内有不少尝试用Flash开发网页游戏的公司,更有不少Flash开发者对于《黑暗契约》之类的国外网页游戏津津乐道。

但是,当你望着屏幕上每次过屏都反复下载的各种模块时,当你望着相互PK却突然静止不动或者模糊不清的画面时,当你望着稍不留神就会CPU占用达到100%,直到被敌人杀死也未必会再动的游戏时,你除了选择清空缓存永不再玩,还能干些什么呢?

事实上,即便Flash网页游戏如同雨后春笋般发展到今天,笔者始终没有见过一款哪怕是“不太卡”的ARPG游戏,甚至于连续玩上一段后不用刷新重进的RPG类也很少见。否则,笔者也不会在某Flash网游中白投了数百元去刷金龙蛋、凤凰卵,却最终选择不玩了事了。