熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

使用JavaFX Mobile與UI的狀況做斗爭(一)

2013-11-15 11:36:25  來源: JSP教程 

  本文提供了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 Mobile與UI的狀況做斗爭(一)

  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 Mobile與UI的狀況做斗爭(一)

  如上所述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 Mobile與UI的狀況做斗爭(一)

  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與UI的狀況做斗爭(一)

  設備支持和應用程序配置

  所以哪些設備支持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 Mobile與UI的狀況做斗爭(一)

  因為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執行它

  使用JavaFX Mobile與UI的狀況做斗爭(一)

  在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 Mobile與UI的狀況做斗爭(一)

  除了工具和模擬器JavaFX SDK還帶有示例程序文件當然還有JavaFX庫和API


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19281.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.