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