解析JavaFX,F(xiàn)lex和Silverlight的橫向對比
本文和大家重點討論一下JavaFX,F(xiàn)lex和Silverlight橫向對比,簡單說來,在今天,F(xiàn)lex比JavaFX高效得多。但我們得記住我們是在用Flex版本3與JavaFX版本1進行對比。
JavaFX,F(xiàn)lex和Silverlight橫向對比
一位Flex和JavaFX的RIA開發(fā)者在本篇文章中對Flex,JavaFX和Silverlight的功能和優(yōu)缺點各自做出了評論。JavaFX1.1于今年2月發(fā)布,2.0版的發(fā)布也正在計劃中。
Flex,JavaFX,Silverlight…
坦白來說,在開發(fā)這個應用期間,我在內(nèi)心一直在比較用JavaFX做與用AdobeFlex做同樣的事情。
◆簡單說來,在今天,F(xiàn)lex比JavaFX高效得多。但我們得記住我們是在用Flex版本3與JavaFX版本1進行對比。如果你了解如何開發(fā)Swing應用,你可能就會寧愿繼續(xù)用Swing,而不是使用我們在這個PetStore版本中手工創(chuàng)建的JavaFX1.0包裝類。
JavaFX1.0最大問題是它不包括任何用于WEB開發(fā)的用戶界面組件。連簡單的超鏈接組件都沒有,更不用說數(shù)據(jù)網(wǎng)絡或者樹列表組件。我認為這沒有其他原因,只能歸咎于Sun公司在開發(fā)此新用戶界面工具時只投入了太少的時間與有限的人力資源。
幸運的是,Sun即將發(fā)布JavaFX2.0版本,它帶有完整的用戶界面組件、容器、導航條和布局控制。微軟僅僅只為宣布自己做出與Flex相似產(chǎn)品,就在2007年發(fā)布了功能不全的Silverlight1.0,直到一年后,全功能的Silverlight2.0才可用。好消息是Java開發(fā)者已經(jīng)開始建造他們自己的開放源碼組件庫:Jfxtras。
◆另一方面,我看到一些功能失于Flex而收于JavaFX。
例如,ActionScript不支持多線程。這在與遠程站點通訊時不成其問題-所有的遠程調(diào)用都是同步的,并且使用回調(diào)機制把服務器數(shù)據(jù)流傳送到客戶機。但是,如果你需要寫或者使用一個執(zhí)行在客戶端的CPU密集計算Java庫時,我認為Java就會勝過ActionScript。兩種語言的語法相當接近(見http://flexblog.faratasystems.com/?p=115)。
JavaFX支持eval()函數(shù),可以在運行過程中編譯并執(zhí)行一小段代碼。Flex并不支持這一功能。
◆數(shù)據(jù)雙向綁定已在JavaFX實現(xiàn),但Flex預計到版本4才支持。
我見過一些對于Flex與JavaFX網(wǎng)絡協(xié)議的基準測試。最近的測試只是提供了客戶機與服務器間的XML和REST數(shù)據(jù)交換。當然,你能編寫Java套接字或者包裝一個RMI客戶到JavaFX,這會比ActionScript實時消息協(xié)議快嗎?我們不知道?;蛘吣隳茉贘AVAApplet和服務器端Java字符流間用HTTP通道通訊。這會比使用AMF,一種基于HTTP的二進制協(xié)議快嗎?我們也不知道。
在開發(fā)移動應用時JavaFX消除了許多復雜性。它承諾可以不用JavaSE開發(fā)桌面應用,可以不需要用JavaME開發(fā)移動應用—JavaFX就是你的唯一需要的解決方案。JavaFX移動開發(fā)提供了硬件加速。記住,Java在移動設備中已經(jīng)有26億的裝機量!Java在這一領域對FlashLite有絕對優(yōu)勢。
JavaFX1.1快要發(fā)布(編者注:該版本已于09年2月17日發(fā)布)。它在移動領域執(zhí)行更快,bug更少,功能更多,但在桌面平臺上沒有什么主要更新。
我明白這不是要求大量現(xiàn)金注入的好時機,但是,如果Sun微系統(tǒng)公司的管理者不能找到一條在未來JavaFX版本上雙倍擴大基于此平臺應用開發(fā)團隊的方式,整個AdobleFlex團隊就能在這一年期內(nèi)安全地發(fā)展起來。因此,如果投入太少,JavaFX就要盡早開放源碼。
文章來源:本文節(jié)選自mentat翻譯的PetStorewithJavaFX1.0.Part1.byYakovFain
【編輯推薦】
- Flex客戶端工程路徑規(guī)劃指導
- Flex開發(fā)者必須知道的10件事
- 技術前沿 看Flex客戶端緩存技術如何使用
- 12個Flex常用功能代碼再現(xiàn)
- 學習筆記 Flex國際化如何支持其他語言