2014年1月15日 星期三

JavaFX 2

JavaFX為Oracle支援R.I.A.所開發的全新語言與API,R.I.A.為Rich Internet Application的縮寫,譯為多樣化網際網路應用程式,最早由Macromedia於1990年間所提出的名詞與概念,並於2002年3月由Macromedia的首席技術長Jeremy Allaire發表之「Macromedia Flash MX - A Next-Generation Rich Client」白皮書,其中描述R.I.A.技術應包括以下功能:
  • Provide an efficient, high-performance runtime for executing code, content and communications.
  • Integrate content, communications, and application interfaces into a common environment.
  • Provide powerful and extensible object models for interactivity.
  • Enable rapid application development through components and re-use.
  • Enable the use of web and data services provided by application servers.
  • Embrace connected and disconnected clients.
  • Enable easy deployment on multiple platforms and devices.
雖然R.I.A.只是Macromedia的網頁技術指南,但其概念「讓網頁具備傳統桌面軟體的行為與功能」,卻影響近幾年的網路應用,發展至今,目前R.I.A.的程式語言包括:
  • Adobe Flex:2004年由Macromedia推出的Flex 1.0,後為Adobe所併購,目前最新版本為4.0,以Adobe Flash Builder開發,其官方網址為http://www.adobe.com/products/flex
  • Microsoft Silverlight:為Microsoft所發表支援R.I.A.技術,目前最新版本為3.0,其開發工具包括Microsoft Visual Studio與Microsoft Expression Blend + Sketchflow,其官方網址為http://www.microsoft.com/taiwan/msdn/silverlightnet
  • JavaFX:原由前Sun Microsystems工程師Chris Oliver所開發的F3專案,並於2007年5月的JavaOne中首次發表,目前最新版本為2.2,並正式併入Java S.E. 7 Update 6中,其開發工具包括NetBeans IDE或Eclipse等,官方網址為http://www.oracle.com/technetwork/java/javafx
  • Curl:由Sumisho Computer Systems之子公司Curl所設計,目前最新版本為8.0,其開發工具包括Curl IDE、Curl Development Tools for Eclipse與Web Services Development Kit等,官方網址為http://www.curl.com
JavaFX最早是由前Sun Microsystems工程師Chris Oliver所開發的F3專案,並於2007年5月的JavaOne中首次發表,但當初是以JavaFX Script的形式撰寫程式,其副檔名為fx,與JavaFX 2的java不同,JavaFX Script的最大特色是可以使用繪圖軟體如Adobe Illustrator或Adobe Photoshop繪製圖像,待完成之後,再儲存成JavaFX Script格式的檔案,再交由JavaFX Script處理,此一做法類似於Java Swing的MVC(Model-View-Controller)Model,將設計與邏輯部份分開。

JavaFX目前的版本為2.2,並正式併入Java S.E. 7 Update 6中。JavaFX建構於傳統的Java之上,包括JavaFX Public API與Scene Graph,透過JavaFX所開發的應用程式,可同時以Java Applet、Java Web Start與視窗應用程式的形式執行,此一概念稱為「Write Once, Deploy Anywhere」。此外,由於JavaFX建構於Java之上,因此JavaFX與Java Swing兩者可互通,可在Java Swing程式中使用JavaFX類別。

JavaFX提供Scene Graph、Java Public API、GUI物件、Builder、圖表、多媒體、CSS樣式、物件配置、2D與3D轉換、視覺效果等功能,並提供以下之GUI類別與功能:
  • 配置窗格包括Border Pane、Anchor Pane、Flow Pane、Grid Pane、HBox、VBox、Stack Pane、Tile Pane。
  • 標籤、文字、文字欄位、密碼欄位、文字區域。
  • 按鈕、核取方塊、開關按鈕、單選按鈕、選單按鈕、分隔選單按鈕、工具列。
  • 選項方塊、複合方塊、檢視清單。
  • 捲軸、滑動軸、進度指示器、進度列。
  • 選單列、選單、選單項目、核取選單項目、單選選單項目、快顯選單。
  • 捲軸窗格、分頁窗格、分隔窗格、標題窗格、Accordion、分頁控制。
  • 目錄對話盒、檔案對話盒、快顯對話盒、顏色選擇器。
  • 超連結、HTML Editor、Web Engine、Web View。
  • 樹、樹狀節點、核取方塊樹狀節點、樹狀單元。
  • 表格、表格直行、表格橫列、表格單元。
  • 圓形圖、區域圖、長條圖、折線圖、散佈圖、泡泡圖、堆疊區域圖、堆疊長條圖。
  • 繪圖、多媒體、3D。
JavaFX並支援Builder與CSS樣式(Cascading Style Sheets Styling),前者為各類別對應的Builder類別,透過Builder類別可精簡程式長度。後者以CSS設定物件樣式,JavaFX程式在執行階段只需讀取CSS檔案,則可設定JavaFX中各物件的樣式,一旦樣式變更,也僅需修改CSS檔案,不需修改JavaFX程式,對於熟悉CSS語法的使用者而言,是一個不錯的選擇。

Oracle為加速JavaFX圖形介面的開發,推出JavaFX Scene Builder,如同NetBeans與JBuilder IDE一般,以拖曳的方式配置物件,待完成配置之後,並儲存成FXML格式檔案,其副檔名為fxml,此檔案以XML描述物件配置,再交由JavaFX程式處理,因此可減少直接以JavaFX撰寫配置物件程式的困難度。

2012年5月Oracle宣佈下一版本的Java與JavaFX,並將序號統一,分別為Java 8與JavaFX 8,並新增與修改以下功能:
  • Modena主題。
  • DatePicker與TreeTable物件。
  • Candle Stick圖表。
  • 錄製音訊與影像。
  • 3D API。
  • Shaders for OpenGL and Direct3D。
  • 支援Java S.E. Embedded。
  • Sensor感測。
  • 列印功能。
  • Rich Text格式。
  • 支援JavaScript與HTML 5。
  • 精簡事件與Builder語法。 
【參考資料】

[1] 黃嘉輝,深入研究JavaFX 2。
[2] 黃嘉輝,深入研究Java Swing。
[7] Curl:http://www.curl.com
[8] NetBeans: http://netbeans.org
[9] Oracle JDeveloper: http://www.oracle.com
[10] Eclipse: http://www.eclipse.org
[11] Xinox JCreator: http://www.jcreator.com
[15] JavaFX 2.2 API Specification.
[16] Java Platform, Standard Edition 7 API Specification.

© Chia-Hui Huang

沒有留言:

張貼留言