JavaFX
2008年Sun公司發布的軟體
Sun公司已於2008年12月05日發布了JavaFX技術的正式版,它使您能利用JavaFX編程語言開發網際網路應用程序(RIA)。該產品於2007年5月在JavaOne大會上首次對外公布。
JavaFX技術主要應用於創建Rich Internet applications(RIAs)。當前的JavaFX包括JavaFX腳本和JavaFX Mobile(一種運營於行動裝置的操作系統),今後JavaFX將包括更多的產品。
JavaFX Script編程語言(以下稱為JavaFX)是一種declarative,statically typed(聲明性的、靜態類型)腳本語言。
JavaFX技術有著良好的前景,包括可以直接調用Java API的能力。因為JavaFX Script是靜態類型,它同樣具有結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和發布單元,這些特性使得使用JavaFX技術創建和管理大型程序變為可能。
在JavaFX中,類的成員函數和操作本身被模式化作為在目標類中的類,而形參和返回值被表示為屬性。代表目標對象的屬性名是“this”。代表返回值的屬性名為“return”。代表形參的屬性具有和形參相同的屬性名。而目標對象則指使用成員函數和操作的對象。從上例中可以發現,你也可以從Class對象中獲取相同的、被反射的操作。被反射的操作能夠像函數那樣通過將目標對象作為第一個參數、其它參數作為後面的參數的方式被調用。
2008年12月05日Sun微系統公司正式發布了基於Java語言的平台JavaFX1.0,這個平台建立在其廣泛應用的Java編程語言的基礎上,旨在建立大量可在電腦和手機上運行的網路程序。Java一直以來就是編程語言,但是隨著JavaFX的發布,Sun公司開始允許將編程內容創新這一任務轉移到以設計藝術為重點而非編程科學為重點的設計人員身上。
“我們的目標群體是叫做創造者的人群”,Sun公司Java平台組的高級副主任OctavianTanase對說,“隨著1.0版的發布,我們將目標鎖定在網頁開發人員,這群可能拓展Java界面體驗的人。到2011年,主要的目標是大量使用諸如Adobe系統等設計工具的設計人員”。
當然,通向這個以設計為導向的工具還需要一些時間。Sun公司最後打算提供自己的程序給設計人員來建立RIAS,但是直到如今,這些設計人員還得使用程序員所使用的Netbeans或Eclipse集成開發環境(IDE)。新工具將在來年夏天面市。
JavaFX2.0版本之前,開發者需使用一種名為JavaFX Script的靜態的、聲明式的編程語言來開發JavaFX應用程序。因為JavaFX Script將會被編譯為Java bytecode,程序員可以使用Java代碼代替。
JavaFX2.0之後的版本摒棄了JavaFX Script語言,而作為一個JavaAPI來使用。因此使用JavaFX平台實現的應用程序將直接通過標準Java代碼來實現。
在桌面系統上,最新版本的JavaFX支持Windows XP,Windows Vista,Windows7,Mac OS X和Linux操作系統。JavaFX2.X版本暫時不支持Solaris操作系統和智能手機操作系統。但是Oracle計劃將JavaFX集成到Java SE embedded8之中,JavaFX for ARM處理器也正處於開發者預覽階段。
Sun近日發布了其RIA技術JavaFX的RAD(快速應用開發)工具的體驗版,這是一個針對開發人員的JavaFX開發工具。該工具目前已可以在NetBeans6.8更新中心下載。由於是早期版本,該工具還有一些功能限制,比如:對於JavaFX1.2中新增的關鍵組件,如圖表(Chart),尚無可視化支持;還不能對組件的某些屬性進行可視化編輯;此外,預覽視圖偶爾會“罷工”以至於必須重啟IDE才能恢復正常等。Sun的開發工具工程部門的負責人David Folk在一個大會上說:“我們甚至不稱之為試用版(beta)——而稱之為‘早期體驗版’,或者‘預覽版’”,該工具的真正目的是讓你能用JavaFX開發基於表單的應用程序”
這款新的JavaFX工具的基本思想類似於針對Swing的Matisse項目,它提供了與VB或Delphi非常相像的可視化編輯器,簡化了Swing的開發工作。與Matisse一樣(它後來變成了NetBeans5的GUI編輯器),JavaFX工作台在你工作時為你生成代碼,而且,儘管你可以查看生成的代碼,但不爽的是你不能對其生產的代碼進行修改。
當你從調色板(palette)中拖拽一個JavaFX組件到設計區時,你可以為它們綁定數據源。該插件目前支持JDBC數據源、HTTP(XML/JSON)、文件系統(FileSystem)、文件數據源以及內建過濾器。它還提供一些簡單的轉換器,通過他們你可以方便地將某數據源(比如REST或JSON數據源)綁定到一組組件上。
除了支持簡單地拖放組件的功能外,該插件還有一個“狀態”的概念。狀態從最初的主狀態(master state)開始,你還可以給這些組件或他們的布局增加新狀態。應用運行時,比如滑鼠點擊的事件就可以引髮狀態轉換,進而把你定義的行為自動反映在UI上。每個轉換行上還能附帶一個簡單的動畫,這樣,你就能快速創建縮放,漸變和旋轉等特效。
該工具還有很多其他有價值的特性,如概覽(通過它你可以在不同的屏幕尺度上預覽應用,如同在不同的設備上一樣,如桌面,移動設備和HDTV等)以及預定義模板。利用模塊你可以快速構建普通的GUI模式,比如嚮導按鈕(取消、後退、下一步和結束等)以及索引按鈕(前一步,下一步)。你可以便捷地添加這些按鈕並進行客戶化。
與眾多必需的工具一樣,JavaFX需要通過一些矚目的應用才能獲得更多的訂單。早期嘗試它的公司有Ubivent,它的整個虛擬事件平台是完全基於JavaFX構建的。另外還有WhitStone Technology,他們在其整體服務平台和IT服務管理產品的工作流組件中使用了JavaFX。然而,對於JavaFX來說最重要的單子也許就是2010冬季奧運會,它的組織委員會是Sun的大客戶,它在其網站上使用了基於JavaFX的金牌展示應用。
JavaFX的開發者很贊同讓用戶發布自己的應用,並堅信開源和社區的力量。但當前的JavaFX版本是在評估授權下發布的,因此並不能夠被重新發布。你當然能夠發布自己編寫的基於JavaFX的應用,但不能夠和JavaFX一起捆綁發布,並需要告之使用者:需要到openjfx項目站點下載JavaFX二進位代碼庫。並且,由於正處於早期的JavaFX代碼還處在評估授權下,因此它不能用於商業用途。當Sun完成了JavaFX的商業化版本開發后,我相信這將會得到改變。