JavaOne 發布的 JavaFX(腳本語言)已出一段時間,社區褒貶不一。下載 NetBeans 外掛、跑完 Getting Started 範例後,核心觀感如下:
JavaFX 並非全新圖形堆疊,而是在 Swing/AWT 之上疊加一層聲明式腳本語法,語法極度類似 JavaScript/JSON。Sun 宣稱將推出 5-9MB 的消費者級 JRE,疑為 JavaFX 專門定製。
import javafx.ui.*;
Frame {
title: "Hello World JavaFX"
width: 200
height: 200
content: Label {
text: "Hello World"
}
visible: true
}
var win = new Frame();
win.title = "Hello World JavaFX";
win.width = 200;
var label = new Label();
label.text = "Hello World";
win.content = label;
win.visible = true;
定義 Model:
class HelloWorldModel {
attribute saying: String;
}
var model = HelloWorldModel { saying: "Hello World" };
View 綁定 Model:
var win = Frame {
title: bind "{model.saying} JavaFX"
width: 200
content: TextField {
value: bind model.saying
}
visible: true
};
bind 關鍵字實現雙向綁定,TextField 輸入即時反映到 Frame 標題。"{model.saying} JavaFX" 字串插值語法類似 Ruby "#{var} text"。| 優點 | 缺點 |
|---|---|
| 聲明式語法簡潔,降低 UI 程式碼量 | 佈局機制仍沿用 Swing 複雜的 LayoutManager |
| 與 Java 後端無縫互通(同平台) | 多媒體/動畫能力仍遜於 Flash/Flex |
| 消費者級小型 JRE 利於分發 | 生態系、工具鏈、元件庫遠不如成熟 RIA 技術 |
JavaFX 當前更像是「給 Java 開發者的聲明式 UI 腳本」,而非顛覆性 RIA 平台。若團隊深耕 Java 後端、需快速構建內部管理介面,值得嘗試;面向大眾消費市場的豐富互聯網應用,Flash/Flex/Silverlight 仍是更務實選擇。靜觀後續版本能否在效能、元件生態上實質突破。