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