本文和大家重点学习一下Flex的概念,Flex通常是指AdobeFlex,它是涵盖了支持RIA(RichInternetApplications)的开发和部署的一系列技术组合。Flex的另一个意思是是一款生成扫描器的工具,能够识别文本中的词法模式。
Flex
Flex通常是指AdobeFlex,是最初由Macromedia公司在2004年3月发布的,基于其专有的MacromediaFlash平台,它是涵盖了支持RIA(RichInternetApplications)的开发和部署的一系列技术组合。Flex的另一个意思是是一款生成扫描器的工具,能够识别文本中的词法模式。
AdobeFlex简介
MacromediaFlash是强大的矢量动画编辑工具,在做动画起家之后,Flash一直在谋求richinternetapplication(ria富客户端)的霸主地位,最有影响的是,已经推出了面向对象的编程脚本ActionScript3.0,并且建立起类似于javaswing的类库和相应component(组件)。Flex是通过java或者.net等非Flash途径,解释.mxml文件组织components,并生成相应的.swf文件。Flex的component和flash的component很相似,但是有所改进增强。目前Macromedia公司已经被ADOBE公司收购。当前(2008年10月)的Flex版本为3.0。(现在已经4.0了(2010年))
运用Flash是完全可以做到Flex的效果的,为什么还需要Flex呢?这里面有两个原因:
1:为了迎合更多的developers(开发者)。Flash天生是为了designer(设计者)设计的,界面还有flash的动画概念和程序开发人员格格不入,为了吸引更多的jsp/asp/php等程序员,Macromedia推出了Flex,用非常简单的.mxml来描述界面给jsp/asp/php程序人员使用.(x/d)html非常相似,而且mxml更加规范化、标准化。
2:为了一个标准。大家一定听说过微软最新一代操作系统longhorn(即vista,后续的win7也是同一核心),在longhorn推出的同时微软也推出了新的语言xaml,一种界面描述语言,与之相应的就是smartclient和Flex非常相似的东西(即SilverLight)。Mxml和Xaml的也很相似……这是人机交互技术的进步的重要体现,即内部逻辑与外部界面交互相分离。
Flex和j2ee/.net其实没什么关系,Macromedia用java做出来个应用把flash的技术融合到J2EE里面,再用.net的技术做出来个.net应用把flash技术融合到.net里面去;应该说Flex解决了J2EE里面和.net里面最繁琐的问题那就是web客户端的问题。
成因
传统的程序员在开发动画应用方面存在困难,Flex平台最初就是因此而产生。Flex试图通过提供一个程序员们已经熟知的工作流和编程模型来改善这个问题。RIA相互之间关系Flex最初是作为一个J2EE(Java2Platform,EnterpriseEdition)应用,或者可以说是JSP(JavaServerPages)标签库而发布的。它可以把运行中的MXML(Flex标记语言)和ActionScript编译成FLASH应用程序(即二进制的SWF文件)。最新版的Flex支持创建静态文件,该文件使用解释编译方式并且不需要购买服务器许可证就可以在线部署。
Flex的目标是让程序员更快更简单地开发RIA应用。在多层式开发模型中,Flex应用属于表现层。
Flex采用GUI界面开发,使用基于XML的MXML语言。Flex具有多种组件,可实现WebServices,远程对象,draganddrop,列排序,图表等功能;Flex内建动画效果和其它简单互动界面等。相对于基于HTML的应用(如PHP、ASP、JSP、ColdFusion及CFMX等)在每个请求时都需要执行服务器端的模板,由于客户端只需要载入一次,Flex应用程序的工作流被大大改善。Flex的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。
Flex服务器也是客户端和XMLWebServices及远程对象(ColdfusionCFCs,或Java类,等支持ActionMessageFormat的其他对象)之间通讯的通路。
一般被认为可能是Flex替代品的是OpenLaszlo和AJAX技术。
Flex应用开发步骤
以下直接来源于Flex2.0Beta3的帮助文件:
使用一系统预定义组件(窗口,按钮等)来定义一个开发界面。
组织安排组件,现在用户自定义的界面设计。
使用风格和主题来定义可见设计。
增加动态动作,如应用程序之间的互动。
定义并在需要时连接上一个数据服务。
从源代码生成一个在Flash播放器中运行的SWF文件。
版本历史
Flex1.0-2004年3月
Flex1.5-2004年10月版本Flex2.0(Alpha)-2005年10月
Flex2.0Beta1-2006年2月
Flex2.0Beta2-2006年3月
Flex2.0Beta3-2006年5月
Flex2.0Final-2006年6月28日
Flex2.0.1-2007年1月5日
Flex3.0Beta1-2007年1月11日
Flex3.0Beta2-2007年10月1日
Flex3.0Beta3-2007年12月12日
Flex3.0-2008年2月25日
Flex3.1-2008年8月15日
Flex3.2-2008年11月17日
Flex3.3-2009年3月4日
Flex3.4-2009年8月18日
Flex4使用中 #p#
采用AdobeFlex&AIR技术的经典应用
eBay(http://desktop.ebay.com)
eBay桌面是构建于AdobeAIR上的一个应用程序,程序创建了与eBay客户的持久连接。eBay桌面实时地直接将产品供货通知和拍卖更新发布给买主,这样用户不需要打开浏览器进入eBay网站就可以获取最新信息。
纳斯达克股票市场公司(https://data.nasdaq.com/mr.aspx)
NASDAQMarketReplay使用AdobeFlex和AdobeAIR在桌面上发布一个RIA,让金融专业人士能够重放任何时间点市场活动的详情。
纽约时报公司(http://shifd.com)
纽约时报公司正在开始ShifD,一个新的RIA,允许使用者在计算机和移动设备之间切换内容。ShifD工作在Web网站和移动设备之上以及两者之间,通过一个可下载的AIR应用程序提供给人们一种欣赏移动媒体的方式。
CCTV网络电视奥运台(OlympicNetworkTVStation)
由AdobeFlex制作、AdobeFlash技术加以传递前所未有的网页体验。其中包含由CCTV奥运媒体团队所提供的奥运赛事成绩、统计资料,以及多样化的背景数据、比赛规则及专家分析等。同时,透过社交网络功能,还能让运动迷与朋友们实时分享各种奥运赛事意见及看法。
Flex与Flash的关系
首先这里想说的是,Flash并非只是一个单纯的矢量动画创作工具,而是一个凭借脚本语言ActionScript在功能和定位上不断演变的网络应用开发工具。早在FlashMX的时候就已经成为macroemdia推广RIA战略的工具。但是毕竟Flash最初的定位是面向美术动画设计师的矢量动画创作工具,并不适合传统的开发人员。于是Flex成为开发者们的首选。与FLASHFlex和Flash都以ActionScript作为其核心编程语言,并被编译成swf文件运行于Flashplayer虚拟机里。因此Flex也继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。
虽然Flex和Flash有众多的相似点,但是不同之处仍然很多:
1.尽管公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。
2.Flash偏向的是美术动画设计师人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。
3.Flash只能以ActionScript脚本的形式开发(舞台被关联到一个称之为documentclass的类里),另外舞台元素也是可以绑定脚本的,不过从软件工程的角度讲不建议这样用,Flex还可以使用称作mxml的标记语言来描述应用的外观和行为,mxml中可以直接嵌入ActionScript脚本。
4.由于第三点而造成的两者市场定位不同,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。
5.借助FlashLite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。
6.Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。
Flex的技术框架
Flex技术包括以下几个主要技术框架:
1.描述应用程序界面的XML语言(MXML);
2.符合ECMA规范的脚本语言(ActionScript),处理用户和系统的事件,构建复杂的数据模型;
3.一个基础类库;
4.运行时的即时服务;
5.由MXML与ActionScript文件生成swf文件的编译器。#p#
什么是用RIA?
传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表现层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了。而富互联网应用(RichInternetApplications,缩写为RIA)的出现就是为了解决这个问题。RIA面向用户富互联网应用程序是下一代的将桌面应用程序的交互式用户体验与传统的WEB应用的部署灵活性和成本分析结合起来的网络应用程序。富互联网应用程序中的富客户技术通过提供可承载已编译客户端应用程序(以文件形式,用HTTP传递)的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的面向服务模型,这种模型由采用的WEB服务所驱动。结合了声音、视频和实时对话的综合通信技术,使富互联网应用程序(RIA)具有前所未有的网上用户体验。
AdobeRIA技术封装让现有的WEB技术得到了极大的保留,核心价值在于大大提高了产品设计师和开发工程师的“开发体验”,强化了设计端和开发端的整合。设计师和开发工程师们可以方便地将自己的代码平移到新的平台上,并且发布、部署的方式比之前的任何一款开发工具都方便得多,从而使RIA应用有更广大的开发者基础。
AdobeRIA技术也将带来新的桌面革命——“Desktop2.0”,内容从Flash,HTML/CSS/JS,到PDF,几乎涵盖了时下最流行的WEB内容载体。此外,“可离线”应用模式能让用户更加安全、舒适地进行工作和娱乐。用户们不必再抱怨因网络故障而造成的信息损失,而且也可以借助本地资源更好地节省网络资源。因此,AdobeRIA技术可以让用户将WEB2.0应用带回桌面,创造的商业应用价值和用户体验价值将超过以往任何技术。
词法分析器生成器Flex
Flex(fastlexicalanalysergenerator)是Lex的另一个替代品。它经常和自由软件Bison语法分析器生成器一起使用。Flex最初由VernPaxson于1987年用C语言写成。
Flex手册里对Flex描述如下:
“Flex是一个生成扫描器的工具,能够识别文本中的词法模式。Flex读入给定的输入文件,如果没有给定文件名的话,则从标准输入读取,从而获得一个关于需要生成的扫描器的描述。此描述叫做规则,由正则表达式和C代码对组成。Flex的输出是一个C代码文件——lex.yy.c——其中定义了yylex()函数。编译输出文件并且和-lfl库链接生成一个可执行文件。当运行可执行文件的时候,它分析输入文件,为每一个正则表达式寻找匹配。当发现一个匹配时,它执行与此正则表达式相关的C代码。”
一个相似的,用C++语言的词法分析器生成器是Flex++,包含在Flex软件包里。
Flex不是GNU工程,但是GNU为Flex写了手册。
【编辑推荐】