JavaFX 1.1版發(fā)布 腳本語(yǔ)言性能提升
Sun今日發(fā)布了其RIA平臺(tái)JavaFX的1.1版本。Java.net科技博客的Doederlein記錄了他對(duì)JavaFX 1.1的印象。
從Release Notes和一些調(diào)查中得到的對(duì)JavaFX 1.1的主要印象:
1、JavaFX Mobile的官方支持:“官方”一詞,我想Sun指的是v1.0 品質(zhì)。然而這仍不算是個(gè)真正的FCS,因?yàn)橹挥性谡嬲脑O(shè)備上運(yùn)行runtime時(shí)它才是。
2、一些JavaFX Script語(yǔ)言性能的提升;
3、語(yǔ)言性能和穩(wěn)定性的提升。在release notes中沒(méi)有bug清單,所以你必須在JIRA中查詢,JavaFX 1.1發(fā)布的codename是Franca,修補(bǔ)了148個(gè)補(bǔ)?。ㄔ黾恿?個(gè)未修復(fù)的)。盡管其中的一些補(bǔ)丁不足為題(如說(shuō)明文檔、凌亂的教程)但從1.0.1到JavaFX 1.1發(fā)布的兩個(gè)月的時(shí)間內(nèi),修補(bǔ)的bug數(shù)量仍然相當(dāng)可觀。
4、JavaFX桌面的全屏模式。看起來(lái)這是1.0版本的重要特性,但是被差勁的說(shuō)明文檔和幾個(gè)bugs給拖累了。
5、javafx.fxd包,之前是一個(gè)擴(kuò)展的lib,現(xiàn)已添加到core中(常規(guī)文檔)。除了FXDLoader,你還可以克隆SceneGraph項(xiàng)目(使用Duplicator類)而且不需要配置庫(kù)(盡管這可能比你的applet還大)。我仍在等待更加常規(guī)的克隆特性。
6、升級(jí)的文檔(這仍是JavaFX的一個(gè)弱點(diǎn))。我注意到升級(jí)的javadocs,但是Language Reference看起來(lái)根本就沒(méi)有升級(jí)。盡管JavaFX的指導(dǎo)材料越來(lái)越多,但我還是傾向于好的整齊的官方指導(dǎo)。
提升和兼容性
唯一的語(yǔ)言變化看起來(lái)好像在typesystem:JavaFX Script現(xiàn)在支持所有Java基本類型(Java primitive types),像通常的大寫(xiě)名字如Long,盡管編譯器會(huì)盡可能地避免將對(duì)象封裝。如果硬要說(shuō)的話,好的一點(diǎn)是JavaFX更加像Java了,高效、與大量Java代碼集成整合。
這種改變的另一個(gè)方面是JavaFX的Number類型變成了float而不是double。這是一個(gè)不錯(cuò)的改變,對(duì)FP來(lái)說(shuō),floats在JavaFX(GUI & graphics)的領(lǐng)域內(nèi)更加流行:盡管你在一些地方比如transforms中會(huì)用到double,但大部分的toolkits,乃至3D APIs包括Java2D,都使用float精密度來(lái)定義像屏幕坐標(biāo)之類的東西。在JavaFX中,有時(shí)我們不得不使用double精度的Number來(lái)定義更大的整數(shù)(比如毫秒級(jí)時(shí)間間隔)。
但這種改變也會(huì)帶來(lái)代碼的破壞。拿我的JavaFX Balls代碼來(lái)說(shuō),當(dāng)我運(yùn)行到新的runtime時(shí),看起來(lái)工作了但是FPS計(jì)數(shù)器瘋了,報(bào)告2147483647幀?。。ㄟ@是0x7FFFFFFF)。我輕松地修改了這個(gè)問(wèn)題:我將couple變量聲明從Number改到了Long。
這個(gè)問(wèn)題對(duì)于來(lái)自Sun的開(kāi)發(fā)工具來(lái)說(shuō)有點(diǎn)讓人吃驚,而且你永遠(yuǎn)都會(huì)期望向后兼容。但是很高興的是Sun總是在修復(fù)他自己操之過(guò)急做出的錯(cuò)誤決定,尤其是許多終端的JavaFX設(shè)備還沒(méi)有被開(kāi)發(fā)出來(lái)。運(yùn)行時(shí)間可以執(zhí)行,無(wú)論是1.0.1還是1.1,都配置在插件的cache中,每個(gè)applete/JAWS應(yīng)用都使用為之構(gòu)建的runtime,所以現(xiàn)有的JavaFX applets不會(huì)被打破,只是它們不能夠自動(dòng)運(yùn)行在新的已經(jīng)升級(jí)的runtime上而已。
性能
從我開(kāi)發(fā)的產(chǎn)品JavaFX Balls來(lái)看,JavaFX 1.1與之前的版本性能幾乎一樣,更多數(shù)量的balls的問(wèn)題仍然存在。而且這個(gè)問(wèn)題看來(lái)不會(huì)在版本1.1中迅速修復(fù),我預(yù)計(jì)最早也會(huì)在v1.5 (Marina)中得到顯著改善,因?yàn)檎麄€(gè)Scenario runtime正在加強(qiáng),而且,JavaFX將會(huì)獲取到一整包的‘native’ (SceneGraph-based)組件,增加了V-sync動(dòng)畫(huà)制作和其他重要的提升。
我沒(méi)有做更多的測(cè)試,JavaFX Balls被局限在JavaFX-centric的基準(zhǔn)點(diǎn),原因之一是這甚至不會(huì)抓取Effects框架。而且現(xiàn)在JDK 6u14-ea-b01具有6u12+特性,被JavaFX 1.1和G1 collector獲取。早在JDK 7 builds中我就測(cè)試過(guò)G1,很慢很崩潰,所以我并不看好6u14-ea-b01版本會(huì)***。
JavaFX Mobile
移動(dòng)程序的開(kāi)發(fā)的確需要很大的提升。我已經(jīng)將JavaFX Balls裝到JavaFX Mobile中,結(jié)果很恐怖而且在beta仿真器中極不穩(wěn)定。另外的問(wèn)題是:我必須改變VK_STAR to VK_ASTERISK;盡管代碼仍舊被編譯,但之前的代碼不再與仿真器的‘*’按鈕所匹配。
Sun的官網(wǎng)公布了JavaFX Mobile的一些支持伙伴,在手持設(shè)備方面,僅有LG和SonyEricsson,我希望有更多的這方面的合作伙伴。我的下一個(gè)手機(jī)將會(huì)安裝******的Java,包括JavaFX Mobile。
不好的一點(diǎn)是mobile runtime目前并不是在所有現(xiàn)有的設(shè)備上都能夠安裝后就可用,也許不久后這個(gè)問(wèn)題就可以解決。Danny說(shuō)“你將在JavaOne 2009上看到更多JavaFX Mobile可以運(yùn)行的手持設(shè)備,年底的時(shí)候還會(huì)有更多的手機(jī)?!?BR>
【編輯推薦】