JavaFX Script? (下文中成為JavaFX)語言是一種聲明式的靜態類型編程語言。它具有第一級函數(first-class functions)、聲明式的語法、列表推導(list-comprehensions)及基于依賴關系的增量式求值(incremental dependency-based evaluation)等特征。JavaFX 腳本式語言特別適用于Java2D swing GUI組件,它允許簡單地創建圖形界面。
譯者注:第一級函數指函數被當作對象對待,可以在運行時賦值、傳遞和返回。詳見wikipedia上的解釋。
譯者注:列表推導指一種在函數語言中的表達式,它表示了在一個或者多個列表的成員(被選擇的)進行某種操作的結果。它被稱為“syntactic sugar”,即為開發者提供了便捷的多種函數的應用組合。詳見FOLDC對list comprehension的解釋。
本文檔給出了JavaFX 腳本式編程語言的非正式描述。
就語言方面來說,出現了Java FX script 項目。Java FX是很靈巧的,它提供了一個高級的腳本接口,運行在Java 2D的API上。從用戶的角度來看,他們不需要編寫Java代碼,不需要深入理解復雜的線程,Java 2D,Swing類的層次結構,定時框架結構(timing framework)等等。相反,他們只是編寫腳本語言和描繪出所需要的GUI,包括活波的音響效果,圖形效果,比如說梯度或者音樂,和數據綁定等等,這些都建立在一個基礎API上。
??? 這里有許多的工具幫助你學習syntax語言,相關資源這個從這個網站獲得;Java FX研發小組的目標就是提供syntax語言,和一些關于Java FX的用戶體驗,這些用戶包括美術設計員和那些對應用程序可視界面美觀感興趣的民眾。當前,Java FX某種程度上作為第四步產生的語言在運行,因為首先是解釋器將FX腳本創建成為Java代碼,然后再調用適當的Java 2D API。該小組長期的目標是將FX腳本直接編譯成字節碼。
??? Java FX添加到桌面Java是一件非常好的事情,但是,這得取決于是否有這樣的一種JRE的存在,它能運行Java FX生成的代碼。有些人認為FX已經進軍到RIA(rich Internet application)領域,和Adobe公司的 Flex一較高下。但是,目前還是有一些難題需要解決,舉個例子,如何才能讓桌面Java的安裝體驗和運行時間性能比得上其它的RIA框架。還好,這種問題正在被其他的項目解決,這個項目名稱就是Java kernel。
??? Java kernel主動承認這么一個事情,即大多數的Java應用程序都是只有JRE的部分大小,如Limewire(一個文件共享的桌面應用程序),它只有JRE的三分之一大小。Kernel將會對JRE重新打包,使得只下載應用程序所需要的部分JRE。每個程序所需要的基本部分將會被下載,作為JRE啟動所需要的最小部分,其他的部分根據需要下載,或者根據ClassNotFound異常信息,下載缺失的類。這將是一個巨大的好消息幫助桌面Java應用程序瘦身,同時還能使得桌面Java應用程序執行的更為有效。除了解決如何下載的問題外,kernel還非常關注Java程序的啟動性能。
??? 在先前的kernel幾個版本,熱啟動時間(warm start times)減少了很多,但是,在應用程序調用main(String[])前,冷啟動JRE仍然需要延誤許多秒的時間。Java kernel正在嘗試有效的處理冷啟動,將冷啟動轉變為熱啟動,通過一些相關的技術,如預加載(pre-loading)JRE,從硬盤讀入到內存,還有一個操作系統服務,這個服務的功能就是監視可分配的內存來加載JRE,使得用戶獲得最佳的性能。出了這些,kernel還提供了一個新的瀏覽器插件,提供給Web 開發者更多的關于桌面運行信息,可獲得的JRE水平等等。
???? 對于桌面Java來說,Java kernel 和Java FX兩大好消息。說Kernel是一個非常好的技術,是因為它承認了Swing已經到了一個非常成熟的階段,并且幫助開發這如何將他們的Java應用程序更為快速,更為有效的搬到用戶桌面上。說FX是兩外一個非常好的消息,是因為它為Java開發者打開了新篇章,特別是那些愿意使用腳本語言和做一些高級的,活波的,圖形效果的開發者,他們只需要寫簡單幾行代碼就可以完成。我相信這兩項技術將會使得更多的應用程序用Java語言編寫,運行在用戶的機器上,同時,對于用戶和開發者來說,應用程序變得更快,更簡單。
相關學習資料
https://openjfx.dev.java.net/JavaFX_Programming_Language_CN.html
https://openjfx.dev.java.net/JavaFX_Programming_Language.html
https://openjfx.dev.java.net/Getting_Started_With_JavaFX.html
https://openjfx.dev.java.net/
文章來源:
http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!266.entry