Flash與Flex路在何方?
Adobe想要強化Flash與Flex在企業,特別是在移動領域中的地位。但最近的一項 調研表明jQuery已經超越了Flash,成為前17,000個網站首選的Web部署解決方案。
近日,來自Adobe Systems開發工具事業部的產品經理Andrew Shorten在Adobe的官方博客上發表了一篇博文,談到了Flash與Flex的當前狀態,并就Adobe的旗艦平臺給出了自己的一些看法。Shorten承認雖然Flash曾是跨平臺Web開發的唯一解決方案,但現在HTML5的發展勢頭越來越好,也表現出了極強的吸引力:
過去有無數的例子表明Flex是富用戶體驗的唯一解決方案。但現在,很多應用已經開始使用HTML5相關的技術并通過瀏覽器交付。在Adobe,我們也向設計者與開發者提供工具來實現這些體驗——Edge與Muse就是佐證。
就HTML5以及相關的工具(Edge與Muse)來說,Shorten認為HTML5并不是“萬靈丹”,企業出于”性能、框架成熟度以及健壯的工具“等原因仍會選擇使用Flex。Shorten繼續談到了Flex與Flash的主要發展方向,即面向企業與移動,特別是后者。他承諾Flash與Flex會成為企業業務應用的運行時與開發環境:
我們將會繼續加大對Flex在企業級應用中的投資力度,確保開發者可以交付富于表現力、健壯的應用。由于我們會提供未來發布版本的更詳盡的信息,因此大家將會看到我們的承諾來解決很多領域的問題,如Spark組件的實現、可訪問性、構建系統集成、性能分析工具以及下一代編譯器的集成,這些舉措會保證Flex成為企業級RIA應用的首選。
關于移動開發的未來,Shorten提到:
我們將會繼續關注運行時性能、原生擴展、新的組件、聲明式皮膚等,并添加更多的平臺以及改進工具工作流,這樣在下一個主版本發布之際,我們期望大多數應用都可以使用Flex進行開發,而完全的原生應用的需求則會降到最低點。
Shorten對此并未透露太多,只是說在10月1日至4日于洛杉磯舉辦的Adobe MAX大會上對此將會有詳盡的介紹。
我不清楚Shorten為何會發表這樣一篇關于Flash與Flex路線圖的博文,不過這可能與前一天appendTo, LLC發布的關于全球前17,000個站點的分析報告有關,這個報告的結果可以概括為:在全球的流行站點中,jQuery已經超越了Flash。appendTo是個提供基于HTML5與jQuery咨詢、培訓與開發的公司。根據報告所述,全世界流行站點中的48%已經在使用jQuery進行部署,47%則使用Flash。該分析基于HTTP Archive所提供的數據,后者則是一個搜集Internet數據的組織。appendTo的CEO及聯合創建者Mike Hostetler說到:
這些數據表明了這兩年的一個發展趨勢。越來越多的網站開發者選擇了jQuery與JavaScript而非Flash,而這種轉換速度則有愈演愈烈之勢。
作為曾經的網站之王,Flash已經開始不斷失守,其地盤不斷被HTML5與JavaScript等Web技術所蠶食。這個勢頭還會繼續下去么?眾多公司是會因為成熟度的原因繼續選擇Flex還是會等待HTML5工具成熟起來呢?HTML5是否會統治Web開發呢?只有時間能告訴我們答案,但現在我們可以根據已有的經驗猜測一二。
此文一經發布,即在InfoQ英文站引來了眾多讀者的回應,現摘錄幾篇評論以饗各位:
讀者Dean Schulze說到:
Adobe對Flex的處理方式非常差勁。他們到現在為止也沒有提供具備商業質量的Eclipse插件來幫助開發者構建Flex應用。哦,他們對插件收費,但這個插件卻是Eclipse世界中最差勁的商業插件了。Adobe花了好多年才發布新版本的Flex。
由于Adobe的質量一直以來都不咋樣,因此除非Adobe的文化發生了變化,否則就別指望Flex能有啥出息了。
現在HTML5標準尚未最終確定,但HTML5卻已經超越了Flex,從這個事實就能看出Adobe對Flex的管理方式有多差勁了。
讀者Clinton Begin說到:
Flex已經玩完了。主要原因是它幾乎沒能提供什么東西,用戶體驗也變得越來越糟。如果說Flex對于開發者來說還不錯的話,那么對于用戶來說就太差勁了。此外,Adobe把Flex 4搞砸了,Flex 3.5要更簡單,更整潔一些。主要原因在于他們之間的互操作實在是太可怕了,Spark并沒有完全取代Halo。惡心啊,惡心。我真后悔在兩個重要項目中使用了Flex。Flex完蛋了。Flash的未來要更加光明,Adobe可以通過多種手段保持Flash的統治地位。即便人們討厭player插件,但Adobe可以通過JavaScript對VM進行移植(有一些開發者可以證實這一概念),他們也可以在編譯器級別上解決這一問題,將AS3和FLA文件編譯為原生的JavaScript(其他一些平臺已經做到了這一點)。即便他們依舊采用插件方式,他們也依舊可以統治Web,因為微軟、Google和Mozilla與Adobe之間保持了良好的關系。
然而,Flash的使用場景將會發生變化。也許優秀的Flash開發者會承認很多站點都在濫用Flash(請看看那些汽車制造商的網站吧)。在現在這個年頭,網站和廣告條不應該再使用Flash了。或許過去這么干是必要的,但現在早已物是人非了。對了,還有視頻。只要瀏覽器能好好地播放,我才不在乎是Flash,還是H.264,或是Ogg呢。作為最終用戶,我不管那么多。
到現在為止,Flash最擅長的領域還是游戲和其他交互式媒體等領域。Flash Player、框架、庫、AS3語言和工具大大超出了HTML5所能提供的,他們之間有至少10年的差距。你試著在各種瀏覽器和設備上使用HTML5來播放音頻,看看結果如何。
你可以通過比JavaScript更好的語言和一些基于矢量的創建工具實現這種效果,然后將其編譯為JavaScript與HTML5 Canvas,但Adobe在這方面領先很多,至少有10年的優勢——更不必說了解這些工具的開發者與設計師的網絡效應了。Adobe所需的就是全新的編譯器或是VM(抑或兩者兼而有之)。其他人則要從頭開始。
因此我的設想是:Flash將會越來越好,或許使用不同的運行時。Flex將會死掉。HTML5將會統治除了游戲之外的其他領域。移動將會依賴于原生代碼以謀求最佳的體驗(Java之于Android,Objective-C之于iOS)。
此外,像Unity之類的工具/框架是非常有趣的,但最終他們將會變成像Flash一樣的插件或是像Java一樣的跨平臺語言(下面是Mono)。因此他們還需要不斷努力才行。
讀者Andreas Tasoulas說到:
能夠指出Flex與Flash之間的差別,這很好。我完全同意你關于Flex與Flash未來的觀點。然而,文章中將Flex與Flash的處境混為一談的做法是有誤導嫌疑的,做調研的公司說jQuery超越了Flash是有些偏頗的(用他們自己的話來說就是他們是關于jQuery的培訓、咨詢公司),這影響到了最后的結果。
讀者Alex TicToC說到:
Web上使用的jQuery比Flash/Flex多根本不是什么事兒,要是事實不是這樣我反而覺得不正常呢。Flash/Flex不應該用于顯示基本信息或是作為大多數簡單網站的技術選型,甚至是電商網站。那些飯店的網站使用了Flash,最后只不過是顯示菜單,然后通過PDF下載,這正是對Flash的濫用。HTML5/JS是個可怕的技術,它可以用于交付企業應用。目前,大多數網站都不是”企業應用“,這個結果不錯。語言、工具、瀏覽器差異性與怪癖、編寫程序/OOP的開發者之間的層次(Google可能沒有這個問題)都是前進路上的障礙。現在總有人通過一些手段來提供一些工具:我看到在線版的純JS PhotoShop,還不賴。但這并不能說明什么。一群聰明的家伙可以創造出很不錯的技術(我想到了PHP)。我還看到有人使用匯編編寫出了非常棒的游戲,很有表現力,但這并不是說匯編就是游戲開發的技術選型。
現在說Flex已死還為時尚早,但我自己也想過Flex的未來,幾乎每天都想。
如果你想要開發一個富客戶端、跨瀏覽器/OS的應用,那么Flex依舊是正確的選擇,雖說要付出更多的努力(需要Flex專家)。
Flex有很多問題,有很多遺留下來的代碼,堆砌的特性、糟糕的設計決策、甚至有時代碼質量也很差(我就見過太多了)。但一言以蔽之,Flex是個框架,它以性能為代價提供了很多特性(你不能去掉大多數特性),除非你是個性能專家,并且洞察Flex的原理,在這種情況下才會保證性能。如果你在配置不錯的桌面機上運行Flex還好。毋庸置疑,Flex在移動設備上的表現不盡如人意。
這幾年來,Adobe做過的最糟糕的決策就是重用現有的Flex代碼基,然后對其進行一些調整就運行在移動設備上了。笨重的皮膚架構、樣式系統對CPU的消耗、優化失效/驗證代碼(意指空轉運行,因為SDK開發者有時會調用invalidate(),并不是所有新特性都會用上)在移動設備上的表現并不好。另一方面,純Flash應用則在移動設備上運轉良好!這只不過是膨脹的Flex/AIR SDK導致的性能問題。Flash Player變得越來越好,這都要歸功于如Thibault Imbert之類的富有激情的人們。AS3語言則有一些提升。另外,Flex SDK變得越來越臃腫,其架構也沒有什么變化(我上一次聽說Flex 5將會對框架進行徹底的整理。在2011/2012之際,你可以期望Flex SDK將會演變為基于插件的平臺,而不是像意大利面條一樣,充滿了大量的單例、靜態、過程式代碼,這些東西都是6年的老古董了)。
在查看Flex SDK的代碼時,我常常覺得這是一個基于社區的項目而不是一個真正成熟的面向企業的產品;有幾個Flex的領導/架構師是非常不錯的,但大多數都不咋地。對基本的OO原則的違背比比皆是,有時都達到了無法接受的程度(復雜的類繼承中,父類竟然完成了子類該做的具體事情)。即便是一些基本的概念,如私有方法的代碼行數不要超過500行這種事情也會經常遇到。
千萬別讓我用Flash Builder。
雖然有這么多問題,但實際上Adobe并沒有真正的對手,我想這種情況會使得Flex成為贏家。
讀者Russell Leggett說到:
我覺得”現在“這個詞兒是很適合的,這取決于開發者的受眾,但確實沒有太多的時間了。我曾使用Flex開發過一個大型的貸款發放系統,但4年前我們卻轉向了html/js,因為我們覺得采用html/js能夠更簡潔地實現我們的目標(當然了,還有其他一些原因)。我們之所以這么做是因為我曾經寫過框架的重要代碼。我們所實現的感覺并不好,但實際效果還不錯,這個經驗告訴我們可以通過html/css/js實現與Flex一樣的應用。我們現在使用了聲明式UI和數據綁定,就像MXML一樣(甚至比它更好),可以通過JSON、REST和代碼生成實現與Java后端的無縫集成。它擁有一個相當強大的構建系統,可以完成依賴分析,并能自動創建延遲加載代碼模塊,這樣就可以將成千上萬行JavaScript代碼劃分到多個文件中,并且根據需要進行加載。在開發過程中,我可以在頁面刷新時快速重新編譯客戶端代碼。
UI與html/css/js一樣靈活,并且現有的第三方組件可以輕松集成進來,同時能夠很輕松地編寫自定義組件來得到框架數據綁定的優勢。
雖然我所開發的框架沒法展示出來,但我看到社區中很多人已經開始采取類似的方式開發框架了。有些框架非常輕量級,如backbone.js,有些則稍微重量級一些,如Sproutcore。雖說工具、文檔及解決方案并不一定適合于企業業務,但瀏覽器與語言卻沒問題。我們只需從背后的公司獲得一些反饋即可,如微軟,它正在大力推進HTML5。甚至連Adobe都開發出了HTML5工具。
查看英文原文:What is the Future of Flash and Flex?
來自: InfoQ