Flash與開放Web的應用開發平臺之爭
一般來講,開放技術通常比專有技術更普及、生命周期更長,而后者則往往能夠比較及時的支持高級功能。因此,Web應用開發者需要堅持 實用第一,盡可能的選擇開放技術,但是在某些特殊情況下,也應該能夠毫不猶豫的選擇專有技術。這種選擇與開放或其它信仰無關,而只是 為了選擇一種合適的技術,來最大化目標應用程序取得成功的可能性。換言之,這不應該是一個私人和情緒化的選擇,而是一個業務和理性的 選擇。
對于今天的主流富Web應用來說,主要有兩大技術可用:Flash和OpenWeb(諸如HTML、CSS、JavaScript、SVG等)。雖然SilverLight和 JavaFX肯定也是非常有意思的技術,但它們依然是未被事實驗證過的Web事物,本文出于簡化考慮,將重點討論Flash和OpenWeb。
由于多年研究該問題,并且在兩個陣營都花費了較長時間,我可以坦白的說雙方各有自己的優勢和不足,選擇哪一個要取決于你的富Web應 用的要求,你甚至可能需要同時使用它們。做出合理選擇的技巧是,客觀的了解每一個技術的優勢和不足,不帶任何個人情緒作出理性選擇。
為了幫助解答何時用什么技術這個問題,以下是一個兩大應用開發平臺技術-功能列表,并附上簡短解釋。
應用開發平臺之爭—SEO(OpenWeb)
盡管谷歌在索引Flash內容上取得了一些進展,針對Flash的SEO依然處于初級階段,因此,如果你的應用程序需要依賴SEO來取得成功,你 更好的選擇是使用已知的URL和HTML最佳實踐。對于未使用任何未經驗證的SEO技術的標準頁面HTML內容來說,進行SEO也不是一件容易的事情 。而一旦以錯誤的方式使用了Ajax,對SEO來說就是一件極具破壞性的事情。舉例來說,在很多單頁面Web應用中會使用“#”URL技巧,這可能 就不利于SEO的實現。
應用開發平臺之爭—移動Web(OpenWeb)
移動Web是另外一個Flash技術依然處于落后局面的領域。盡管Adobe在這個領域正在取得一些有希望的進展,如果你不是在創建一個2D游戲 或視頻/多媒體為中心的應用程序,就沒有多少理由在已經非常強大的現代移動Web瀏覽器上再使用另外一個帶來開支和不確定性的虛擬機。現 在,多數新高端移動設備具有類似桌面的瀏覽器功能(通常是基于WebKit),它可以讓開發者完全利用諸如Ajax和CSS2.1+等OpenWeb技術。因 此,最大化你的手機應用能力的最佳方式是堅持使用OpenWeb技術,并根據簡化版瀏覽器來設計你的Web用戶界面。另外,開發者可以充分利用 當今的移動應用商店來推廣特定手機的應用,不過這并非本篇文章討論范圍,因此略過。
應用開發平臺之爭—富HTML顯示&編輯(OpenWeb)
盡管Flash10中有一些技術可以簡化HTML布局和編輯組件的開發,它依然與瀏覽器本身的功能相差甚遠。有人猜測稱Flash11可能具有更好 的HTML功能,甚至可能有嵌入式WebKit,但是就目前來說,如果你希望顯示和編輯富HTML,毫無疑問,Web瀏覽器才是你的最佳拍檔。
應用開發平臺之爭—按需性能(OpenWeb)
當用戶首次訪問一個Web應用時所獲得的體驗就是按需性能,此時該應用的任何信息不會出現在瀏覽器的緩存中。人們對個人Web應用常見 的預期值是,響應時間不要超過1秒。如大家所知,解釋型頁面可以更有效的完成按需內容及交互的執行,而Flash應用模式的編譯特點則在進 行預加載執行時更具有優勢。因此,對于那些要求快速交互體驗的應用來說,OpenWeb模式更適合。
應用開發平臺之爭—預加載性能(Flash)
相反,Flash和類似Flex等框架的編譯方式,使它可以更優化地實現預加載交互。因此,如果你不介意在你的應用程序上有一個“進度加載 條”,并且有一個高度執行性能需求,那么Flash可能是一個好的解決方案。值得提出的是,諸如谷歌ChromeV8和Mozilla火狐SpiderMonkey中 的新JavaScript虛擬機,正在打破解釋型語言性能的障礙。不幸的是,微軟IE瀏覽器在語言性能方面依然處于落后狀態。盡管我們認為微軟也 正在優化它們的JavaScript引擎,但是目前來說,獲得高執行邏輯性能的最佳方式是使用FlashActionScript3。
應用開發平臺之爭—動畫(Flash)
如果你希望畫質流暢,那么Flash是你最好的朋友。盡管這個說法目前成立,不過你應該知道的重要一點是,通過現代瀏覽器(包括IE8) 和諸如jQuery等Ajax工具,完全借助于OpenWeb技術的應用程序也可以具有還過的去的動畫功能。不過,除非動畫是應用程序的重要基石,它 不應該成為選擇哪一種技術的關鍵或決定性因素。
應用開發平臺之爭—2D&3D(Flash)
這無疑是Flash的一個強項。盡管OpenWeb正在建立某些2D標準和實現(諸如Canvas和SVG等),但是在像素和矢量圖形創建和管理方面,沒 有任何一個技術能夠比Flash提供更高的性能和功能。盡管Canvas和某些SVG現在已經被火狐和其它基于WebKit的瀏覽器(蘋果的Safari和谷歌 Chrome等)所支持,但微軟的IE瀏覽器卻沒有支持它們。開發者可以通過使用JavaScript或Flash庫等兼容方式來回避微軟這個限制,但是往 往以犧牲功能和性能為代價。換言之,盡管以SVG/Canvas/VML建立一個在線版Photoshop或類似Visio的應用是可能的,但是使用Flash技術創 建它所需要的投入肯定更具吸引力。不幸的是,Flash不支持解釋型模式,因此Web開發者將不得不完全轉向Flash開發模式和工具。盡管有一 些有趣的FlashSVG庫可以剛Web開發者使用Flash來展現SVG,或使用瀏覽器JavaScript虛擬機來運行腳本,但是這樣做通常會以降低性能為代 價。
應用開發平臺之爭—文件處理(Flash)
文件處理功能一直完全被不同的OpenWeb標準和實現組織所遺忘。創建一個通過瀏覽器存取本地文件的有效體驗一直是一個挑戰。即時是最 新的瀏覽器,其文件輸入模塊近允許一次選擇一個文件。盡管在這方面Flash也難成完美,不過它在這個方面增加了一些不錯的功能,諸如多 文件選擇功能,另外還增加了一個很重要的功能,可以在將文件從客戶端發往服務器之前閱讀它們的內容。另外一種選擇是使用Java技術, Facebook在其圖片上傳程序中就使用了該技術,它通過簽名applet幾乎實現完整的文件系統控制。高級剪貼板支持是另外一個被忽視的需求。
應用開發平臺之爭—視頻/音頻回放(Flash)
在HTML5中有兩個比較大的新功能,一個是離線支持,另一個則是視頻和音頻標簽。不過,關于視頻標簽的支持格式,目前還存在一些爭論 。其中最大的問題之一是最好的視頻格式往往具有版權,盡管諸如Adobe、微軟和谷歌等商業廠商愿意為它們的用戶支付視頻稅,而開源社區 卻發現自己處于“雙環困境”(catch-22)中。因此,從一個應用程序開發者的角度來看,Flash是迄今為止能夠為應用程序帶來高品質視頻 和音頻的最佳選擇。而且Flash最近還支持了H.264/mp4,就目前來說,沒有什么比它更適合了。
如上所述,沒有一種技術可以滿足所有需求。根據應用程序需要,你可能需要組合使用多種技術。很明顯,對于一個技術廠商來說,希望 自己的技術被應用在盡可能多的場景中;而對于應用程序開發者來說,無論采用哪一種技術,唯一的目標就是確保應用程序取得成功,開發者 在投入太多時間和金錢到某一種技術之前,應該理性、客觀的評價每一種技術的優缺點。另外,在定義應用程序需求時,要真正關注用戶關心的事情。
【編輯推薦】