?????? SWT-"Standard Widget Toolkit",它是一個Java平臺下開放源碼的Native GUI組件庫,也是Eclipse平臺的UI組件之一。從功能上來說,SWT與AWT/SWING是基本等價的。SWT以方便有效的方式提供了便攜式的(即Write Once,Run Away)帶有本地操作系統觀感的UI組件。
?????? 由于widget系統的固有復雜性以及平臺之間微妙的差異,即使在理想情況下,能夠達到工業標準的跨平臺的widget類庫也是很難編寫和維護的。最早的AWT組件現在被認為是樣貌丑陋的,而且存在很多問題;SWING組件雖然也是缺點多多,但是隨著JDK版本的不斷升高,它仍在不斷進行著改進。我認為,SWT在功能上與AWT/SWING不相伯仲,但是組件更為豐富,平臺表現穩定,BUG也相對較少。如果你的應用程序真的需要在多個平臺上運行,需要更為美觀的界面,又不那么依賴于其他基于AWT/SWING的圖形庫,那么SWT或許是一個比AWT/SWING更好的選擇。
=========================================
為什么要使用SWT?
SWT是一個IBM開發的跨平臺GUI開發工具包。至于為什么IBM要費勁自己另起爐灶開發一個GUI工具包,而不是使用Sun現有的由AWT, Swing, Java 2D, Java 3D等構成的Java GUI框架,那就說來話長了。(記得在一個BBS上讀過一個關于SWT起源的調侃類的帖子)。
在SWT之前,Sun已經提供了一個跨平臺GUI開發工具包AWT (Abstract Windowing Toolkit)。雖然AWT框架也使用的是原生窗口部件(native widgets),但是它一直未能突破LCD問題。LCD問題導致了一些主要平臺特征的遺失。如果你不明白的話(其實我也沒明白),換句話說,如果平臺A有窗口部件(widgets)1–40,而平臺B有窗口部件(widgets)20–25,那么跨平臺的AWT框架只能提供這兩個窗口部件集的交集。
為解決這個問題,Sun又創建了一個新的框架。這個框架不再使用原生窗口部件,而是使用仿真窗口部件(emulated widgets)。這個方法雖然解決了LCD問題,并且提供了豐富的窗口部件集,但是它也帶來了新的問題。例如,Swing應用程序的界面外觀不再和原生應用程序的外觀相似。 雖然在JVM中這些Swing應用程序已經得到了最大程度的性能改善,但是它們還是存在著其原生對應物所不具有的性能問題。并且,Swing應用程序消耗太多的內存,這樣Swing不適于一些小設備,如PDA和移動電話等。
IBM進行了嘗試以徹底解決AWT和Swing框架帶來的上述問題。最終,IBM創建了一個新的GUI庫,這就是SWT。SWT框架通過JNI來訪問原生窗口部件。如果在宿主(host)平臺上無法找到一個窗口部件,SWT就會自動地模擬它。
=====================================
Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui
posted on 2007-11-27 15:04
jadmin 閱讀(85)
評論(0) 編輯 收藏