根據(jù)Oracle官方的定義JavaFX是“The next step in the evolution of Java as a rich client platform. It is designed to provide a lightweight, hardware-accelerated Java UI platform for enterprise business applications. With JavaFX, developers can preserve existing investments by reusing Java libraries in their applications. They can even access native system capabilities, or seamlessly connect to server-based middleware applications.”大意是“JavaFX是Java在富客戶端(雖然很多地方這樣翻譯,我覺得叫‘炫客戶端’更貼切)平臺又一大創(chuàng)舉。它的定位是為商用企業(yè)應(yīng)用提供輕量級和通過硬件加速的界面平臺。使用JavaFX,開發(fā)者可以重用其應(yīng)用中現(xiàn)有的Java類庫,從而避免重復(fù)技術(shù)投入,甚至可以訪問系統(tǒng)級別的本地資源或無縫連接到部署在中間件服務(wù)器上的企業(yè)服務(wù)應(yīng)用。”
乍一看不容易明白是吧?其實(shí),大家可以從以下幾方面理解:
- 首先,JavaFX是一個(gè)炫客戶端平臺,并不是我們之前熱炒的RIA(Rich Internet Application, 炫互聯(lián)網(wǎng)應(yīng)用),所以它需要用戶安裝有JavaFX的運(yùn)行時(shí)(JRE6 + JavaFX或者JRE7+)。
- 其次,JavaFX運(yùn)行時(shí)通過使用硬件加速(GPU渲染)可以非常流暢地運(yùn)行動(dòng)畫和3D應(yīng)用。更值得一提的是,使用JavaFX提供的輕量級的API創(chuàng)建這些應(yīng)用的過程本身并不復(fù)雜。
- 最后,因?yàn)镴avaFX的定位是商業(yè)應(yīng)用所以訪問部署在中間件服務(wù)器上的EJB或者Web Service等都是非常簡便的。
如果大家還是覺得以上的解釋還是有點(diǎn)空洞的話,現(xiàn)在請看一下以下這個(gè)視頻。這是一個(gè)我基于JavaFX開發(fā)的演示應(yīng)用的運(yùn)行效果。
看完以上視頻,有Java AWT\Swing或者其它GUI開發(fā)經(jīng)驗(yàn)的朋友應(yīng)該可以想象開發(fā)這樣一個(gè)具有動(dòng)畫過渡、交互性極強(qiáng)的界面是不容易的。對我本人而言,第一次接觸簡直不敢相信這是一個(gè)使用Java創(chuàng)建的應(yīng)用。不過,在此我可以肯定的告訴大家這千真萬確是一個(gè)Java應(yīng)用,而且它的創(chuàng)建過程根本算不上困難,全部的界面代碼加起來不超過600行。下面分別給大家介紹一下JavaFX的特性,看看它是如何做到的。
- 通過JavaFX Scene Builder軟件,我們可以使用所見即所得的方式編輯界面文件(FXML一種用于定義JavaFX界面的XML文件)。更為厲害的是,通過JavaFX擴(kuò)展的CSS,我們可以隨意地更改JavaFX控件的樣式和外觀。像我這樣具有一點(diǎn)Web開發(fā)經(jīng)驗(yàn)的朋友可以很快上手。另外,Netbeans 7.3還也提供可視化的方式編輯JavaFX CSS。如果大家對自己的Java能力相當(dāng)有信心的話,也完全可以使用JavaFX提供Fluent API快速添加和修改控件。至于采用哪種方式,完全取決于個(gè)人喜好,過程其實(shí)同樣簡單。由于本人比較笨,我偏好用所見即所得的FXML+CSS的方式構(gòu)建應(yīng)用界面。

- 通過屬性(Property)、事件(Event)和綁定(Binding),我們可以在業(yè)務(wù)對象改變之后及時(shí)更新界面,又或者在業(yè)務(wù)對象中即時(shí)獲取用戶控件上的輸入。甚至,我們可以直接將不同控件的屬性綁定在一起實(shí)現(xiàn)一些界面上的邏輯,類似在用戶點(diǎn)擊某些控件后隱藏\顯示或禁用\啟用其它控件。
- 在JavaFX里實(shí)現(xiàn)類似陰影、倒影和模糊等特效,還有放大、縮小或旋轉(zhuǎn)等2D\3D變換是非常簡單的。
- 結(jié)合上述幾點(diǎn)和JavaFX的動(dòng)畫框架,創(chuàng)建漸變或逐幀動(dòng)畫同樣也是小菜一碟。
- 通過內(nèi)嵌基于Webkit引擎的瀏覽器控件,我們可以在JavaFX應(yīng)用里顯示W(wǎng)eb頁面。甚至,我們能夠使用Java控制頁面上的Javascript腳本和元素。如此一來,我們就可以創(chuàng)建一些本地(Native)和Web優(yōu)劣互補(bǔ)的混合(Hybrid)應(yīng)用。
- JavaFX還包括了一些多媒體播放的API。在JavaFX中播放流媒體形式的音頻和視頻自然也不在話下。
我在上面一口氣給大家簡要地介紹了JavaFX這些激動(dòng)人心的特性是想讓大家對JavaFX有一個(gè)初步的了解。至于具體每個(gè)特性的如何使用,我會(huì)結(jié)合創(chuàng)建演示應(yīng)用的過程,更為詳細(xì)地逐一講解。請大家繼續(xù)關(guān)注我的博客或微博。
posted on 2013-05-09 23:45
Max 閱讀(5195)
評論(2) 編輯 收藏 所屬分類:
JavaFX 2.x實(shí)戰(zhàn)系列