AWT和Swing的強(qiáng)勁對手
從Java誕生至今,已經(jīng)在太多的領(lǐng)域取得成功,然而它卻很少在圖形界面程序上嶄露頭角。究其原因,Java語言缺省的圖形界面開發(fā)包AWT和Swing實(shí)在是難脫其究, 無論速度和外觀,它們都難以讓人接受。 如今,Eclipse組織編寫的SWT開發(fā)包,為Java程序員提供了AWT和SWING之外的一個更佳的選擇。在本文中,對SWT做了簡單但盡可能全面的介紹。
Java 語言的聲望和它在桌面應(yīng)用程序(GUI程序)所取得的成就顯然極不相符,至今仍然很少能看到非常成功Java桌面程序。雖然有 JBuilder,Netbean,JProbe等大型軟件作為代表,但這仍不能證明Java的GUI程序是成功的:它們的外觀總是和同一操作系統(tǒng)平臺下的其它軟件顯得格格不入。對機(jī)器配置的需求也似乎永無止境,這使得它們只能被一些總是擁有當(dāng)前最高性能PC的程序員們所容忍,或是那些不在乎金錢和時間的專業(yè)用戶所接受。對絕大多數(shù)計算機(jī)使用者來說,AWT和Swing代表著怪異的界面和無法接受的速度。Standard Widget Toolkit(SWT)或許是Java這一噩夢的終結(jié)者,廣大Java程序員終于可以開發(fā)出高效率的GUI程序,它們擁有標(biāo)準(zhǔn)的外觀,幾乎沒有人能看出你的程序是用Java寫出來的,更為重要的是,這些程序是跨平臺的。
SWT本身僅僅是Eclipse組織為了開發(fā)Eclipse IDE環(huán)境所編寫的一組底層圖形界面 API。或許是無心插柳,或是有意為之,至今為止,SWT無論是在性能和外觀上,都超越了SUN公司提供的AWT和SWING。目前Eclipse IDE已經(jīng)開發(fā)到了2.1版本,SWT已經(jīng)十分穩(wěn)定。這里指的穩(wěn)定應(yīng)該包含兩層意思:
一是指性能上的穩(wěn)定,其中的關(guān)鍵是源于SWT的設(shè)計理念。SWT最大化了操作系統(tǒng)的圖形構(gòu)件API,就是說只要操作系統(tǒng)提供了相應(yīng)圖形的構(gòu)件,那么SWT只是簡單應(yīng)用JNI技術(shù)調(diào)用它們,只有那些操作系統(tǒng)中不提供的構(gòu)件,SWT才自己去做一個模擬的實(shí)現(xiàn)。可以看出SWT的性能上的穩(wěn)定大多時候取決于相應(yīng)操作系統(tǒng)圖形構(gòu)件的穩(wěn)定性。
另一個穩(wěn)定是指SWT API包中的類、方法的名稱和結(jié)構(gòu)已經(jīng)少有改變,程序員不用擔(dān)心由于Eclipse組織開發(fā)進(jìn)度很快(Eclipse IDE每天都會有一個Nightly版本的發(fā)布),而導(dǎo)致自己的程序代碼變化過大。從一個版本的SWT更新至另一版本,通常只需要簡單將SWT包換掉就可以了。
要在Eclipse安裝文件中找到SWT包,Eclipse組織并不提供單獨(dú)的SWT包下載,必須下載完整的Eclipse開發(fā)環(huán)境才能得到 SWT包。SWT是作為Eclipse開發(fā)環(huán)境的一個插件形式存在,可以在${你的eclipse安裝路徑}plugins路徑下的眾多子目錄下去搜索 SWT.JAR文件,在找到的JAR文件中包含了SWT全部的Java類文件。因為SWT應(yīng)用了JNI技術(shù),因此同時也要找到相對應(yīng)的JNI本地化庫文件,由于版本和操作平臺的不同,本地化庫文件的名稱會有些差別,比如SWT-WIN32-2116.DLL是Window平臺下Eclipse Build 2116的動態(tài)庫,而在Unix平臺相應(yīng)版本的庫文件的擴(kuò)展名應(yīng)該是.so,等等。注意的是,Eclipse是一個開放源代碼的項目,因此你也可以在這些目錄中找到SWT的源代碼,以上是AWT和Swing的強(qiáng)勁對手的介紹,相信這會對開發(fā)很有幫助。
【編輯推薦】

















