- 浏览: 110622 次
- 性别:
- 来自: 株洲
文章分类
- 全部博客 (55)
- Flex (18)
- Java (0)
- ASP.Net (0)
- CSS (0)
- Html (1)
- Spring (0)
- ActionScript (10)
- Javascript (3)
- 软件使用 (2)
- Ruby (0)
- ColdFusion (0)
- VB.Net (0)
- ROR (0)
- SQL (2)
- 计算机艺术 (0)
- J2EE (0)
- FluorineFx (0)
- PureMVC (1)
- 人生路 (4)
- 算法 (1)
- flash (2)
- Flex 编译 SDK不一致 (1)
- 重写、ButtonBar (1)
- SVN忽略(转) (1)
- 性能优化 (2)
- 心态 (1)
- ActionScript网页游戏 (1)
最新评论
-
fql0915:
求教 这个怎么弄的啊
不同 Flex SDK编译出的问题 -
Sev7en_jun:
lz我有个问题想请教你
比如说 从java哪里获取了一个Lis ...
Flex ArrayCollection几点注意 -
wanghuiwen:
将一张包含人物各种动作的图片,切割成一个一个动作的bitmap ...
Flex 游戏入门级----------------位图切割,人物行走 -
hello_wang:
学习
pureMVC初尝试 -
qingsong:
...
Flex TextLayout Fomat
本文列述了13个Java程序员应当学习Flex和BlazeDS的理由,讨论了为什么Flex结合BlazeDS是开发RIA的最佳组合之一。无论是高度交互的网站还是以Java为后端的企业应用,这项组合都是最佳选择之一。更重要的是,这项组合能同时为开发员和企业带来高回报(ROI)。
相关厂商内容
在阐述Java程序员应当学习BlazeDS的13条理由时,我以一个假想的苏打分派系统来展示如何让已有的Java程序转变为RIA应用。通过这个例子,我同时还会讲解到BlazeDS在已有Java应用或新建Java应用中的多种不同用法。
理由一:开源
Flex软件开发工具箱(SDK)的核心是个开源框架,专门用来开发、维护那些在不同浏览器、不同操作系统下界面都相同的RIA应用。Flex发布采用的是Mozilla公共许可证(Mozilla Public License)。编译后的Flex应用在Adobe Flash平台下运行。
BlazeDS是连接Flex和Java的索桥,是项针对远程调用和消息传递的开源技术。在Java应用服务器上,它以servlet的形式存在,因此可以在任何标准Java网络应用中运用它。BlazeDS以LGPL(Lesser GNU Public License)公共许可证书发布。在发布BlazeDS的同时,Adobe还公布了AMF(ActionScript Message Format)规格说明,BlazeDS、Java和Flex客户端间以这种简洁的二进制格式实现通信。
理由二:完善的社区支持
Flex社区非常活跃,社区贡献了大量项目。Flex.org,这个配以社区新闻的Adobe站点几乎每天都有新的社区贡献;Yahoo!上的Flex用户组的成员也已经超过了11000。
再比如Google Code上的Flexlib项目,已经提交了大量的开源UI组件。Swiz和Mate项目贡献了优化事件处理的框架;还有Gorilla Logic贡献了自动化UI测试的Flex Monkeym项目。
理由三:带来广阔的就业前景
据Adobe的Flex“传道士”——James Ward看来,Flex高级开发员的市场需求非常大,学习Flex能让你拥有极具市场竞争力的开发技能。
理由四:更高的业务效益回报
总体上,开发企业web应用不是个轻松的活,这基本上是众所周知的事实。Flex和BlazeDS提供的不仅仅是功能强大的开发工具,而且开发技术本身相对也非常简单。开发效率可以得到大幅度的提升,产品因此可以很快推向市场。Flex和Flash带来的用户体验也相对更有魅力,对增加流量、提高用户转化率(conversion rate)很有帮助。
很经典的一个例子是Borders连锁书店。他们最近发布了带有“魔法书架”的新网站,这个网站采用Flash接口来模拟书籍借阅的过程。Borders 发现这一模拟借阅非常明显地提到了用户转换率:“借助这个Flash驱动的接口,用户可以浏览书籍、DVD和CD的封面,用户转换率比其他没有此项功能的网站高出62%”。
理由五:Flex是第一个专门为创建UI而设计的语言
大部分语言都不是在第一时间设计其对UI的支持。Java中Swing包的实现刚好是个很好的证明。也就是这个原因,很多像捆绑数据这样的简单动作在Swing当中的实现就非常痛苦。用 Swing最大的问题在于,要想提高开发效率就必须要对其API了如指掌。
Flex刚好相反,它是专门为创建web UI而设计的。正如Bruce Eckel所说,Flex是第一个针对UI开发的领域特定语言(DSL)。用Flex构建UI比其它诸如JSP、JSF、Swing等技术简便得多。语言本身糅合了数据绑定、事件处理、控件布局以及其它一些UI常用开发技巧,就算对语言没有深刻的理解也不会影响开发效率。
理由六:编程风格近似于Java
你可以继续使用现有的Java开发工具来开发Flex应用。当然也可以采用SDK中携带的免费命令行工具,Adobe Flex Builder(一个Eclipse插件),或最近的IntelliJ IDEA 8。
Flex提供的是一个有状态环境,在这个环境中,数据从客户端加载。这种编程模式更像是开发桌面客户端而非HTML编程,这种风格对于用过Java Swing编程的开发员来说应该是相当熟悉。
Flex是MXML(类似XML的UI标记语言)和Adobe ActionScript(面向对象的解析语言)的结合体。鉴于这种结合方式,Flex编程与Java非常相似,因为两者用的都是熟知的面向对象的概念。
最理想的开发环境是把Flex应用创建在web部署文件夹下。这样一来,每次更新应用之后都不需要重新部署,只要在浏览器下刷新一下就可以了。用Flex和BlazeDS开发后,开发效率绝对比之前有很大的提升。
理由七:BlazeDS可以在任何Java应用服务器上运行
BlazeDS目前已发布了多个版本,其中的turnkey版本还包含了为BlazeDS配置的Apache Tomcat。本文中,我用的是二进制发布版本,其中含有一个WAR用来展示如何把应用部署到各种应用服务器上去。不用这个WAR的话,你也可以从中提取 JAR文件放到自己的项目中去。关于安装BlazeDS的各种选项内容,可以参见BlazeDS的wiki。
这里举一个简单的例子,比方说要在已有的一个简单的苏打调配系统中应用BlazeDS。你只要把JAR文件放到项目文件夹下,然后就可以在应用里直接用BlazeDS,可以部署到能够部署应用的任何地方。
在项目中添加BlazeDS,只需要完成下面两个步骤:
- 解压缩BlazeDS WAR文件的内容:jar xvf blazeds.war。
- 把JAR文件都拷贝到项目的lib文件夹下:cp -R WEB-INF/lib /sodaSample。
理由八:可以在已有Java应用中运用
比方说这个简单的苏打调配系统,假设你想要扩展这个已开发好的服务,让其它Flex应用可以远程调用。在现成的应用中配置BlazeDS的基本步骤有:
- 修改
WEB-INF/flex
文件夹下的BlazeDS配置文件 - 在该应用对应的web.xml文件里定义
MessageBrokerServlet
和session监听器
配置好BlazeDS之后,再把苏打调配服务添加到BlazeDS远程配置文件里,Flex客户就能远程调用了。这个过程通过在配置文件里定义一个目的地(destination)、一个或多个信道(channel)来传输数据。基本的AMF信道定义在services.xml文件里。下面这段配置在 remoting-config.xml里定义了目的地(destination):
<destination id="sodaService" channels="my-amf"> <properties> <source>com.gorillalogic.sodaSample.SodaService</source> </properties> </destination>
通过在远程调用配置文件里定义端点(endpoint),Flex客户端就可以调用任何一个基本的Java服务。
要是想把Java数据模型也传送到Flex客户端的话,只要在ActionScript类中定义好两者间的映射:
[Bindable] [RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]
这段代码告诉Flex,在远程调用的服务返回SodaModel
的时候,把它映射到Flex的SodaModel
。本例中的Flex客户端显示的就是如何调用这个Java服务。调用返回一个已经填写好预定信息的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 = event.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服务。同样的方式,你还能把一个对象从客户端传递回服务器端。比如,你可以把一个空的soda model发回服务器(审校注:原文这里写的是客户端,根据上下文判断这里应该是服务器端)。
理由九:可以通过Java来扩展和修改BlazeDS
假如你想添加特殊的日志来记录苏打调配服务被调用的情况,那么你可以扩展标准的Java适配器来添加日志功能。
首先,添加一个继承了JavaAdapter
的Java类:
import flex.messaging.services.remoting.adapters.JavaAdapter. public class TimingJavaAdapter extends JavaAdapter {
其次,重载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)。这种方法也能用来处理其它一些问题,比如记录向服务器发送调用需要多长时间。
理由十:HTML和JSP也能调用BlazeDS
从HTML和JSP也能调用BlazeDS,这种调用有几种不同的实现方式,比如通过Browser Manager或fflashVars
f来实现。Flex应用能够读取由HTML页面设置的fflashVars
f。
比方说你想要通过HTML页面来发送你的用户名和准备预定的苏打类型,你可以在HTML页面这样设置flashVars
:
<object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'> <param name='src' value='SodaSample.swf'/> <param name='flashVars' value='username=ryan&type=coke'/> <embed name='mySwf' src='SodaSample.swf' pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%' flashVars='username=ryan&type=coke'/> </object>
然后,在Flex应用中,你可以通过读取应用参数来获取这些变量:
var username:String; if (Application.application.parameters.hasOwnProperty("username")) { username = Application.application.parameters.username; }
理由十一:Flex和BlazeDS的数据传输性能远胜于其它Ajax解决方案
目前使用的远程过程调用(RPC)都默认选择AMF二进制协议。AMF是个开放的标准,而且相当快。James Ward曾举例比较过多种远程调用解决方案。尽管其它Ajax技术——比如Dojo——已经能够快速处理几百行的数据,但是用Flex和BlazeDS的话可以轻松搞定成千上万行。(请参考James Ward's census,可以了解下各种不同的RIA数据加载技术的测评。)
理由十二:Java客户端能够直接调用BlazeDS
最新发布的BlazeDS当中含有一个Java的AMF类,通过这个类,你可以在Java客户端直接调用BlazeDS服务器。对于单元测试和加载测试来说,BlazeDS的这种调用方式非常实用。
理由十三:Spring下也能用
Adobe和Spring互相联手,尝试将双方项目集成起来。他们发布的第一个Spring–BlazeDS集成版本就向大家展示了他们的良苦用心。Spring Bean能够以远程服务的方式被调用,因此可以清除很多重复的配置文件。更多这方面的相关信息,可以参考该项目的主页。
结论
开源的BlazeDS创建在Java基础上,无论是对新的还是已有的Java服务器项目来说都是个很好的选择。Flex、BlazeDS技术能够提供高性能的远程通信,支持Flex和Java间的对象映射,因此是RIA开发的理想选择。Flex和BlazeDS的开发新手,如果曾经是Java开发员的话,会发现整个开发过程效率非常高,而且很容易掌握。
Flex加BlazeDS还是开发大型Java企业应用的理想选择。我们组开发的上个项目中,应用涉及到50多个不同的界面,而且服务器和客户端之间需要规律性地互传几千行的代码。这类应用几乎没法通过传统的Ajax技术来实现。但是在引入了Flex和BlazeDS之后,我们在年内就发布了第一个版本。看,这就是这对动态组合为你的应用开发项目带来的过人之处。
阅读英文原文:13 Reasons for Java Programmers to Learn Flex and BlazeDS。
发表评论
-
Flex TextLayout Fomat
2010-05-10 16:41 2129关于Flex 图文混排框架 TextLayout Format ... -
Flex 滤镜
2010-01-15 10:39 3463flex内置滤镜:主要包括:bevelFilter:添加斜角、 ... -
Flex 操作xml 例子
2009-12-11 23:18 1639package { import flash.d ... -
Flex事件中的 target与currentTarget
2009-11-21 12:09 1062Flex事件使用过程中event.target与event.c ... -
xml读取的方法
2009-11-21 11:54 1222Flex读取xml的方法很多,大致记录一下 一、URLLoa ... -
游戏入门
2009-11-15 16:20 509第一阶段 MMO 1. 人物 ... -
Flex 游戏入门级------------------碰撞
2009-11-13 15:09 582关于碰撞还在研究............. -
Flex 游戏入门级-----------------地图加载
2009-11-13 15:07 1184MMORPG游戏开发中地图模块是相当重要的模块,而网页游戏一般 ... -
Flex 游戏入门级----------------位图切割,人物行走
2009-11-10 15:21 3882键盘控制任务8个方向行走 代码是借鉴了网上的 位图切 ... -
xml字符串 转化
2009-10-16 17:46 1005做个记录 省的很久不用又忘掉了. xmlstr为xml字符串 ... -
Flex 两个窗口之间的参数传递
2009-08-06 23:08 4006经常有人问怎么在flex里面两个窗体里如何传递参数,下面做个简 ... -
DataGrid控制行对象,通过rendererArray
2009-01-08 14:36 2530我们操作DataGrid时,列易于去访问,但是行似乎不那么好访 ... -
flex与JS实现互相调用
2008-12-10 17:57 4346在做图文编辑时flash10前做的不够好,据说到了 ... -
Flex ArrayCollection几点注意
2008-11-10 14:46 9569ArrayCollection是flex中的数组集合类,能够自 ... -
Flex通过Webservices取得数据的不稳定性??
2008-09-27 15:58 1730最近在使用FLex开发,发现:用FB3去根据Webservic ... -
使用效果(Effect)
2008-08-30 16:14 1290在标签中可以: 在标签上加 showEffect=" ... -
Flex Repeater控件注意
2008-08-08 14:05 6000Repeater 顾名思义,Repeat就是重复的意思, R ... -
多图片上传通过webservices(与js通信的方式)
2008-07-24 10:17 1855以下是通过选择本地图� ... -
flex与webservices通信时,异常捕捉的问题
2008-07-22 21:36 1670flex 调用webservices时,webservices ... -
Flex与Webservices的通信
2008-05-08 11:36 4006引用 这一段时间没事弄了下flex,以下是flex与Webse ...
相关推荐
在Flex与LCDS的配合下,你可以使用LCDS的 BlazeDS 组件(BlazeDS是LCDS的一个开源版本)来创建数据服务,这些服务可以与后端的Java应用程序(例如Java EE服务器上的EJB或Spring Bean)交互。Java代码处理业务逻辑和...
这是最常见的整合方式,Flex程序员与Java程序员分别负责前端与后端的开发,最后将两者整合在一起。 ##### 方式二:Flex项目加入Java元素 此方式适合团队协作开发,具体步骤如下: 1. **新建Flex项目**:在...
这种模式下,Flex程序员和Java程序员可以独立工作,配置资料网络上已经很丰富,本文不再赘述。 **第二步**:将Java元素融入Flex工程。 1. 在Flex视图中,新建一个Flex项目,并指定Java源码的根目录。在Flex ...
### Flex教程核心知识点详解 ...在后续章节中,本教程将详细介绍如何将Flex与Java技术整合,特别是如何使用BlazeDS、Spring、iBatis、Cairngorm 和 pureMVC 这些框架来进行集成开发,从而实现高效、稳定的RIA应用开发。
这是最常见的整合方式之一,特点是Java程序员和Flex程序员可以完全独立地工作。这种方式下,Java工程师负责后端逻辑的实现,而Flex程序员则专注于前端界面的设计和交互逻辑的编写。两者通过数据接口进行交互,如...
2>具有FLEX基础的JAVA程序员 3>具有JAVA基础的FLEX程序员 4>JAVA程序员 4>FLEX程序员 【目录如下】 Flex大礼包 └─Flex教程 第01章 Flex简介.ppt 第02章 MXML.ppt 第03章 ActionScript 3.0.ppt 第04章 Flex中的...
为了理解和掌握Blazeds的工作原理和开发方法,我们需要详细了解它的体系结构、客户端体系结构、通道和通道设置,以及如何在Flex组件中指定通道等内容。 首先,Blazeds应用通常由运行在浏览器或Adobe AIR上的客户端...
当编译一个Flex程序时,其MXML和ActionScript代码会被转换成ActionScript,最终编译成SWF文件。SWF文件部署到服务器后,用户即可通过浏览器访问该程序。 #### Flex应用架构 Flex应用通常采用客户端/服务器端模式...
在Flex与Java的集成中,BlazeDS是一个常用的中间件,它提供了AMF(Action Message Format)协议,使得Flex与Java之间能高效地交换数据。 本系列教程将探讨四种Flex与Java集成的架构方法: 1. Flex + BlazeDS + ...
在这种模式下,Flex程序员和Java程序员各自负责自己的部分,独立开发。Flex应用通常通过HTTP或AMF协议与Java后台服务进行交互,使用 BlazeDS 或 LCDS (LiveCycle Data Services) 作为中间层来处理数据交换。开发者...
Flex4实例学习旨在引导初学者深入理解富网络应用(Rich Internet Application,简称RIA)的概念,通过四个不同的架构方法,让开发者能够熟练运用Flex框架。这四个架构分别是: 1. Flex结合BlazeDS、Spring(版本)...
BlazeDS是一个开源的服务器端技术,主要用于在Adobe Flex应用程序和Java应用服务器之间提供实时的双向通信。这个项目的核心目标是使开发人员能够构建富互联网应用程序(RIA),这些应用程序能够实时地更新显示的数据...
Flex 与 Flash 的区别在于,Flash 主要是一个设计工具,适合创作动画,而 Flex 更倾向于程序员友好,使用 Action Script 和 MXML 语言进行编程,简化了富网络应用的开发过程。MXML 是一种声明式语言,用于描述用户...
7. ** BlazeDS/LiveCycle Data Services**: 这些是Flex与服务器端数据交换的技术,允许Flex应用与Java、.NET等后端系统进行通信,实现数据的实时更新。 8. **移动应用开发**: Flex还支持移动设备上的应用开发,通过...
对于Java开发者,Remote方式特别有用,因为有LCDs和Blazeds等组件支持便捷的后台调用。其他语言开发者则可以选择前两种方式。掌握这些通信方式的原理是十分重要的。 当对前后台通信有深入了解后,意味着已经基本...
通过学习这个 Flex 4 中文教程,初学者不仅可以了解 RIA 的概念,还能掌握使用 Flex 开发富网络应用的基本技能,包括架构设计、数据通信和框架运用等关键点,为开发高质量的 Web 应用奠定坚实的基础。