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