有了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 技术所取代一样,新技术体系的出现,永远是旧有技术体系所无法回避的恐怖梦魇。

 

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

 

诚然,现今的 Flash 比之当初改进了很多, Adobe 将它变得比以前更完善(他们干脆重写了 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 的逐渐普及,当你通过一个 <video> 标签就可以播放高清网络视频,当你通过一个 <canvas> 标签就可以渲染出相当靓丽的网页动画,当 WebGL 让你网页硬件加速,运行出不次于《魔兽世界》的 3D 效果,当 WebSQL 让你在浏览器中保存数据就像操作桌面应用那么简单,当 WebSocket 轻而易举地实现浏览器与服务器端通讯之际,谁还会关心什么 swf ,谁还会记得什么 Flash

 

Ext3.0 提供的 <video> 标记应用效果:

00

Web3D 效果:

 

 

00

 

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

 

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

 

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

 

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

 

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

 

正如有声电视机取代无声电视,电话机取代传声筒一样,让你在一台免费的 PS3 ,一台免费的 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 开发,试问哪家游戏公司既能做出这样的即时战斗效果,又不被活活卡死?谁敢说这样的话?!

 

 

00  

 

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

 

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

 

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

 

在这里笔者不想刻意褒贬国内的一些 Flash 网游,只是随意摘取了某 Flash 游戏 GM 对某玩家评语的回复,或许就能稍见端倪(玩家具体评了什么,请大家自行从对话中推导)

 

 

00

 

事实上,在这里还有一个比较鲜明的对比(好吧,我承认这是我截图的主因),那就是上面某位玩家提到了汉森的《倾城》,这是一款非常罕见的 Java Applet )网游。对比玩家的评论就不难发现, Flash Java 技术的决定性差异,究竟体现在了什么地方。

 

下图为《倾城》截图:

 

 

00

 

应该说,相对于适合简单图形应用的 Flash 而言, Applet (含 JavaFX )截然相反,它庞大的类库与体积并不适应于很多需要快速加载的场合,以致某些人初次运行时会觉得它很慢。但是,只要加载过一次的应用, Applet (含 JavaFX )都将自动建立其相关缓存,直到你修改相关应用并重新发布之前, Applet 都不会再有重复下载的行为出现。

 

也就是说, Applet 的慢仅仅局限于首次运行,而后便没有了那种烦恼。而 Java 本身固有的丰富支持库,以及超级强悍的网络通讯功能,更加不是 Flash 所能比拟的(更极端的讲, Java 逼急了能上 JNI Flash 怎么办?)。可以这样说,越复杂的游戏,对于 Java 就越是得心应手,越是复杂的应用,对于 Java 就越是驾轻就熟(类似于 Sun 公司的奇异特性,复杂的事简单,简单的事复杂……)。

 

Flash 的小巧、简单,却在这时变成了缺点,因为类库的不完备,你必须亲自开发大量的程序模块,才可能让它正常运行在诸如网游这样复杂的环境中;因为性能的不到位,你必须自行处理海量的图形资源,斤斤计较于某个对象的释放与否,才能保证程序不会突然静止不动。而即便你全部处理了这些,以 Flash 的固有能力来看,应用的稳定性将依旧欠佳,哪怕画面再好,只要稍微运行久些,迟早都原形毕露,该卡则卡,该崩则崩,该死则死。

 

更何况,一旦在 Java 中使用了 OpenGL ,那么即便是画面效果这个 Flash 中唯一的优点,也将不复存在。

 

比如 Java 网游中大名鼎鼎的 RuneScape http://www.runescape.com/ ),可以在网页前端高效运行 3D 游戏,却没有一丝一毫的延迟停顿。而在 Flash 网游的世界里,又有什么能和它比肩的 3D 应用(不卡的 3D 人物打斗示例都算)吗?如果有的话,麻烦哪位给个链接我看。

 

事实上,假如 Sun 最初就能像 JRE1.6 以后版本那样大幅度的提高图形运算速度,或者将 DirectX OpenGL 调用更方便的绑定(直接提供 API )在 JDK 当中的话,现在网页游戏的开发主流或许将是 Applet 甚至 JavaFX 了。

 

正因为 Sun 最初的不作为,才直接导致了后来许多人关于 Java 性能的误解与迷茫,造成了人们对 Java 性能“低劣”这种陈芝麻烂谷子的刻板印象,最终导致了很多人误上 Flash 的“贼船”。(最可气的是,因为 Sun 的行动过于缓慢,现今虽然有了 JOGL 之类的拓展应用,但很多搞 Java 的已然变得不会用 OpenGL 了……)

 

——古人云“观古今之成败,能先见事机者,则恒受其福”,诚不我欺。

 

伴随 HTML5 的普及以及 Java 性能的逐渐提升, Flash 在前端的领先优势将不复存在,网页低端与高端应用将会产生分流,未来 Applet/JavaFx Silverlight 究竟谁主沉浮,始终还是未知之数,希望 Oracle 不要再走 Sun 的老路,真真正正的认清形势,抓住机遇吧!

 

随着 Java 性能的提升,也渐渐有中国网友会用 Java 制作一些简单的桌面游戏:

 

http://blog.csdn.net/Kylixs/archive/2009/12/02/4922698.aspx

 

 

00  

 

甚至在校生的毕设都会利用 Java 开发游戏王联机对战版(据作者声称,此游戏将有 3D 战斗效果):

 

http://bbs.duowan.com/thread-15633573-1-1.html

 

 

00

 

 

 

  “不谋全局者,不足谋一域,不谋万世者,不足谋一时”,何去何从,唯智者辨。

阅读更多

Symbian 还能多远?

07-20

学的时间不长,应用做过一个.rnrn比较现有的几个智能手机。rnrniPhone: 类 Unix 系统,而且 MacOS 软件走过来多少年了,从基本的办公软件,上网工具(Safari) 到最新的 3D 引擎;rnAndroid:类 Unix 系统,开源,而且3G时代的到来,有N多Google的互联网服务支持;rnWindows Mobile: 这个MS系列的,最大的好处就是API基本和现有的Windows 兼容,强大开发工具支持(强大的地方是使用者暴多),这样最大的好处就是很多Windows 程序可以较快的移植。rnrnrn在工具方面:rnrn反观 Symbian 有什么,什么都要移植,因为不是类 unix 系统,C语言的代码都无法编译通过;C++更不用提。想用boost库,想用perl,想用shell,想用 python,没有什么现有的能用。OpenGL出2.0了,iPhone, Android 和 Windows Mobile 只要拿去编译一个,更新到对应的显示芯片。rnrn别的手机没见过,比较了iPhone 和 S60 V3 的游戏,根出就不是一个级别的。rnrnSymbian 要做的是什么,移植。rnrnrn兼容性方面:rnWindows:不说了,兼容性做的一级棒。把Window98的Exe放到WinXP上还能跑,API还是一样。一些基础的MFC程序(没有用到驱动一层的东西)还可以向下兼容, Windows 开发好,Linux 能用。rnrnAndroid:unix 系统一般受 gcc 和 std 等升级因素 重新编译后可用;rnrnMac: 不清楚,高手补充;rnrnSymbian: 才做这么几年,就N个版本不兼容,想直接在V3上运行V2的sis,做梦吧你。那我重新编译一个就行了吧,直接编译不行,还得补上很多 ifdef,只能说一开始设计的烂。rnrn最后个人感觉:Symbian 连自己分配的局部变量,都要自己去压栈和出栈,这就是用 C++ 语法在开发汇编代码,比汇编做的好的地方就是一出来的时候就统一了编码规则。rnrnSymbain给的理由就是CPU慢,内存少,别扯了,用单片机都能使用C51还写,不用自己压栈和出栈,S3C2401B我们直接跑一些嵌入式应用都可以用C++来写。没听说还要什么 NewLC之类。rnrnrn特别是智能机这一块,随着iPhone, Android, Windows Mobile 的大举进攻,只要Nokia倒下,Symbian 就会从地球上消失。rnrn没有一个手机能独霸天下N年,想当年 Motolora 也没有牛很久。 Nokia 最新的财务报表出来了,利润下滑60%多。rnrnrn以上个人的一些肤浅的看法,在大师们面前班门弄斧了。本人能力有限,有错误的地方劳烦指正,但请不要人身和地域攻击。谢谢配合!

没有更多推荐了,返回首页