亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java程序員學習Flex和BlazeDS的十三個理由

2019-11-17 04:01:35
字體:
來源:轉載
供稿:網友
本文列述了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或fflashVarsf來實現。Flex應用能夠讀取由HTML頁面設置的fflashVarsf。

比方說你想要通過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之后,我們在年內就發布了第一個版本??矗@就是這對動態組合為你的應用開發項目帶來的過人之處。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情片免费| 日韩精品视频在线观看免费| 热99精品只有里视频精品| 在线成人激情黄色| 国产69精品久久久久9| 欧美一级淫片播放口| 在线播放国产精品| 欧美视频中文字幕在线| 国外色69视频在线观看| 国内精品免费午夜毛片| 91香蕉国产在线观看| 成人免费在线视频网站| 亚洲自拍欧美色图| 亚洲成色www8888| 精品国产一区二区在线| 亚洲男人天堂2024| …久久精品99久久香蕉国产| 成人在线小视频| 亚洲欧美日韩中文视频| 成人午夜两性视频| 高清视频欧美一级| 中文字幕国产精品| 欧美特级www| 在线观看亚洲区| 69精品小视频| 国产免费一区二区三区在线观看| 欧美性理论片在线观看片免费| 国产精品视频xxx| 日韩av在线电影网| 日本精品久久久| 日韩中文字幕在线看| 97久久伊人激情网| 亚洲第一色中文字幕| 国产精品久久一区| 日韩经典一区二区三区| 国产一区二区三区视频在线观看| 精品国产鲁一鲁一区二区张丽| 国产精品jizz在线观看麻豆| 亚洲精品日韩丝袜精品| 久久99久久99精品免观看粉嫩| 国产精品久久电影观看| 中文在线资源观看视频网站免费不卡| 国产精品自拍视频| 日韩电视剧在线观看免费网站| 日韩国产欧美精品在线| 国产成人精品一区二区| 亚洲嫩模很污视频| 欧美视频13p| 日韩精品视频免费专区在线播放| 久久久精品一区二区三区| 亚洲欧洲一区二区三区久久| 26uuu亚洲国产精品| 性欧美视频videos6一9| 亚洲成人亚洲激情| 日韩在线免费视频观看| 国产精品爽爽ⅴa在线观看| 中文字幕欧美日韩va免费视频| 欧美重口另类videos人妖| 国产日本欧美一区二区三区在线| 日韩有码视频在线| 国产九九精品视频| 国产精品成人品| 日韩精品在线观看一区二区| 久久精品国产成人| 亚洲人线精品午夜| 国产精品普通话| 亚洲自拍偷拍在线| 成人97在线观看视频| 亚洲女人天堂成人av在线| 九九热r在线视频精品| 91sao在线观看国产| 亚洲视频在线看| 国产精品r级在线| 日韩国产中文字幕| 精品久久久久久久久久久久久| 欧美成年人视频| 亚洲欧美日韩另类| 亚洲sss综合天堂久久| 91久久国产精品| 久久久精品999| 91精品国产综合久久久久久蜜臀| 久久久999成人| 国产精品高潮呻吟久久av野狼| 欧美日韩国产成人在线| 国产精品第10页| 国产91精品久久久久| 国产欧美 在线欧美| 国内精品久久影院| 久久在线免费观看视频| 亚洲男人天堂2023| zzijzzij亚洲日本成熟少妇| 中文字幕亚洲自拍| 日韩在线精品一区| 欧美激情18p| 亚洲日本aⅴ片在线观看香蕉| 久久久成人精品视频| 疯狂蹂躏欧美一区二区精品| 久久久精品免费视频| 亚洲精品动漫久久久久| 久久亚洲精品一区二区| 日韩电影在线观看永久视频免费网站| 久久久久久亚洲| 国产91在线播放| 午夜精品一区二区三区在线视频| 亚洲免费视频网站| 不用播放器成人网| 欧美黄色片在线观看| 国产成人精品a视频一区www| 欧美成人剧情片在线观看| 亚洲美女自拍视频| 欧美孕妇毛茸茸xxxx| 97在线免费视频| 精品香蕉在线观看视频一| 亚洲视频在线看| 最近2019免费中文字幕视频三| 久久久精品一区| 怡红院精品视频| 亚洲风情亚aⅴ在线发布| 欧美成人精品h版在线观看| 国模私拍视频一区| 国产一区二区三区在线播放免费观看| 久久人人爽国产| 亚洲男人的天堂在线播放| 精品亚洲男同gayvideo网站| 日韩美女视频中文字幕| 91成品人片a无限观看| 亚洲国产高清福利视频| 亚洲va久久久噜噜噜| 久久777国产线看观看精品| 91精品成人久久| 中文字幕免费精品一区| 日韩中文字幕网| 亚洲a成v人在线观看| 久久国内精品一国内精品| 成人免费直播live| 亚洲女人被黑人巨大进入| 亚洲精品91美女久久久久久久| 黄色精品一区二区| 亚洲国产精品系列| 92版电视剧仙鹤神针在线观看| 粗暴蹂躏中文一区二区三区| 亚洲精品一区二区久| 在线播放日韩av| 日本午夜精品理论片a级appf发布| 久久久久这里只有精品| 97精品久久久| 国产欧美日韩精品丝袜高跟鞋| 国产偷亚洲偷欧美偷精品| 久久99精品视频一区97| 国产精品老女人视频| 国产99久久精品一区二区 夜夜躁日日躁| 国产成人av在线播放| 亚洲视频777| 色综合久久中文字幕综合网小说| 午夜精品久久久久久久男人的天堂| 精品国产视频在线| 久久久久免费精品国产| 亚洲欧美激情视频| 国产日韩综合一区二区性色av| 欧美一级视频一区二区| 欧美高清视频在线观看| 欧美乱大交xxxxx另类电影| 亚洲精品理论电影| 成人免费直播live|