在这里笔者不想刻意褒贬国内的一些Flash网游,只是随意摘取了某Flash游戏GM对某玩家评语的回复,或许就能稍见端倪(玩家具体评了什么,请大家自行从对话中推导)。
事实上,在这里还有一个比较鲜明的对比(好吧,我承认这是我截图的主因),那就是上面某位玩家提到了汉森的《倾城》,这是一款非常罕见的Java(Applet)网游。对比玩家的评论就不难发现,Flash与Java技术的决定性差异,究竟体现在了什么地方。
下图为《倾城》截图:
应该说,相对于适合简单图形应用的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的老路,真真正正的认清形势,抓住机遇吧!
——“不谋全局者,不足谋一域,不谋万世者,不足谋一时”,何去何从,唯智者辨。
(凡署名“IT168”的稿件均为本站原创,请在转载时注明出处及作者。非上述媒体稿件均系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。转载者自负版权等法律责任。)