顯示具有 Netbeans 標籤的文章。 顯示所有文章
顯示具有 Netbeans 標籤的文章。 顯示所有文章

2010年2月2日 星期二

Swing vs. SWT (II)

接續之前的文章,SWT有以下的優缺點:

SWT 的優點:
  1. 和底下平台一致的風格(Look and Feel)。
  2. 和 Eclipse 的整合。
  3. 雖然同樣不是 thread-save。但誤用時會發出異警,在這點上容易除錯。 
SWT 的缺點:
  1. 不內建於 JRE 中,因此必須下載特別的函式庫才能執行。
  2. 因為使用底下作業系統提供的元件,無法以 java 的 Garbage collector 管理,必須自行管理元件的記憶體,因此容易有 Memory leak。當元件之間的關係是靜態時,只要釋放最上層的元件的記憶體就好,問題會輕些。如果元件之間的關係是動態的,就比較會有 Memory leak了。
  3. 不容易製作客製化元件,因為要客製化時常必須瞭解底層作業系統的 API。
有關 SWT 的迷思:
  1. 在比較 SWT 和 Swing 時,常誤以為 Swing 的功能比 SWT 強大。但是真正該比較的常是 SWT+JFace 和 Swing,甚至是 Eclipse 對 Netbeans。

    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 可以支援各種風格,包括底層作業系統的風格。