学习flex的13个理由

上传人:洪易 文档编号:40411104 上传时间:2018-05-26 格式:DOC 页数:10 大小:43KB
返回 下载 相关 举报
学习flex的13个理由_第1页
第1页 / 共10页
学习flex的13个理由_第2页
第2页 / 共10页
学习flex的13个理由_第3页
第3页 / 共10页
学习flex的13个理由_第4页
第4页 / 共10页
学习flex的13个理由_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《学习flex的13个理由》由会员分享,可在线阅读,更多相关《学习flex的13个理由(10页珍藏版)》请在金锄头文库上搜索。

1、Java 程序员学习程序员学习 Flex 和和 BlazeDS 的十三个理由的十三个理由本文列述了本文列述了 1313 个个 JavaJava 程序员应当学习程序员应当学习 FlexFlex 和和 BlazeDSBlazeDS 的理由,讨的理由,讨论了为什么论了为什么 FlexFlex 结合结合 BlazeDSBlazeDS 是开发是开发 RIARIA 的最佳组合之一。无的最佳组合之一。无 论论是高度交互的网站还是以是高度交互的网站还是以 JavaJava 为后端的企业应用,这项组合都是最为后端的企业应用,这项组合都是最佳选择之一。更重要的是,这项组合能同时为开发员和企业带来高佳选择之一。更重

2、要的是,这项组合能同时为开发员和企业带来高回报(回报(ROIROI)。)。在阐述 Java 程序员应当学习 BlazeDS 的 13 条理由时,我以一个假想的苏打分派系统来展示如何让已有的 Java 程序转变为 RIA 应用。通过这个例子,我同时还会讲解到 BlazeDS 在已有 Java 应用或新建Java 应用中的多种不同用法。理由一:开源理由一:开源Flex 软件开发工具箱(SDK)的核心是个开源框架,专门用来开发、维护那些在不同浏览器、不同操作系统下界面都相同的 RIA 应用。Flex 发布采用的是 Mozilla 公共许可证(Mozilla Public License)。编译后的

3、Flex 应用在 Adobe Flash 平台下运行。BlazeDS 是连接 Flex 和 Java 的索桥,是项针对远程调用和消息传递的开源技术。在 Java 应用服务器上,它以 servlet 的形式存在,因此可以在任何标准 Java 网络应用中运用它。BlazeDS 以 LGPL(Lesser GNU Public License)公共许可证书发布。在发布 BlazeDS 的同时,Adobe 还公布了 AMF(Actionscript Message Format)规格说明,BlazeDS、Java 和 Flex 客户端间以这种简洁的二进制格式实现通信。理由二:完善的社区支持理由二:完善

4、的社区支持Flex 社区非常活跃,社区贡献了大量项目。Flex.org,这个配以社区新闻的 Adobe 站点几乎每天都有新的社区贡献;Yahoo!上的 Flex用户组的成员也已经超过了 11000。再比如 Google Code 上的 Flexlib 项目,已经提交了大量的开源 UI组件。Swiz 和 Mate 项目贡献了优化事件处理的框架;还有 Gorilla Logic 贡献了自动化 UI 测试的 Flex Monkeym 项目。理由三:带来广阔的就业前景理由三:带来广阔的就业前景据 Adobe 的 Flex“传道士”James Ward 看来,Flex 高级开发员的市场需求非常大,学习

5、Flex 能让你拥有极具市场竞争力的开发技能。理由四:更高的业务效益回报理由四:更高的业务效益回报总体上,开发企业 web 应用不是个轻松的活,这基本上是众所周知的事实。Flex 和 BlazeDS 提供的不仅仅是功能强大的开发工具,而且开发技术本身相对也非常简单。开发效率可以得到大幅度的提升,产品因此可以很快推向市场。Flex 和 Flash 带来的用户体验也相对更有魅力,对增加流量、提高用户转化率(conversion rate)很有帮助。很经典的一个例子是 Borders 连锁书店。他们最近发布了带有“魔法书架”的新网站,这个网站采用 Flash 接口来模拟书籍借阅的过程。 Border

6、s 发现这一模拟借阅非常明显地提到了用户转换率:“借助这个 Flash 驱动的接口,用户可以浏览书籍、DVD 和 CD 的封面,用户转换率比其他没有此项功能的网站高出 62”。理由五:理由五:FlexFlex 是第一个专门为创建是第一个专门为创建 UIUI 而设计的语言而设计的语言大部分语言都不是在第一时间设计其对 UI 的支持。Java 中 Swing包的实现刚好是个很好的证明。也就是这个原因,很多像捆绑数据这样的简单动作在 Swing 当中的实现就非常痛苦。用 Swing 最大的问题在于,要想提高开发效率就必须要对其 API 了如指掌。Flex 刚好相反,它是专门为创建 web UI 而设

7、计的。正如 Bruce Eckel 所说,Flex 是第一个针对 UI 开发的领域特定语言(DSL)。用Flex 构建 UI 比其它诸如 JSP、JSF、Swing 等技术简便得多。语言本身糅合了数据绑定、事件处理、控件布局以及其它一些 UI 常用开发技巧,就算对语言没有深刻的理解也不会影响开发效率。理由六:编程风格近似于理由六:编程风格近似于 JavaJava你可以继续使用现有的 Java 开发工具来开发 Flex 应用。当然也可以采用 SDK 中携带的免费命令行工具,Adobe Flex Builder(一个Eclipse 插件),或最近的 IntelliJ IDEA 8。Flex 提供的

8、是一个有状态环境,在这个环境中,数据从客户端加载。这种编程模式更像是开发桌面客户端而非 HTML 编程,这种风格对于用过 Java Swing 编程的开发员来说应该是相当熟悉。Flex 是 MXML(类似 XML 的 UI 标记语言)和 Adobe Actionscript(面向对象的解析语言)的结合体。鉴于这种结合方式,Flex 编程与Java 非常相似,因为两者用的都是熟知的面向对象的概念。最理想的开发环境是把 Flex 应用创建在 web 部署文件夹下。这样一来,每次更新应用之后都不需要重新部署,只要在浏览器下刷新一下就可以了。用 Flex 和 BlazeDS 开发后,开发效率绝对比之前

9、有很大的提升。理由七:理由七:BlazeDSBlazeDS 可以在任何可以在任何 JavaJava 应用服务器上运行应用服务器上运行BlazeDS 目前已发布了多个版本, 其中的 turnkey 版本还包含了为BlazeDS 配置的 Apache Tomcat。本文中,我用的是二进制发布版本,其中含有一个 WAR 用来展示如何把应用部署到各种应用服务器上去。不用这个 WAR 的话,你也可以从中提取 JAR 文件放到自己的项目中去。关于安装 BlazeDS 的各种选项内容,可以参见 BlazeDS 的wiki。这里举一个简单的例子,比方说要在已有的一个简单的苏打调配系统中应用 BlazeDS。你

10、只要把 JAR 文件放到项目文件夹下,然后就可以在应用里直接用 BlazeDS,可以部署到能够部署应用的任何地方。在项目中添加 BlazeDS,只需要完成下面两个步骤:解压缩 BlazeDS WAR 文件的内容:jar xvf blazeds.war。把 JAR 文件都拷贝到项目的 lib 文件夹下:cp -R WEB-INF/lib /sodaSample。理由八:可以在已有理由八:可以在已有 JavaJava 应用中运用应用中运用比方说这个简单的苏打调配系统,假设你想要扩展这个已开发好的服务,让其它 Flex 应用可以远程调用。在现成的应用中配置 BlazeDS 的基本步骤有:修改 WEB

11、-INF/flex 文件夹下的 BlazeDS 配置文件在该应用对应的 web.xml 文件里定义 MessageBrokerServlet 和 session 监听器配置好 BlazeDS 之后,再把苏打调配服务添加到 BlazeDS 远程配置文件里,Flex 客户就能远程调用了。这个过程通过在配置文件里定义一个目的地(destination)、一个或多个信道(channel)来传输数据。基本的 AMF 信道定义在 services.xml 文件里。下面这段配置在 remoting-config.xml 里定义了目的地(destination):com.gorillalogic.sodaSa

12、mple.SodaService通过在远程调用配置文件里定义端点(endpoint),Flex 客户端就可以调用任何一个基本的 Java 服务。要是想把 Java 数据模型也传送到 Flex 客户端的话,只要在 Actionscript 类中定义好两者间的映射:BindableRemoteClass(alias=“com.gorillalogic.sodaSample.SodaModel“)这段代码告诉 Flex,在远程调用的服务返回 SodaModel 的时候,把它映射到 Flex 的 SodaModel。本例中的 Flex 客户端显示的就是如何调用这个 Java 服务。调用返回一个已经填写

13、好预定信息的 SodaModel:public function callSodaService():void var sodaType:String = type.text; var sodaCount:int = parseInt(cnt.text); var flag:Boolean = preOpen.selected; remoteObject.getSoda(sodaType, sodaCount, flag); private function resultHandler(event:ResultEvent):void var sodaModel:SodaModel = even

14、t.result as SodaModel; Flex 返回的结果是通用的 result 变量,可以直接映射到你的 SodaModel。这里我就不深入讨论怎么实现映射了,但其中值得提到的是要在编译配置里声明 services-config.xml 路径,像这样: -locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /如果不添加这个路径的话,你的 Flex 客户端就没发找到 Java 服务。同样的方式,你还能把一个对象从客户端传递回服务器端。比如,你可以把一个

15、空的 soda model 发回服务器(审校注:原文这里写的是客户端,根据上下文判断这里应该是服务器端)。理由九:可以通过理由九:可以通过 JavaJava 来扩展和修改来扩展和修改 BlazeDSBlazeDS假如你想添加特殊的日志来记录苏打调配服务被调用的情况,那么你可以扩展标准的 Java 适配器来添加日志功能。首先,添加一个继承了 JavaAdapter 的 Java 类:import flex.messaging.services.remoting.adapters.JavaAdapter.public class TimingJavaAdapter extends JavaAdap

16、ter 其次,重载 invoke()方法:public Object invoke(Message message) RemotingMessage remotingMessage = (RemotingMessage) message; String operation = remotingMessage.getOperation(); String destination = remotingMessage.getDestination(); Logger.info(“calling “ + operation + “ on destination “ + destination); Object data = super.invoke(message); return data; 这个方法中,你可以看到调用之后的操作和调用的目的地(destination)。这种方法也能用来处理其它一些问题,比如记录向服务器发送调用需要多长时间。理由十:理由十:HTMLHTML 和和 JSPJSP 也能调用也能调用 BlazeDSBlazeDS从 HTML 和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号