学习Flex 和BlazeDS的十三个理由
2010年01月02日
学习Flex 和BlazeDS的十三个理由
2009-08-22 01:32
Java程序员必须学习BlazeDS的十三个原因。通过这个例子,我来解释你可以使用BlazeDS的不同方法,任何一个你现有的Java应用程序或者新的Java应用程序。 理由一:开源
Flex软件开发工具包核心(SDK)是开源架构,用以创建以及维护RIAs,不同浏览器和操作系统具有同样的外观设计风格。Flex是在Mozilla公共许可证下发布的。经过编译的Flex应用程序在私有的Adobe Flash平台上运行。
对于连接Flex 和Java,BlazeDS是为远程和信息服务的开源技术。它作为servlet运行在Java应用程序服务器,允许你在任何Java web应用程序规范中使用。BlazeDS是从Lesser GNU Public License (LGPL)得到的许可。除了BlazeDS的发布,Adobe公布了ActionScript信息格式说明(AMF),允许BlazeDS 和Java与Flex客户端联系使用二进制格式。
理由二:强大的社区支持
Flex具有一个非常活跃的社区,有很多有贡献的主题。Flex.org,是一个关于Adobe的社区新闻站点,差不多每天都有更新,Yahoo! 上的Flex使用小组有超过11,000名成员。
比如,Google 编码上的FlexLib项目贡献出大量的开源用户界面(UI)组成部分。Swiz 和 Mate项目贡献出一个架构来帮助处理事件。Gorilla Logic已经为自动化的UI测试贡献出Flex Monkey。
理由三:你可以在六个月内得到一份工作
根据Adobe的Flex教父James Ward的说法,市场对Flex高级工程师仍然有很大的需求。学习Flex能够让你掌握一门技术,在竞争中处于优势地位。
理由四:更高的商业投资回报率
一般来说,开发企业级web应用软件是众所周知的困难。Flex 和BlazeDS提供的不仅是更高级的工具,而且更容易扩展。开发者生产力的增长允许市场上销售的更多更快。Flex 和Flash创造了更完美的用户体验,提升了销量以及价格。
一个理想的例子是博德斯图书连锁店,它最近在介绍一种新的具有“Magic Shelf”的website。这个站点使用Flash界面来模拟翻书的感觉。博德斯书店发现这真的可以提高流通率:“使用这种Flash仿真界面,顾客可以查看图书,DVD和 CD的封面,使用这一举措比没有体验过的顾客多62%的购买率”
理由五:Flex 是第一种用来设计UIs的语言
很多设计语言都是在事后增加了创建UIs的支持功能。特别体现在Java Swing上。因此,Swing处理一些简单事情,比如线路数据,是非常痛苦的,要求使用特殊的Swing数据模型。Swing的最大问题是你不得不在应用程序界面中挖掘很深才能有效。
Flex恰恰相反:它一开始就是为创建web UIs而设计的。就像Bruce Eckel经常说的那样,Flex是第一款为UI设计的特定语言。所以使用Flex创建UI比使用其他方法要简单,比如JavaServer Page(JSP),JavaServer Faces (JSF)以及Swing。数据绑定,事件句柄,元件布局还有其它的常见UI发展技术都可以被这种语言创建,甚至你仅仅掌握了一小部分语言知识就可以。
理由六:拥有与Java类似的设计模型
你可以使用现有的开发Java的工具进行开发。你也可以使用包含在SDK中免费的命令行工具开发Flex应用程序,通过Adobe Flex Builder(一个Eclipse插件)或者使用最近的IntelliJ IDEA 8。
Flex提供一个状态环境,数据可以加载到客户端。编译模型与Hypertext Markup Language (HTML)设计相比更像是编译一个桌面客户端,使得任何下载Java Swing设计的人都对编译模型感到很熟悉。
Flex编译使用了一个MXML组合,一个UI markup语言,与可扩展的Markup 语言 (XML)相似,还有Adobe ActionScript和面向对象的脚本语言。这个组合使得编译Flex与编译Java相似,因为你可以使用概念非常熟悉的面向对象的方式。
理想的方法是创建你的开发环境使得Flex应用程序能够在web开发地址录中创建。使用这种方法,你不需要在每次创建后重新部署您的应用程序:一个简单的浏览器恢复功能,可以看到最后一次操作。结果是使用Flex 和BlazeDS开发相当有效。
理由七:BlazeDS可以在任何Java应用服务器上运行
BlazeDS的多个版本都是可以使用的,包括即将投入使用的包含Apache Tomcat设置的版本。在这篇文章中,我使用二进制分布,作为web档案(WAR),来显示你在应用服务器上如何进行部署。否则你可以引用Java存档(JAR)文件,在你的项目中使用。为了获取各种各样安装BlazeDS的信息而访问BlazeDS wiki。
这个例子是在现有的项目上使用BlazeDS。你只需要在你的项目上增加JAR文件,然后你可以在应用程序内部使用BlazeDS,这允许你在任何可以部署应用程序的地方部署它。
在你的项目上增加BlazeDS,完整步骤如下:
1、 找出包含BlazeDS WAR文件 jar xvf blazeds.war
2、 复制JAR文件到你的项目lib目录:cp -R WEB-INF/lib /sodaSample。
理由八:可以在现有的Java应用程序上使用
再soda的例子中,假设你想要暴露现有的soda服务以便远程的Flex应用程序可以与之链接。在现有的应用程序上创建BlazeDS的基本步骤如下:
1、 在WEB-INF/flex目录下编辑BlazeDS配置文件。
2、 在应用程序上web.xml上规定MessageBrokerServlet 以及session listener。
创建BlazeDS以后,你需要增加你的soda服务到BlazeDS远程配置文件,它允许从Flex 客户端访问soda服务。通过规定一个目的地以及一个或者更多的数据传送渠道来实现添加。基础的AMF渠道在服务器.xml文件中被定义。通过这个定义在远程config.xml 中识别你的目的地:
com.gorillalogic.sodaSample.SodaService
通过在远程配置文件中定义端口,你可以从Flex客户端访问任何一个Java服务。 传递Java数据模型到Flex客户端,在你的脚本class中定义两者之间的映射:
[Bindable]
[RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]
这段代码显示Flex,当远程服务访问返回Java SodaModel的结果把其映射到你的SodaModel。Flex客户端的示例显示如何访问这个Java服务。访问返回一个odaModel,根据你的命令:
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 = event.result as SodaModel;
}
Flex从变化的结果中返回你的结果,映射到你的SodaModel上。我不在这里讲述细节,但是一个需要说的细节是在汇编配置中指定services-config.xml,像以下所写: -locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /
如果不这样,你的Flex客户端将无法找到Java服务。同样的方法,你可以从客户端传递一个对象返还到服务。比如,你可以传递空的soda model返还到客户端。
理由九:你可以扩展BlazeDS以及使用Java对其进行修改
假设你决定当soda服务器被访问的任何时候,要增加一个特别的logging。你可以扩展Java编辑者的标准来增加logging。
首先,增加Java类别扩展JavaAdapter:
import flex.messaging.services.remoting.adapters.JavaAdapter. public class TimingJavaAdapter extends JavaAdapter {
Then, overload the invoke() method:
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;
}
使用这种方法,你可以看见即将要进行的操作以及访问的目的地。你可以使用这种简单的hook,比如说你可以测试对服务器多长时间的访问是最有意义的。理由十:你可以从HTML 和JSP访问BlazeDS
你可以用不同的方式进行访问,比如通过浏览器管理或者flashVars。flashVars可以通过HTML页设置,然后通过Flex引用程序读出。
举个例子,比如你想要传递你的用户名以及用户类型,想要从HTML页面上进行命令。你必须要在HTML页设置flashVars,如下:
然后,在你的Flex应用程序中你可以通过应用程序参数读出这些变数: var username:String; if (Application.application.parameters.hasOwnProperty("username")) {
username = Application.application.parameters.username;
}
理由十一:Flex 和BlazeDS的数据传送比其它的Ajax解决方案好 默认情况下,所有的远程程序调用(RPCs)在使用的时候运用的是AMF二进制协议。一个开放的标准,AMF极端的迅速。James Ward组成了一个整体样本显示与其他它远程解决方案的对比。尽管其它的异步式JavaScript 和 XML (Ajax)解决方案,比如Dojo与几个成百的队列进行对抗,具有BlazeDS的Flex可以轻松的解决几千个队列。(James Ward为不同的RIA数据加载技术基准做的统计)
理由十二:你可以直接从Java 客户端访问BlazeDS
BlazeDS最新发布的版本包含一个Java AMF类,你可以使用它使得Java 客户端访问BlazeDS服务。这种访问unit testing的方法在单元测试以及下载测试中都显示极其有效。
理由十三:和Spring框架一起使用
Adobe 与 Spring框架的组合带来两个项目之间更紧密的结合,最初发布的Spring-BlazeDS整合就显示了很多前景。通过允许Spring Bean成为远程服务,完全一样的配置文件将会被删除。
结论:
BlazeDS成为开源并且基于Java,对于新事物以及现有的Java服务项目这的确是一个好的选择。优秀的远程交流性能以及Flex 和Java之间的对象映射,Flex和 BlazeDS技术是RIA发展的一个好的选择。Flex 和BlazeDS对于 Java开发者来说是新鲜事物,开发者们会发现它的发展进程非常丰富,并且非常容易学习。
有BlazeDS 伴随的Flex也是大型企业级应用软件的一个好选择。在以前的一个项目中,我的团队写一个应用程序会包含超过50种不同的表现形式,在服务器与客户端之间规律的转移一些上千行的数据。这种应用程序已经几乎不可能使用传统的Ajax技术。使用Flex 和BlazeDS,在接下来的一年中我们将可以发布最初的版本。看一看这种充满活力的工具可以为你的应用程序发展项目做什么吧。
发表评论
-
VBS脚本常用经典代码收集
2012-01-20 01:29 759VBS脚本常用经典代码收集 2010年06月21日 1. ... -
Flex文件上传
2012-01-20 01:29 702Flex文件上传 2010年06月06日 今天花了一点时 ... -
Flex + BlazeDS 学习笔记 (一) --- BlazeDS的功能原理及配置实例
2012-01-20 01:29 693Flex + BlazeDS 学习笔记 (一) --- Bla ... -
Flex与.net交互
2012-01-20 01:29 630Flex与.net交互 2010年07月14日 方法一: ... -
vb+Flex的关于FlashPlayer的检测
2012-01-20 01:29 561vb+Flex的关于FlashPlayer的 ... -
liunx编译android源码参考
2012-01-19 09:19 623liunx编译android源码参考 2011年10月20日 ... -
RHEL使用Centos的YUM源
2012-01-19 09:19 719RHEL使用Centos的YUM源 2011年11月04日 ... -
RedHat 6.0使用CentOS YUM源更新的方法
2012-01-19 09:19 1153RedHat 6.0使用CentOS YUM源更新的方法 2 ... -
Google Chrome涉及到开源代码列表
2012-01-19 09:19 1022Google Chrome涉及到开源代码列表 2010年07 ... -
ubuntu速配指南之热门设置
2012-01-19 09:19 749ubuntu速配指南之热门设 ... -
VS6.0安装总结(重启开机dll文件提示找不到的解决办法)
2012-01-17 01:53 2133VS6.0安装总结(重启开机d ... -
西门子网络问题解答
2012-01-17 01:53 2120西门子网络问题解答 2011年07月20日 SIMATI ... -
System32下每个DLL的作用
2012-01-17 01:53 1954System32下每个DLL的作用 ... -
2011-10-10program
2012-01-17 01:53 4442011-10-10program 2011年10月10日 ... -
MFC对话框程序基础复习001
2012-01-17 01:53 721MFC对话框程序基础复习001 2011年04月23日 ... -
Flex Builder3+FDT3 环境配置
2012-01-15 21:03 630Flex Builder3+FDT3 环境配置 2010年0 ... -
在Eclipse下使用Ant编译Flex程序
2012-01-15 21:03 627在Eclipse下使用Ant编译Flex程序 2010年04 ... -
什么是RIA AIR Flex,给你一次扫盲个够
2012-01-15 21:03 599什么是RIA AIR Flex,给你一次扫盲个够 2009年 ... -
Flex超酷皮肤主题推荐
2012-01-15 21:03 757Flex超酷皮肤主题推荐 2009年07月29日 当程序 ...
相关推荐
Java程序员学习Flex和BlazeDS.doc
BlazeDS配置指南 tomcat安装 xml配置 flex与blazeDs
flex 工具 blazeds
Flex技术本身和Java就有很强的关联性,它提供了一个基于Eclipse的IDE和BlazeDS.BlazeDS是个基于服务端的Java远程调用和Web消息的一个开源的技术。有许多应用都是以Java为后端处理的。Flex用于前端。由于Java和Flex...
Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...
Flex,blazeds,企业门户网站Flex,blazeds,企业门户网站Flex,blazeds,企业门户网站Flex,blazeds,企业门户网站Flex,blazeds,企业门户网站
Flex Blazeds入门教程 写的很不错的教程
Flex PureMVC Flex BlazeDS Spring Hibernate 整合 里面一些图标是包双击可查看源代码
flex 结合spring,完成前后台数据传递。
构建全栈式Flex、BlazeDS和Spring集成解决方案。 构建全栈式Flex、BlazeDS和Spring集成解决方案
Flex+Blazeds与J2ee整合 Flex+Blazeds与J2ee整合
JAVA通过BlazeDS与FLEX通信 BlazeDS.zip java项目,使用MYECLIPSE导入 FlexJavaServer.fxp FLEX项目,使用FLASHBUILDER4.5导入
flex blazeds的入门例子,里面就一个String型的方法,在flex上输入字符串,返回一个java的字符串。
blazeDS war包及Flex结合blazeDS的入门程序及操作步骤比较适合入门选手
Flex之BlazeDS文档,后台服务交互!
跟我一步步搭建PureMVC+Flex+BlazeDS+Spring+Hibernate
FLEX——blazeDS原理.pdfFLEX——blazeDS原理.pdf
构建全栈式Flex、BlazeDS和Spring集成解决方案–第二部分 编写to-do list服务器端.pdf
Flex + java+BlazeDs Demo
Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring