JAVA認證:JavaFX,F(xiàn)lex和Silverlight橫向?qū)Ρ?/h1>

字號:

Flex, JavaFX, Silverlight…
    坦白來說,在開發(fā)這個應用期間,我在內(nèi)心一直在比較用JavaFX做與用Adobe Flex做同樣的事情。
    簡單說來,在今天, Flex比JavaFX高效得多。但我們得記住我們是在用Flex版本3與JavaFX版本1進行對比。如果你了解如何開發(fā)Swing應用,你可能就會寧愿繼續(xù)用Swing,而不是使用我們在這個Pet Store版本中手工創(chuàng)建的JavaFX 1.0包裝類。
    JavaFX 1.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é)議快嗎?我們不知道。或者你能在JAVA Applet和服務器端Java字符流間用HTTP通道通訊。這會比使用AMF,一種基于HTTP的二進制協(xié)議快嗎?我們也不知道。
    在開發(fā)移動應用時JavaFX 消除了許多復雜性。它承諾可以不用Java SE開發(fā)桌面應用,可以不需要用Java ME開發(fā)移動應用—JavaFX就是你的需要的解決方案。JavaFX移動開發(fā)提供了硬件加速。記住,Java在移動設備中已經(jīng)有26億的裝機量!Java在這一領域?qū)lash Lite有絕對優(yōu)勢。
    JavaFX1.1快要發(fā)布(編者注:該版本已于09年2月17日發(fā)布)。它在移動領域執(zhí)行更快,bug更少,功能更多,但在桌面平臺上沒有什么主要更新。
    我明白這不是要求大量現(xiàn)金注入的好時機,但是,如果Sun微系統(tǒng)公司的管理者不能找到一條在未來JavaFX版本上雙倍擴大基于此平臺應用開發(fā)團隊的方式,整個Adoble Flex團隊就能在這一年期內(nèi)安全地發(fā)展起來。因此,如果投入太少,JavaFX就要盡早開放源碼。