Eclipse 生態系中的 RAP (Rich Ajax Platform) 與 RCP (Rich Client Platform) 雖然架構相似,但服務對象截然不同。RCP 面向桌面應用,而 RAP 讓開發者使用相同的 Java API 和擴展點機制,構建基於 AJAX 的 Web 2.0 應用。本文深入剖析兩者的架構差異、核心組件對應關係與部署模式。
兩者皆運行於 Equinox OSGi 容器之上,支援 Eclipse 擴展點機制,實現靈活的模組化與熱部署。關鍵差異在於 UI 層實現:


| 特性 | SWT (RCP) | RWT (RAP) |
|---|---|---|
| 基礎控制項 | 完整支援 | 實現大部分核心控制項 (Button, Text, Table, Tree 等) |
| 自定義控制項 | Canvas, CTabFolder 等 | 提供 CTabFolder、CBanner 等 RWT 專屬控制項 |
| 表格/樹功能 | 排序、過濾、單元格編輯 | 功能相同,使用方式一致,程式碼可直接移植 |
| 佈局管理 | GridLayout, RowLayout, FillLayout, FormLayout, StackLayout | 支援相同佈局演算法,伺服器端計算佈局,避免跨瀏覽器相容性問題 |
| 事件模型 | 完整事件體系 | 支援 SelectionListener, ControlListener, ShellListener, MenuListener, ModifyListener, VerifyListener 等核心事件 |
RAP 完整實作 RCP JFace 的視圖框架:
RAP 應用打包為 WAR 部署至 Servlet 容器 (Tomcat, Jetty 等),用戶透過瀏覽器存取,無需安裝客戶端。開發者專注於 Java 業務邏輯,無需處理 JavaScript、CSS、HTTP 細節。RWT 的佈局引擎在伺服器端計算,消除了跨瀏覽器佈局亂碼的煩惱。
Eclipse 4 (E4) 架構進一步模糊邊界,支援在瀏覽器中直接運行 Eclipse IDE 本身。隨著 Eclipse 生態快速演進,RAP 成為將既有 RCP 桌面應用遷移至 Web 的最佳路徑,也為構建雲端開發工具奠定基礎。