剖析學(xué)習(xí)AdobeFlex時常見十大誤區(qū)
本文和大家重點討論一下對AdobeFlex的十大誤解,在Qcon上,Adobe的JamesWard和InfoQ.com一起分享了他推廣傳播Flex應(yīng)用框架過程中所遇到的對AdobeFlex的十大誤解。相信本文介紹一定會讓你有所收獲。
對AdobeFlex的十大誤解
在Qcon上,Adobe的JamesWard和InfoQ.com一起分享了他推廣傳播Flex應(yīng)用框架過程中所遇到的對AdobeFlex的十大誤解。
1、為了運行Flex應(yīng)用程序用戶需要安裝新東西。
Ward向InfoQ.com獨家論述了Flash采用比例和Flex編程模型:
Flex2和Flex3必需運行在FlashPlayer9上。FlashPlayer9運行時目前已經(jīng)被安裝在世界94%的計算機上:http://www.adobe.com/products/player_census/flashplayer/version_penetration.html
Flex2和Flex3的應(yīng)用程序執(zhí)行在FlashPlayer9環(huán)境下。Flex應(yīng)用程序構(gòu)建在本地FlashPlayerAPI之上,如矢量圖形、位圖處理和網(wǎng)絡(luò)(基于瀏覽器網(wǎng)絡(luò)協(xié)議棧)。Flex框架增加了如日期選擇器、數(shù)據(jù)表格、圖表等可重用組件。編譯Flex應(yīng)用程序的結(jié)果產(chǎn)生一個SWF文件,它是供FlashPlayer使用的二進制字節(jié)碼格式。SWF文件包含的是Flex框架代碼和項目自定義代碼的字節(jié)碼。Flex編譯器對字節(jié)碼進行了優(yōu)化,只將要用的類編譯到SWF文件中。
對于桌面應(yīng)用軟件,Adobe的目標是推出自己名為AdobeAIR的新桌面運行時,希望能像Web運行時一樣普及。AdobeAIR1.0版本將于2008年初發(fā)布。目前,從labs.adobe.com上可得到的AIR是測試版。許多公司都已經(jīng)在使用AIR構(gòu)建產(chǎn)品軟件。eBay的應(yīng)用程序eBay桌面就是一個例子。
2、FlashPlayer是100%私有的。
Ward繼續(xù)為InfoQ.com做出說明:
FlashPlayer的核心是Tamarin虛擬機,這是Mozilla旗下的一個開源項目。而SWF文件格式不是完全開放的,它是由osflash.org社區(qū)備案的。已有很多讀寫SWF文件的開源產(chǎn)品。FlashPlayer產(chǎn)品的發(fā)展方向在很大程度上受該社區(qū)及其需求所影響。FlashPlayer的核心語言是ECMAScript262的一個實現(xiàn),ECMAScript262是JavaScript的規(guī)范。Flex還將CSS用于組件/應(yīng)用的樣式。AdobeAIR使用web標準以及開源技術(shù)如Tamarin、Webkit和SQLite作為其桌面應(yīng)用的基礎(chǔ)。
3、Flash是為設(shè)計者、視頻準備的,而且讓人討厭。
2007年7月Ward在博客文章“我是如何克服對Flash的恐懼”中指出:
毋庸置疑的,F(xiàn)lash的能力被濫用了。彈出窗口、跳過介紹和煩人的廣告橫行于我們的屏幕上。我曾聽人們說過不應(yīng)該因為一個宗教被濫用而否定它。這一格言同樣適用于技術(shù)。FLASH不能因為有些人拿它來做令人討厭的東西而遭到摒棄。畢竟e-mail并沒有因為垃圾郵件泛濫而消失。
Ward為InfoQ.com詳細闡述了該主題:
傳統(tǒng)的FLASH是用為設(shè)計者提供的基于時間軸的工具構(gòu)建的。Flex是用于構(gòu)建基于Flash的內(nèi)容/應(yīng)用的開發(fā)者工具套件。設(shè)計者和開發(fā)者通過共享兩個工具之間的資源能夠攜手合作。Flex增加了一個全面的組件庫:
http://www.adobe.com/go/flex_explorer_app
http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15&loc=en_us
4、Flex不是為企業(yè)/商業(yè)應(yīng)用準備的。
在過去數(shù)周里,Ward發(fā)布了關(guān)于Oracle在AdobeFlex之上實現(xiàn)大量新應(yīng)用的七篇系列博客文章。這些應(yīng)用軟件近來公布在OracleOpenWorld上,其范圍涉及從銷售工具到數(shù)據(jù)庫管理和商業(yè)智能。
除了Oracle對Flex的使用,InfoQ.com也公布了一些使用Flex開發(fā)企業(yè)應(yīng)用的團體。Ward也為InfoQ.com指出了很多使用AdobeFlex開發(fā)企業(yè)級應(yīng)用的例子,包括:Workday,SAP,Salesforce和BusinessObjects。
5、Flex太貴。
Ward詳述了Adobe所做的一系列努力來消除公眾對價格的誤解:
Flex是為構(gòu)建Web和桌面的豐富互聯(lián)網(wǎng)應(yīng)用所提供的、免費的開發(fā)工具包,并且馬上要開源。免費SDK包含了開發(fā)者構(gòu)建RIA應(yīng)用所需的一切,構(gòu)建出的RIA應(yīng)用可在任何瀏覽器或操作系統(tǒng)上同樣工作。免費FlexSDK的一部分部分是一套內(nèi)容廣泛的組件集,其可擴展、可更換皮膚且可訪問。你可以在Flex組件資源管理器上看到很多這樣的組件:http://www.adobe.com/devnet/flex/samples/code_explorer/
FlexBuilder是一個可選的Eclipse插件,這讓使用免費FlexSDK開發(fā)應(yīng)用軟件更高效。它包括如集成調(diào)試、設(shè)計視圖和代碼補全等功能。
最近也采取了不少辦法來調(diào)整FlexBuilder的價格。FlexBuilder現(xiàn)正免費提供給學(xué)生及教職人員。不帶圖表組件的vanilla版本FlexBuilder,其價格已降至249美元,以此更好地平衡FlexBuilder的價格等級。
還有許多構(gòu)建Flex應(yīng)用后端基礎(chǔ)結(jié)構(gòu)的可選項。為了利用高性能AMF數(shù)據(jù)傳輸協(xié)議,有如LiveCycle數(shù)據(jù)服務(wù)這樣的官方Adobe產(chǎn)品,以及如Granite數(shù)據(jù)服務(wù)這樣的眾多開源項目。使用AMF消除了以下不必要的步驟:從數(shù)據(jù)轉(zhuǎn)換為文本(SOAP,RESTful等),傳送,然后再由文本轉(zhuǎn)換回數(shù)據(jù)。AMF還允許在線傳送中保存類型信息。
關(guān)于AMF和其他基于文本序列化技術(shù)的比較,請看JamesWard的RIA基準應(yīng)用系統(tǒng)普查:http://www.jamesward.org/census.
6、Flex的應(yīng)用程序需要專用服務(wù)器。
Ward再次為InfoQ.com講述:
Flex應(yīng)用程序可以運行在任何Web服務(wù)器,應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之上。Flex應(yīng)用程序更像是客戶端-服務(wù)器應(yīng)用程序。由于邏輯是運行在FlashPlayer客戶端內(nèi),你需要某種方式來與服務(wù)器交互。你可以有很多不同的選擇將Flex連接到你的基礎(chǔ)結(jié)構(gòu)。不需要任何專用庫,你可以將你的后端數(shù)據(jù)和服務(wù)暴露為RESTful、XML或SOAP,并且很容易在你的Flex應(yīng)用中消費這些數(shù)據(jù)。如果選擇使用AMF二進制序列化協(xié)議,你可能需要添加一些額外的庫到你的web應(yīng)用軟件。AMF只是另外一種序列化技術(shù),就如XML或JSON一樣,所以它可以作為你用于和后端SOA溝通的多樣方式中的一種。
7、Flex很難學(xué)。
InfoQ.com社區(qū)的LeftieFriele,就InfoQ.com文章"誰在使用Flex?"發(fā)表了評論,詳述了他的公司在學(xué)習(xí)Flex上的經(jīng)驗:
我們初創(chuàng)公司Ezmo在開創(chuàng)以來就在使用Flex,我們非常愉快的使用該框架。
不需要任何Flex/Flash的預(yù)備知識,我們可以在少于兩周之內(nèi)構(gòu)建出我們的應(yīng)用程序。Java和Flex之間的整合更是超級簡單,開始使用Flex就像是公園漫步。
說到工具支持,FlexBuilder也是相當不錯。如果你熟悉Eclipse環(huán)境,你能順利起飛,不會碰到任何問題。唯一缺憾是缺少更好的持續(xù)集成工具和更好的Maven插件來構(gòu)建Flex應(yīng)用。
對于Flex新手們,Ward給了一段截屏錄像,展示了一個Flex應(yīng)用的構(gòu)建過程,以幫助你起步。此外,還有許多關(guān)于使用Flex和Java的其他文章在AdobeDeveloperConnection上。
8、使用Flex,我需要重建我的整個應(yīng)用。
今年1月,BruceEckel發(fā)表了一篇題目為"混合Java"的文章。文章中他認為Java團體應(yīng)該繼續(xù)使用Java好的方面,但是也應(yīng)該采用其他技術(shù)來替代Java薄弱的方面。文中主要焦點是使用AdobeFlex作為用戶界面來取代傳統(tǒng)的Java選項(Swing、JSF等……)
Ward詳細闡述了這一概念:
既然Flex應(yīng)用程序只是應(yīng)用程序的UI端,而后端通常都是一樣的。如果你的后端是依照SOA模式構(gòu)建的,那么通常很容易將這些服務(wù)暴露給一個新的FlexUI。這將保持你現(xiàn)有的商業(yè)邏輯不變,無論它使用的是EJB、Spring服務(wù)還是POJO。
9、Flex打破了常規(guī)的瀏覽習(xí)慣,象后退按鈕。
Ward的博文討論了后退按鈕:
Flex已經(jīng)內(nèi)建了對后退按鈕的支持且非常容易定制,因此這已不再是問題。Flex也提供了一個簡單的辦法來處理“#”url(或命名的錨點),url隨應(yīng)用狀態(tài)的變化而變化。另一個Web1.0的整合問題業(yè)已解決。
Ward為InfoQ.com補充了更多的細節(jié):
Flex3給應(yīng)用提供了一個簡單的方式在命名的錨點中儲存狀態(tài)參數(shù),當該URL被請求時可以根據(jù)這些參數(shù)正確地恢復(fù)狀態(tài)。有關(guān)這一特點的更多信息可以參見Flex3特性介紹:深連接專題介紹文檔。
可訪問性對Flex應(yīng)用來說一直是非常重要。因為FlashPlayer與Jaws及其他可訪問性技術(shù)一起工作的,因此為基于Flash的應(yīng)用程序增加可訪問性的能力已經(jīng)具備了。Flex框架將可訪問性納入核心框架。有許多不同方面的可訪問性,這取決于你的應(yīng)用程序需要支持什么樣的損傷和殘疾。你可以在開發(fā)者指南中找到更多有關(guān)Flex可訪問性特性的信息。
10、Flex能做到的,Ajax也能做到。
Ward解釋說:
FlexRIA和Ajax不是非此即彼的關(guān)系。像GoogleFinance網(wǎng)站就展示了如何同時使用Flex和Ajax。Ajax非常適合以內(nèi)容為中心的應(yīng)用,而Flex則適合于互動,媒體和數(shù)據(jù)為中心的應(yīng)用。如果你的應(yīng)用介于這兩者之間,那么你可以用FlexAjaxBridge來結(jié)合這兩種技術(shù)。在Flex3里,FlexAjaxBridge已經(jīng)直接集成到SDK中。如果使用的Flex2,你將需要單獨下載FlexAjaxBridge。
此外,InfoQ.com社區(qū)的MichaelMarth講述了他的小組為什么選擇Flex:
我們即將推出的網(wǎng)上約會站點viibee.com使用的就是Flex2
理由是:付出相同的努力,F(xiàn)lex使我們能夠創(chuàng)建的用戶體驗遠遠超過我們用Javascript/Ajax所能做到的。
InfoQ.com社區(qū)中是否對AdobeFlex框架也有這些誤解呢?是否還有其他阻止你使用Flex應(yīng)用框架的阻礙是Adobe尚未解釋的?
查看英文原文:Top10AdobeFlexMisconceptions
【編輯推薦】
- 解析AdobeFlexBuilder3的使用方法
- 常用FlexBuilder快捷鍵用法指導(dǎo)
- 術(shù)語匯編 AdobeFlex概述
- 技術(shù)前沿 Flex2.0 從零開始實現(xiàn)文件上傳
- FlexBuilder開發(fā)方法及特點解析