2010年2月2日 星期二

Swing vs. SWT (I)

最近基於工作需要閱讀有關 Swing 和 SWT 的比較。以下是我的心得。

Swing 的優點:
  1. 內建於 Java JRE 中,只要有 java JRE 就能執行。不必另行下載函式庫。跨平台特性勝過 SWT。
  2. 能以 Garbage Collector 管理元件,因此減少了 Memory leak 的風險。
  3. 容易對元件客製化,不必瞭解底層作業系統提供的元件。這些客製化的元件馬上具有跨平台的特性。
  4. 可以做出完全不同於底層作業系統風格(Look and Feel)的 GUI。
Swing 的缺點:
  1. 建造 Swing 元件的程式都必須在 Event-dispatching thread 或是 Worker thread 中執行,而且必須選對 thread,否則會有 GUI 反應太慢、或是顯示出狀況的情形。當沒有使用 thread 或是該用 worker thread 時沒使用 worker thread 的情形下,程式不會發出任何警告,這類的錯誤很難診斷。目前有些輔助的工具,但尚未和 IDE 整合。
  2. 主要的 IDE 是 Netbeans。Netbeans 多用於個人私下的開發案。大多數的企業使用 Eclipse,因此選擇 SWT。
  3. 如果想使用 Eclipse RCP。就不適何用 Swing。
  4. 因為 Oracle 併購了 Sun,使得許多人對 Netbeans 的前途感到疑慮。連帶也對 Swing 感到疑慮。
  5. 因為 Sun 在過去幾年力推 JavaFX,使得許多人對 Swing 的前途感到疑慮。
有關 Swing 的迷思:
  1. Swing 的速度比 SWT 慢:在 SWT 當推出時猛烈攻擊 Swing 速度慢的弱點。但這幾年 Swing 的速度已經追上,除非該用 Worker thread 的地方未使用 worker thread,否則速度已經沒有明顯的差距。
  2. Swing 不支援底層作業系統的風格(Look and Feel):這也是當年 SWT 攻擊的重點。但是如今 Swing 可以支援各種風格,包括底層作業系統的風格。

    沒有留言:

    張貼留言