首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JavaFX 核心概念與常見問題深度解析

     編輯:Java 相關知識

什麼是 JavaFX?

JavaFX 是一種宣告式、靜態型別的腳本程式語言,專為建構豐富互動應用程式 (RIA) 而設計。它具備一等函數、宣告式語法、列表推導以及基於依賴關係的增量式求值等核心特性。JavaFX 腳本為創建 2D 動畫、屬性設定、以及在模型與視圖物件之間建立綁定依賴關係提供了無中間程序邏輯的宣告式語法,極大地簡化了 GUI 開發的複雜度。

核心語言特性詳解

一等函數

在程式語言中,若函數可被視為一等物件——即能在執行期動態建構、儲存於資料結構、作為參數傳遞、作為回傳值——則稱為一等函數。JavaFX 支援此特性,例如 map 或 mapcar 函數可接受一個函數與一個列表,將函數應用於列表每個元素並回傳新列表。

宣告式語法

不同於傳統命令式語言需透過顯式程式碼更新變數關係,宣告式語言允許直接宣告數值間的關係。例如:

var a : Number = bind model.attrib / 2;

當 model.attrib 變化時,a 會自動、透明地更新,無需呼叫任何程序。這對模型-視圖綁定與 GUI 行為控制極為有用。

列表推導

列表推導提供語言層面的支援,以多種方式建立、維護列表。JavaFX 範例:

var nums = [1,2,3,4];
var nums2 = [1..4]; // 等同於上述
var numsGreaterThanTwo = nums[. > 2];
var numsLessThanFour = select n from n in nums where n < 4;

基於依賴關係的增量式求值

屬性值可宣告為依賴(綁定)於包含其他屬性的運算式。當被引用屬性變化時,所有依賴該屬性的屬性會直接或間接自動更新,無需中間程序邏輯,類似電子表格的運作方式。此機制對動態維護模型與視圖屬性的 GUI 開發極具價值。

操作 vs 函數

函數可遞增地重複求值、可綁定回傳值、參數、變數/屬性,並隱性綁定區域變數;操作則不具備這些綁定能力。以下程式碼示範差異:

class Foo {
    attribute zap;
    function bar(x) { x + zap }
}
var afoo = Foo { zap: 14 };
var zing = 1;
var snap = afoo.bar(zing);        // 靜態快照
bind dyn = afoo.bar(zing);        // 動態綁定

snap 不會隨 zing 或 zap 變化而改變,但 dyn 會因增量式求值機制自動更新。

授權與部署常見問題

授權模式

目前版本採評估授權釋出,不可重新分發。開發者可發布基於 JavaFX 的應用,但不可與 JavaFX 執行環境捆綁,需引導使用者至 OpenJFX 專案下載二進制庫。早期版本不得用於商業用途,正式商業版釋出後將改變此限制。

商業化時程

尚無確切時間表,但即將制定。

JavaFX Runtime 開源狀態

JavaFX Runtime 即將開放原始碼。

技術對比與定位

  • F3:JavaFX 平台舊稱,Form Follows Function 縮寫。
  • Java:JavaFX 為相容 JSR-223 的腳本語言,可互操作 Java 類別。
  • Java 6 Scripting Engine:提供 JSR-223 相容腳本語言執行平台,JavaFX 可在其上執行,但不依賴 Java 6,可在任何相容引擎運行。
  • SVG:資料描述語言而非程式語言,XML 語法不適合編程。JavaFX 團隊無直接使用 SVG 計畫,但兩者同源於 PostScript/Java2D,Chris Oliver 已編寫 SVG-to-F3 轉換器。
  • Swing:JavaFX 是撰寫 Swing 應用的新方式,無需深諳 Swing 架構與 Java 語言。
  • JavaScript/Ajax:同為 JSR-223 相容腳本語言/Ajax 為瀏覽器端非同步技術,兩者語言與環境迥異。
  • Savaje OS:Sun 計劃利用收購的 Savaje 手機系統發布 JavaFX Mobile,競爭 Windows Mobile、Flash Lite。

進階應用支援

  • Java3D/VRML/X3D/Xj3D:可互操作任何第三方程式庫,團隊正開發 Java3D 支援。
  • RCP/RIA:JavaFX 同時適用於豐富用戶端平台與豐富網際網路應用開發。
  • Web 應用:可編寫前端視圖/使用者介面,需客戶端 JVM 支援。
  • JSF/JSP 替代?:不會取代。JSF/JSP 針對純 Web 應用(HTML/HTTP 客戶端),JavaFX 需客戶端 JRE,提供類似 Flex/Silverlight 的富客戶端功能,常用於企業內網應用。
  • 伺服器需求:主要用於桌面應用,無需伺服器;若部署 JNLP (Java Web Start) 則需 Web 伺服器。

執行環境與工具

執行條件(二擇一):

  1. Java 5+、相容 JSR-223 實作、JavaFX 程式庫
  2. Java 6+、JavaFX 程式庫

編譯器: OpenJFX Compiler 專案已開源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved