Eclipse e4 是下一代 Eclipse 平台(Eclipse 4.0 於 2010 年發布),基於 OSGi 堅實基礎,目標在於簡化組件編寫與重用,並統一 Web/RIA、桌面、伺服器、雲端、嵌入式等多種運算環境。本文介紹 e4 核心亮點並實作 XWT 範例。
引入上下文機制,結合依賴注入,服務消費者無需感知服務代理,提供者可多樣化註冊。實現組件鬆耦合與動態發現。
抽象 UI 元素為可動態操作的模型層,應用程式可重新配置模型以產生不同外觀,模型變更即時反映 UI,支援高度客製化。
引入可插拔樣式引擎,支援標準 CSS 選擇器與偽類,將樣式(大小、字體、顏色)外部化,實現內容與呈現分離,同 Web 開發體驗。
XWT (XML UI for SWT) 以 XML (.xwt) 聲明式定義完整 UI 階層,配合 Java 類處理事件與業務邏輯,支援數據綁定。優勢在於徹底分離業務邏輯與 UI,代碼更易維護,類似 Adobe Flex 模式。
建立空 Plugin 專案,添加依賴:org.eclipse.e4.xwt, org.eclipse.core.databinding, org.eclipse.jface.databinding 等。
使用 XWT 透視圖,拖放 Button 到 XML,添加 SelectionEvent="sayHello" 生成 Java 處理器:
public void sayHello(Event event) {
Button btn = (Button) event.widget;
MessageDialog.openInformation(XWT.findShell(btn), "Hello XWT", "Hello XWT");
}
主程式啟動:
public static void main(String[] args) {
URL content = HelloWorld.class.getResource("HelloWorld.xwt");
XWT.open(content);
}
建立 POJO Contact (name, phone),右鍵生成 UI Presentation,XWT 自動產生 {Binding path=name} 綁定。主程式注入模型實例:
Contact c1 = new Contact("Huang", "22771");
XWT.open(content, c1); // 文本框自動填充
事件中獲取上下文對象:
Contact c = (Contact) XWT.getDataContext(this);
MessageDialog.openInformation(..., c.getName(), c.getPhone());
e4 尚在孵化階段,但其現代化編程模型、聲明式 UI、CSS 樣式、跨平台能力極具吸引力。建議開發者嘗試 0.9 版本,提前佈局下一代 Eclipse 開發。