本文提供了JavaFX Mobile開發的初學者指南但是因為所有的JavaFX開發都是依賴於相同的SDK和工具所以也很容易大體上理解JavaFXJavaFX SDK 和它的開發工具為開發JavaFX Mobile應用程序提供了移動模擬而不是提供了一個單獨的JavaFX Mobile SDK來自Sun的Java Swing小組的Joshua Marinacci在他最近所寫的博客中提到There is no JavaFX Mobile There is only JavaFX
Java在移動設備上的普遍存在性讓write once run anywhere (WORA)前提很難在隨之而來的成百上千的移動設備屏幕上遵守隨著JavaFX Mobile 的發布Java社區就有了一種工具來打擊這種設備UI支離破碎的狀況
JavaFX的語法及與Java的配合
JavaFX 是由JavaFX Script和JavaFX Mobile組成的一種產品構架JavaFX Script(簡稱JavaFX)是一種腳本語言旨在提供了更加豐富的用戶界面而且顧名思義JavaFX Mobile是 JavaFX 移動平台
JavaFX Script使用了類似JavaScript 和 Scalar Vector Graphics (SVG)一種聲明語法例如這裡有JavaFX 代碼(沒有 imports)是為了創建一個小的hello world類型的窗口如Figure Figure Figure 所示
Stage {
title: Cool Running
width:
height:
scene: Scene {
content: Text {
font: Font {
size:
}
x:
y:
fill: ColorGREEN
content: JavaFX is cool
}
}
}
如你所看到的JavaFX與Java和/或JavaScript有相似之處但也不盡相同
JavaFX的聲明風格對比於Java Swing的編程風格是非常明顯的以下的Swing代碼(還是沒有imports)創建和以上JavaFX例子相同的hello world窗口
public class Main {
public static void main(String[] args) {
JFrame aFrame = new JFrame(Cool Running);
aFramesetSize( );
JPanel content = new JPanel();
contentsetLayout(new BorderLayout( ));
contentsetBackground(ColorWHITE);
JLabel aLabel = new JLabel(Swing is cool);
aLabelsetFont(new Font(null FontPLAIN ));
aLabelsetForeground(ColorGREEN);
contentadd(aLabel BorderLayoutCENTER);
aFramesetContentPane(content);
aFramesetVisible(true);
aFrame
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
}
}
注意Swing的必要特征(如一行一行的陳述控制流)這些事用於傳統的Java UI開發Figure 顯示了Java Swing代碼的結果
如上所述JavaFX既不是Java也不是JavaScript但是JavaFX腳本可以調用Java類或是被Java類調用例如在接下來的決定窗口大小的JavaFX 腳本Stage對象的大小使用標准的Java Math類重新寫入了
var i = ;
var j = ;
Stage {
title: Cool Running
width: javalangMathmax(i j)
height:
scene: Scene {
Sun公司宣稱JavaFX改變現有的Java代碼的能力是與其他RIA技術
如Adobe Flex
相比之下的優勢之一
另外
JavaFX Script為構建任何應用程序提供了一個平台
它被Sun公司定義的目的是用在UI開發而不是用在商業或是後端組件
JavaFX Mobile構架
JavaFX應用程序依賴於運行在Java Virtual Machine (JVM)之上的JavaFX runtime對於移動應用程序JavaFX運行在Java ME JVM(參見Figure 和 Figure )上
目前的JavaFX API被分成兩類的API元素common 和desktop這些類別叫做profiles而且它們所包含的元素可以在他們的profile中支持各種各樣的UI需求和平台能力Common profile提供了很多同時支持桌面和移動設備的類換句話說它為所有運行在JVM(Java ME或Java SE JVM)上的平台提供了最低的普通標准的UIDesktop profile提供了更先進的能力以支持更大功能更豐富的平台
要創建需要所有形式的要素的應用程序開發者應該保留common profile要計劃部署一個桌面平台或是一個普通的桌面浏覽器的開發者可以選擇用desktop profile提供的API來加強他們的應用程序
設備支持和應用程序配置
所以哪些設備支持JavaFX Mobile並且怎樣讓你的應用程序來部署這些設備呢?目前市場上沒有應用JavaFX的產品但是在JavaFX Mobile推出的時候Sun公司向很多設備制造商(包括LGSprintSony Ericcson)宣稱已經致力於在不久的將來提供JavaFX功能的產品
雖然在具體JavaFX設備的細節上的問題此刻還很模糊但是Sun公司已經明確表示JavaFX不是為所有移動設備提供的因為一個支持Java ME的MIDP/CLDC設備並不意味著它最後也支持JavaFXJavaFX是針對那些符合Mobile Service Architecture (MSA) 平台規格(JSR )的設備這就意味著除了MIDP/CLDC JavaFX設備必須支持有智能手機特性的APIs這些包括個人信息管理(PIM)無線通訊D圖形和移動多媒體
至於JavaFX 應用程序如何部署到設備上本質上有兩種選擇都是Java ME開發者常見的
把它嵌入到設備上
把它(overtheair)發送到設備上
因為JavaFX在有MSA 的移動設備上的JavaME之上運行各種機構應該充分利用現有的Java ME基礎設施和部署機制
構建一個JavaFX Mobile 應用程序
現在你知道什麼是JavaFX Mobile了那麼你怎樣構建一個JavaFX Mobile應用程序呢?這一節將說到JavaFX Mobile開發的初學者指南它將解釋如何獲得所需的技術如何去建立一個環境還有如何開發並運行Hello World應用程序(以上所顯示的)
JavaFX程序可以正式構建在Windows和Mac OS 平台上Sun公司沒有提供Linux產品但是開發者已經找到一個方法在Linux用NetBeans Plugin來開發 JavaFX 程序這次討論的最重要的就是JavaFX Mobile運行時間和模擬器這次只為Windows 平台提供
有關Windows和Mac OS 的系統需求的具體細節可以參看 site你必須有一個相對較新的JDK(Windows至少需要版本更新而Mac OS至少需要的是版本更新的)
除了基本的Java環境你還需要JavaFX SDK(安裝指南參看)下載安裝程序對於Windows版本大約是MB而Mac OS是MB當安裝SDK時如果相應的Java SDK環境無法找到該安裝可以是你通過一些步驟來安裝Java SDK(參見Figure 看一下在Windows欄上的JavaFX SDK安裝)
用JavaFX工作
JavaFX SDK提供了一系列的命令行工具來進行編譯運行和測試JavaFX 程序也為運行和測試JavaFX Mobile程序提供了一個帶有SDK的移動設備模擬器
Javafxc工具與標准的javacexe工具用法相同編譯器獲得JavaFX 源代碼(代碼保存在fx文件中)並且把它們編譯到在類(class files)中的Java 字節代碼Figure 顯示了如何編譯先前討論的Hello World JavaFX 代碼——之後它被保存在叫Testfx的文件中——使用javafxcexe而Figure 顯示了如何使用javafxexe執行它
在bin目錄中提供的是JavaFX包和文件工具packaging tool (javafxpackagerexe)是移動開發者比較感興趣的因為它提供了創建一個為部署移動設備或是模擬器的mobileready package的方法但是packaging tool也能用於創建browserready或是Web Start程序通過JavaFX代碼
為了給移動設備或是模擬器部署創建Java Application Descriptor (JAD)和JAR文件你必須至少給javafxpackager工具提供fx文件源代碼的位置(它沒有被編譯為class文件)和主要類的名字或是為程序啟動point class
默認情況下javafxpackager為浏覽器或是Web Start部署創建了一套部署文件為了創建移動部署的JAD和JAR文件你必須也要在命令行需求中使用–p mobile選項–p代表profile而且你可以再移動或是桌面選項上顯示此開關
這裡是整個的來自Testfx 文件(本例子中的位置在c:\jfx 文件夾)的javafxpackager命令來創建一個mobileready程序
javafxpackager src c:\jfx appClass Test p mobile d c:\jfx\dist
–src選項指定JavaFX script代碼的來源appClass指定了主要類的名字而可選的–d選項指定了輸出的目的地(the JAD 和JAR files)結果參見Figure
接下來沒有–p mobile選項(或是通過指定的–p desktop)javafxpackager制作了HTMLJAR和JNLP文件使用於browser 或是Web Start執行如Figure 所示
隨著Windows版本的JavaFX SDK是一個模擬器來測試程序你可以在位於JavaFX SDK安裝目錄中的 /emulator/bin次文件夾中的找到一個emulatorexe為了測試javafxpackager制作的JavaFX JAD/JAR文件在仿真器工具上調用JAD文件使用–Xdescriptor:選項來指定JAD文件來執行見Figure
除了工具和模擬器JavaFX SDK還帶有示例程序文件當然還有JavaFX庫和API
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19281.html