NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

HTML5 VS. Flash&Flex? – 浅谈 Flash/Flex/HTML 5 技术选型

  • 2012-08-14
  • 本文字数:2476 字

    阅读完需:约 8 分钟

在 HTML5 发布以前,RIA 领域的技术解决方案一直相都是各展所长,并无争议。Adobe 体系中,Flash 无法胜任的事情,Flex 可以完成,反之亦然;.Net 系决策者在选用 RIA 解决方案时,Silverlight 是不二之选。

曾经我对 Flex 的迷恋到了欲罢不能的地步,与我有相同想法的人亦不在少数,Flex 也大有“一统江湖”的趋势。然而,随着 HTML 5 横空出世,Flex“易主”,Silverlight 被“雪藏”,RIA 领域的技术解决方案开始变得扑朔迷离。

HTML 5 无疑是“明日之星”,苹果公司前 CEO 乔布斯对它赞赏有加,绝大多数智能手机浏览器均支持 HTML 5,基于 HTML 5 的网站也如雨后春笋般出现。这些似乎预示着 HTML 5 时代来临,人们试图让决策者相信,Flash/Flex 时代已经过去了,HTML 5 才是 RIA 领域的最佳解决方案。然而,事实果真如此吗? 我曾经见过一个项目,原计划使用 Flex 做为前端解决方案,由于当时 HTML 5“盛行”,最终决策者决定弃用 Flex 而转投 HTML 5。 接下来会发生什么呢?

  • 由于 HTML 5 的浏览器兼容性问题,导致需求设计阶段的很多功能都需要推倒重做。
  • 在实现过程中,不仅要写 HTML 5 标签,还要写 CSS 与 JavaScript,对于项目来说,增加了人员构成,项目的开发成本也随之增加。
  • HTML 项目可以方便获取源码,因此需要增强保密性及安全性设计。
  • 在插件的编写、框架的选择上,其难度也要远远大于 Flex。

从上述情况可见,HTML 5 也存在劣势,并不完美。同样,我也可以列举出诸多例子来体现 HTML 5 的优势。那么,“真相”到底是什么?

真相只有一个:

HTML 5 与 Flex 是两种截然不同的技术解决方案。HTML 5 的出现让 Flex 更加专注某些方向和领域。所以,它们是互补的,而非替代。因此,“替代”一说并不准确。

虽然,上述例子只是小概率事件。但概率小,不代表不发生,不代表不典型。所以,在这里我想跟大家谈一下 Flash、Flex、HTML 5 的技术选型。

首先明确一个观点:技术选型没有既定的规律可循,它是由诸多因素决定的,例如:开发人员的技术知识结构是否胜任、项目的开发成本、开发人员构成、项目的开发周期、项目的属性等等。

但是,我们仍可以从这些技术的特点出发,辨别你的应用程序适合采用哪种方案!

Flash 的特点:

  • 优势:

    • 借助时间线(Time Line)和 Action Script 3.0 可以方便地制作出任意效果动画。
    • 完备的开发工具。(Flash Pro CS 系列开发工具)
    • 完备的工作流。(Adobe CS 系列全线工具均可以导入到 Flash 并可二次编辑)
  • 劣势:

    • Flash Player 不支持 iOS。
    • Flash Player 不支持 Android 4.1+。(Android 4.0 以下系统均可支持)

Flex 的特点:

  • 优势:
    • 完备的、可以媲美 C/S 架构(桌面软件)的大量控件支持。
    • 与 Flash 及 Adobe CS 系列全线工具的完美结合。
    • 完整的企业化开发流程及工作流(代码的编写、编译、调试、发布等)
    • 多种框架可供选择,并支持高级特性,如:IoC、视图绑定、数据绑定实时更新等。
  • 劣势:
    • 生成的 SWF 过大。(虽有完善的“瘦身”方案,但仍比 HTML 方案大很多)
    • 效率问题。(在某些情景下,比 HTML 5 的效率要差一些)
    • 较差的图文混排支持。(无法媲美 HTML 5 的图文混排,这是 Flash 系的通病)
    • 储备人员相对 HTML 来说还是太少。

HTML 5 的特点:

  • 优势:
    • 完备的技术人员储备。(前端开发人员的数量完全可以跟 Java、.Net 程序员媲美)
    • 借助 HTML 5 的诸多新特性,在某些层面完全可以取代 Flash 技术。(Flash 属于 Plug-in 方式,而 HTML 则是浏览器原生支持)
    • 不逊色于 Flex 的大量控件。(Bootstrap、基于 jQuery 的控件比比皆是)
    • 真正意义上全平台支持。
    • 借助 Node.js 可以胜任后台(前 / 后台通吃);借助 Coffee Script,可以媲美 Ruby/Python 的语法糖衣。
    • 比 Flex 拥有更大、更全面、更活跃的社区。
  • 劣势:
    • 作为企业开发,不具有媲美 Flex 的工作流及开发流程。
    • 作为游戏开发,在支持 3D 及运行效率方面,不如 Flash Stage3D。
    • 编写 HTML 5 的应用程序,很大程度上还要编写 CSS 与 JavaScript,对初学者来说,学习曲线较 Flex 高一些。
    • HTML 5 依然存在浏览器兼容问题。(随着 W3C 与 WHATWG 的分裂,估计这种情况会被进一步加深)
    • 在大型 HTML 5 的项目中,Flex 遇到的问题在 HTML 5 中依然存在(例如:效率问题),在此基础上还增加了浏览器兼容性、Ajax 跨域通讯等新问题。

下面的表格,描述了这三者在一些关键点的比较:(图 1)

下图使用区分法,来辨别应用程序的技术选项方案:(图 2)

下面的表格从“项目属性”角度来比较这三者之间的优劣性:(图 3)

总结:

  • Flash:
    • 适合强交互、强效果、少数据展示、少图文混排、偏展示 / 工具属性的应用程序。例如:Flash 交互广告展示、页游(Flash Game)等。
  • Flex:
    • 适合较强交互、适当效果、多数据展示、少图文混排、偏工具属性的应用程序。例如:图片在线修改、企业内部系统、ERP 系统、金融系统等。
  • HTML 5:
    • 适合较强交互、适当效果、多数据展示、多图文混排、偏应用属性的应用程序。例如:Google 系网站、各种传统意义的网站、SNS 系网站等。

注 1:上文提到的 Flash 是指使用 Flash Pro CS 工具(IDE)生成的 SWF,而非 Flash Platform。

注 2:Flash Player 不支持 IOS 以及 Android 4.1+ 系统。在 2012 年 8 月 15 日,Adobe 将 Flash Player 从 Google Play 下架,并不在对其进行更新,但 Adobe 仍使用 AIR 的方式对智能系统进行 Flash 应用 / 游戏的支持。

注 3:虽然 Adobe 提供了 FTE(Flash Text Engine)与 TLF(Text Layout Framework)用于图文混排,但是由于其开发的难度比较大,所以并不完全适合企业开发。

关于作者

王磊 | Kenshin (kenshin.wangl@gmail.com), Adobe Flex 专家、国内第一本 Flex 图书《Flex 第一步》作者、05 年开始 Flex 至今,是国内第一批从事 Flex 的开发人员,曾任某公司前端技术总监,目前从事 Flex 顾问、咨询、架构、高端培训等相关工作。 新浪微博: http://weibo.com/23784148 , Flex 博客: http://www.k-zone.cn/zblog


感谢黄玲艳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-08-14 00:0011894

评论

发布
暂无评论
发现更多内容

2022全网独一份Java面试题整理,包含30个技术栈, 1575 道Java 架构师面试题

Geek_0c76c3

Java 数据库 开源 程序员 开发

短期内跳槽的Java程序员必看的八项知识点+两大项目实战

Geek_0c76c3

Java 数据库 开源 程序员 开发

精彩演讲推荐|智能化变更防控方法、架构与组织实践

TRaaS

Koordinator v0.7: 为任务调度领域注入新活力

阿里巴巴云原生

阿里云 云原生 Koordinator

OpenKruise v1.3:新增自定义 Pod Probe 探针能力与大规模集群性能显著提升

阿里巴巴云原生

阿里云 云原生 OpenKruise

阿里资深架构师把大厂高频 2000+ 道 Java 面试题全部总结出来了,分分钟拿捏面试官

Geek_0c76c3

Java 数据库 开源 程序员 开发

字节奋战8年,回头一看只剩下这份1857页的算法笔记了

Geek_0c76c3

Java 数据库 开源 程序员 开发

vue组件通信6种方式总结(常问知识点)

bb_xiaxia1998

Vue

英特尔Josh Newman: 真正满足用户所需,让人们享受专注与互联的PC体验

科技之家

GitHub star过万!仅靠这份图解算法进阶指南,成功拿下字节offer

Geek_0c76c3

Java 数据库 开源 程序员 架构

【Go】Go 操作 excel 代码封装

非晓为骁

Excel go语言

肝下50万字的《Linux内核精通》笔记,你的底层原理水平将从入门到入魔【建议收藏】

简说Linux内核

内存管理 嵌入式 Linux内核 进程管理 驱动开发

大型企业选择低代码的主要原因是什么?

优秀

低代码 低代码平台

熟读阿里总结的Java10w字总结,15天拿下5个大厂offer(阿里,美团,字节...)

Geek_0c76c3

Java 数据库 开源 程序员 开发

Java:锁定 Excel 中的特定单元格

Geek_249eec

Java Excel 单元格

在数字化浪潮中,为企业建造一艘“方舟”

元年技术洞察

微服务 云原生 企业数字化 PaaS 平台

TDengine | taosdump的使用方法和注意事项

TDengine

数据库 tdengine 开源 时序数据库 taosdump

一文读懂 MySQL 锁

说故事的五公子

MySQL 数据库

ironSource ROAS 智能优化工具大升级,用户现可查看每日 KPI 数据及趋势走向

Geek_2d6073

真的香!Github一夜爆火被各大厂要求直接下架的面试题库也太全了

Geek_0c76c3

Java 数据库 开源 程序员 开发

【导航】ESP32-C3 入门教程目录 【快速跳转】

矜辰所致

目录 ESP32-C3 10月月更

学了阿里大佬的 SpringCloud微服务项目真香!即刻涨薪35K

Geek_0c76c3

Java 开源 程序员 架构 面试

见大牛、聊感悟、拿好礼...开发者一起来微软Ignite赴约!

InfoQ写作社区官方

热门活动

【高并发】ScheduledThreadPoolExecutor与Timer的区别和简单示例

冰河

并发编程 多线程 高并发 协程 异步编程

vue组件通信方式有哪些?

bb_xiaxia1998

Vue

Java后端没这些东西都不敢跳!对标阿里P7技术路线你值得拥有

Geek_0c76c3

Java 数据库 程序员 架构 开发

太全了!华为大神珍藏版SpringBoot全优笔记,首次分享

Geek_0c76c3

Java 数据库 开源 程序员 架构

金三银四跳槽季,美团、字节、阿里、腾讯Java面经,终入字节

Geek_0c76c3

Java 数据库 开源 程序员 开发

大杀四方!腾讯强推599页Netty进阶神技,彻底解析Netty

Geek_0c76c3

Java 数据库 程序员 架构 开发

阿里大佬手码的SpringCloud+Alibaba笔记开源了,堪称保姆式教学

Geek_0c76c3

Java 数据库 开源 程序员 开发

进击的PyTorch,和它背后的开源领袖

OneFlow

人工智能 机器学习 深度学习 开源

HTML5 VS. Flash&Flex? – 浅谈Flash/Flex/HTML 5技术选型_HTML5_王磊_InfoQ精选文章