JavaFX對(duì)Java開發(fā)者到底意味著什么
關(guān)于JavaFX已經(jīng)有非常多的輿論報(bào)道、討論和手冊(cè)指南,對(duì)我們這些普通的Java開發(fā)者而言,JavaFX從技術(shù)角度來(lái)講并不難掌握,更難的是我們要搞清楚它對(duì)我們而言到底是否有用,也即它到底意味著什么呢?James Sugrue在Javalobby的博客中闡述了他對(duì)此的看法。
簡(jiǎn)述歷史
JavaFX是一個(gè)富客戶端平臺(tái),可以創(chuàng)建出在多種設(shè)備上都可以運(yùn)行的應(yīng)用,這些設(shè)備包括電腦桌面和移動(dòng)設(shè)備。JavaFX其中的一個(gè)主要優(yōu)點(diǎn)是你為其中一個(gè)設(shè)備寫出的代碼可以運(yùn)行在任何其他設(shè)備上,因?yàn)镴avaFX集成了Java runtime,只要桌面安裝了Java或者手持設(shè)備支持JavaME,那么這些代碼就可以運(yùn)行。
JavaFX首次公布在Sun在2007年的JavaONE大會(huì)上,Version 1.0發(fā)布在2008年12月,當(dāng)時(shí)的主要對(duì)象是桌面平臺(tái)盡管近期發(fā)布的1.1又瞄準(zhǔn)了移動(dòng)設(shè)備。簡(jiǎn)而言之,JavaFX是Sun推出的競(jìng)爭(zhēng)產(chǎn)品,針對(duì)現(xiàn)有的兩個(gè)主要的RIA應(yīng)用:微軟的SilverLight和Adobe的Flex/AIR。
JavaFX最大的優(yōu)勢(shì)來(lái)自于它跟Java代碼、Swing組件的交互性,有人對(duì)Sun投資JavaFX持有懷疑態(tài)度,他們認(rèn)為Sun應(yīng)當(dāng)更好地來(lái)關(guān)注Swing,但無(wú)論怎樣JavaFX的開發(fā)為Java開發(fā)者開啟了更多的門。而且JavaFX已經(jīng)有了很高的下載數(shù)量,在version 1.1發(fā)布之前,下載量接近80,000,000。
有什么JavaFX可以做而Swing做不到?
JavaFX的優(yōu)點(diǎn)之一是它能夠?qū)avaFX應(yīng)用從web瀏覽器中抽取到桌面,因而這將創(chuàng)建像WidgetFX這樣的應(yīng)用變得非常簡(jiǎn)單,從而提供桌面型的小程序。富視頻內(nèi)容(Rich video content)通過(guò)JavaFX提供的On2 視頻編碼器變得可能,而且更妙的是這些視頻編碼器可以工作于Swing應(yīng)用中。
JavaFX應(yīng)用是由JavaFX Script編寫的。JavaFX Script充分利用了一款場(chǎng)景圖形模型(scene graph model),它可以在你的UI中生成、轉(zhuǎn)變和卡通制作。使用JavaFX Script你可以快速地將用戶界面放置在一起,因?yàn)檫@個(gè)語(yǔ)言是專門為用戶界面的創(chuàng)建而編寫的,因而生成的應(yīng)用比Swing應(yīng)用感覺(jué)上更加豐富、流暢。
JavaFX在技術(shù)層面的定位
“富互聯(lián)網(wǎng)應(yīng)用”可以被定義為一種表現(xiàn)桌面應(yīng)用特征的web應(yīng)用,有人會(huì)因此而想起RIA,有人會(huì)想起Flash。也許除此之外,人們就不再認(rèn)為其他的也是富互聯(lián)網(wǎng)應(yīng)用,但Java Applets曾提供給我們第一個(gè)真正意義上的餓RIA。10年來(lái),Sun繼往開來(lái),為Java開發(fā)者提供了一種新的方法。
那么用JavaFX編寫應(yīng)用意味著什么呢?如果我們需要的應(yīng)用跟其他Java組件和庫(kù)有很強(qiáng)的交互性,對(duì)UI層來(lái)說(shuō)JavaFX就是一個(gè)好的解決方案;如果你想費(fèi)最少的力氣寫出一個(gè)應(yīng)用工作在桌面和移動(dòng)設(shè)備上,JavaFX就是你所需要的技術(shù)。單一原文件維護(hù)(single-sourcing)是JavaFX的主要優(yōu)點(diǎn)。
但如果考慮到現(xiàn)在的應(yīng)用,JavaFX就有些別扭。因?yàn)楝F(xiàn)在還沒(méi)有官方的方法將JavaFX植入到Swing(或者SWT)應(yīng)用中,盡管有可用的工作區(qū)(http://blogs.sun.com/javafx/entry/how_to_use_javafx_in),但我可能還是不會(huì)將JavaFX應(yīng)用于產(chǎn)品級(jí)別的應(yīng)用中。從我跟JavaFX團(tuán)隊(duì)的交流中獲悉,這些問(wèn)題將在以后的版本中解決。如果有好的架構(gòu)、UI層的清晰分離,將UI代碼移動(dòng)到JavaFX中是有可能的。
在編寫移動(dòng)設(shè)備方面,JavaFX比JavaME提供了更為豐富的圖形和UI。用JavaFX編寫移動(dòng)設(shè)備的代碼很簡(jiǎn)單,而且易于測(cè)試,因?yàn)樽烂婧鸵苿?dòng)端使用的是相同的編程模式。
總而言之,如果你想嘗嘗鮮,想有一個(gè)比Swing更浮華閃光的用戶界面,JavaFX是不錯(cuò)的選擇。
哪些組件
JavaFX的下載有三種不同的組件。SDK包括JavaFX編譯器、runtime工具和針對(duì)視頻、圖形和網(wǎng)絡(luò)設(shè)備的各種庫(kù),這些均會(huì)在創(chuàng)建桌面或者移動(dòng)平臺(tái)的應(yīng)用時(shí)用到。
還有JavaFX的Netbeans插件。下載網(wǎng)址中提供了一個(gè)可以下載整個(gè)JavaFX的Netbeans IDE (6.5)的鏈接。這有助于更快地創(chuàng)建JavaFX應(yīng)用,而且提供了移動(dòng)仿真器,從而可以為移動(dòng)設(shè)備預(yù)覽所編寫的應(yīng)用。
最后,JavaFX 1.1 Production Suite是一套工具和插件,設(shè)計(jì)者可以將圖形數(shù)據(jù)輸出到JavaFX應(yīng)用中。這對(duì)Java開發(fā)者而言可能是興趣最小的一個(gè)組件,但圖形設(shè)計(jì)人員會(huì)更喜歡它。
當(dāng)然了,那些傾向于使用Eclipse的開發(fā)者,也有一個(gè)可用的插件,可以將JavaFX特性添加到Eclipse項(xiàng)目中。
結(jié)束語(yǔ)
JavaFX入手的最好方式是去Netbeans中看看那里已有的示例項(xiàng)目。
JavaFX還很年輕,未來(lái)的路很長(zhǎng)。如果你想尋找Flash的替代者,如果你很熟悉Java,那么JavaFX絕對(duì)值得一用。在未來(lái)的版本中,我確定我們會(huì)找到更多喜歡JavaFX作為Java應(yīng)用UI技術(shù)的原因。
【編輯推薦】