Flash与开放Web的应用开发平台之争

开发 后端
现在新Web应用开发平台不穷,加之各个技术厂商不遗余力的宣传自家技术的优势,对开发者来说,现在创建富体验Web应用时,到底选择哪一种技术是一件费脑子的事情。真正的挑战是许多有趣的新Web技术由不同的组织推广,对于一个开发者或设计者来说比较困难的一件事情是,如何从中选出一款实用且不会过时的技术。

一般来讲,开放技术通常比专有技术更普及、生命周期更长,而后者则往往能够比较及时的支持高级功能。因此,Web应用开发者需要坚持 实用第一,尽可能的选择开放技术,但是在某些特殊情况下,也应该能够毫不犹豫的选择专有技术。这种选择与开放或其它信仰无关,而只是 为了选择一种合适的技术,来最大化目标应用程序取得成功的可能性。换言之,这不应该是一个私人和情绪化的选择,而是一个业务和理性的 选择。

对于今天的主流富Web应用来说,主要有两大技术可用:Flash和OpenWeb(诸如HTML、CSS、JavaScript、SVG等)。虽然SilverLight和 JavaFX肯定也是非常有意思的技术,但它们依然是未被事实验证过的Web事物,本文出于简化考虑,将重点讨论Flash和OpenWeb。

由于多年研究该问题,并且在两个阵营都花费了较长时间,我可以坦白的说双方各有自己的优势和不足,选择哪一个要取决于你的富Web应 用的要求,你甚至可能需要同时使用它们。做出合理选择的技巧是,客观的了解每一个技术的优势和不足,不带任何个人情绪作出理性选择。

为了帮助解答何时用什么技术这个问题,以下是一个两大应用开发平台技术-功能列表,并附上简短解释。

Flash与开放Web的应用开发平台对比图

应用开发平台之争—SEO(OpenWeb)

尽管谷歌在索引Flash内容上取得了一些进展,针对Flash的SEO依然处于初级阶段,因此,如果你的应用程序需要依赖SEO来取得成功,你 更好的选择是使用已知的URL和HTML最佳实践。对于未使用任何未经验证的SEO技术的标准页面HTML内容来说,进行SEO也不是一件容易的事情 。而一旦以错误的方式使用了Ajax,对SEO来说就是一件极具破坏性的事情。举例来说,在很多单页面Web应用中会使用“#”URL技巧,这可能 就不利于SEO的实现。

应用开发平台之争—移动Web(OpenWeb)

移动Web是另外一个Flash技术依然处于落后局面的领域。尽管Adobe在这个领域正在取得一些有希望的进展,如果你不是在创建一个2D游戏 或视频/多媒体为中心的应用程序,就没有多少理由在已经非常强大的现代移动Web浏览器上再使用另外一个带来开支和不确定性的虚拟机。现 在,多数新高端移动设备具有类似桌面的浏览器功能(通常是基于WebKit),它可以让开发者完全利用诸如Ajax和CSS2.1+等OpenWeb技术。因 此,最大化你的手机应用能力的最佳方式是坚持使用OpenWeb技术,并根据简化版浏览器来设计你的Web用户界面。另外,开发者可以充分利用 当今的移动应用商店来推广特定手机的应用,不过这并非本篇文章讨论范围,因此略过。

应用开发平台之争—富HTML显示&编辑(OpenWeb)

尽管Flash10中有一些技术可以简化HTML布局和编辑组件的开发,它依然与浏览器本身的功能相差甚远。有人猜测称Flash11可能具有更好 的HTML功能,甚至可能有嵌入式WebKit,但是就目前来说,如果你希望显示和编辑富HTML,毫无疑问,Web浏览器才是你的最佳拍档。

应用开发平台之争—按需性能(OpenWeb)

当用户首次访问一个Web应用时所获得的体验就是按需性能,此时该应用的任何信息不会出现在浏览器的缓存中。人们对个人Web应用常见 的预期值是,响应时间不要超过1秒。如大家所知,解释型页面可以更有效的完成按需内容及交互的执行,而Flash应用模式的编译特点则在进 行预加载执行时更具有优势。因此,对于那些要求快速交互体验的应用来说,OpenWeb模式更适合。

应用开发平台之争—预加载性能(Flash)

相反,Flash和类似Flex等框架的编译方式,使它可以更优化地实现预加载交互。因此,如果你不介意在你的应用程序上有一个“进度加载 条”,并且有一个高度执行性能需求,那么Flash可能是一个好的解决方案。值得提出的是,诸如谷歌ChromeV8和Mozilla火狐SpiderMonkey中 的新JavaScript虚拟机,正在打破解释型语言性能的障碍。不幸的是,微软IE浏览器在语言性能方面依然处于落后状态。尽管我们认为微软也 正在优化它们的JavaScript引擎,但是目前来说,获得高执行逻辑性能的最佳方式是使用FlashActionScript3。

应用开发平台之争—动画(Flash)

如果你希望画质流畅,那么Flash是你最好的朋友。尽管这个说法目前成立,不过你应该知道的重要一点是,通过现代浏览器(包括IE8) 和诸如jQuery等Ajax工具,完全借助于OpenWeb技术的应用程序也可以具有还过的去的动画功能。不过,除非动画是应用程序的重要基石,它 不应该成为选择哪一种技术的关键或决定性因素。

应用开发平台之争—2D&3D(Flash)

这无疑是Flash的一个强项。尽管OpenWeb正在建立某些2D标准和实现(诸如Canvas和SVG等),但是在像素和矢量图形创建和管理方面,没 有任何一个技术能够比Flash提供更高的性能和功能。尽管Canvas和某些SVG现在已经被火狐和其它基于WebKit的浏览器(苹果的Safari和谷歌 Chrome等)所支持,但微软的IE浏览器却没有支持它们。开发者可以通过使用JavaScript或Flash库等兼容方式来回避微软这个限制,但是往 往以牺牲功能和性能为代价。换言之,尽管以SVG/Canvas/VML建立一个在线版Photoshop或类似Visio的应用是可能的,但是使用Flash技术创 建它所需要的投入肯定更具吸引力。不幸的是,Flash不支持解释型模式,因此Web开发者将不得不完全转向Flash开发模式和工具。尽管有一 些有趣的FlashSVG库可以刚Web开发者使用Flash来展现SVG,或使用浏览器JavaScript虚拟机来运行脚本,但是这样做通常会以降低性能为代 价。

应用开发平台之争—文件处理(Flash)

文件处理功能一直完全被不同的OpenWeb标准和实现组织所遗忘。创建一个通过浏览器存取本地文件的有效体验一直是一个挑战。即时是最 新的浏览器,其文件输入模块近允许一次选择一个文件。尽管在这方面Flash也难成完美,不过它在这个方面增加了一些不错的功能,诸如多 文件选择功能,另外还增加了一个很重要的功能,可以在将文件从客户端发往服务器之前阅读它们的内容。另外一种选择是使用Java技术, Facebook在其图片上传程序中就使用了该技术,它通过签名applet几乎实现完整的文件系统控制。高级剪贴板支持是另外一个被忽视的需求。

应用开发平台之争—视频/音频回放(Flash)

在HTML5中有两个比较大的新功能,一个是离线支持,另一个则是视频和音频标签。不过,关于视频标签的支持格式,目前还存在一些争论 。其中最大的问题之一是最好的视频格式往往具有版权,尽管诸如Adobe、微软和谷歌等商业厂商愿意为它们的用户支付视频税,而开源社区 却发现自己处于“双环困境”(catch-22)中。因此,从一个应用程序开发者的角度来看,Flash是迄今为止能够为应用程序带来高品质视频 和音频的最佳选择。而且Flash最近还支持了H.264/mp4,就目前来说,没有什么比它更适合了。

如上所述,没有一种技术可以满足所有需求。根据应用程序需要,你可能需要组合使用多种技术。很明显,对于一个技术厂商来说,希望 自己的技术被应用在尽可能多的场景中;而对于应用程序开发者来说,无论采用哪一种技术,唯一的目标就是确保应用程序取得成功,开发者 在投入太多时间和金钱到某一种技术之前,应该理性、客观的评价每一种技术的优缺点。另外,在定义应用程序需求时,要真正关注用户关心的事情。

【编辑推荐】

  1. Adobe Flash和Flash Catalyst测试版第一印象
  2. Silverlight无法取代Flash的四个原因
  3. 微软正式推Flash杀手Silverlight
  4. HTML 5与Flash,不得不谈的话题
  5. Adobe公司发布最新Flash平台测试版
责任编辑:彭凡 来源: IT168
相关推荐

2010-04-14 09:06:28

FlashWeb标准

2013-08-27 10:52:35

Java.Net

2012-03-26 09:23:47

SharepointSalesforce

2013-08-28 14:43:19

2011-07-18 12:49:08

数据中心数据中心网络

2011-11-15 09:10:24

HTML 5

2011-02-21 09:10:42

WebHTML 5JavaScript

2011-09-02 16:42:51

Sencha ToucWeb应用

2013-07-24 10:10:57

天翼开放平台WEB短信API

2011-11-29 14:37:41

2011-08-02 15:11:34

开放平台Q+WebOS

2009-01-18 09:57:32

Java.NETSun

2013-12-13 13:54:05

移动应用

2019-12-17 11:19:02

AI 数据人工智能

2012-01-12 14:16:23

响应式Web设计

2012-10-11 08:45:46

云计算甲骨文Box

2011-12-12 14:12:05

百度开放平台

2014-05-19 16:31:39

京东云

2020-08-17 12:55:38

.NetJava软件开发

2014-07-29 14:42:50

惠普HP Helion云计算
点赞
收藏

51CTO技术栈公众号