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