AWT和Swing的區(qū)別
AWT 是抽象窗口組件工具包,是 java 最早的用于編寫圖形節(jié)目應(yīng)用程序的開發(fā)包。
Swing 是為了解決 AWT 存在的問題而新開發(fā)的包,它以 AWT 為基礎(chǔ)的。
具體的說就是:
AWT 是Abstract Window ToolKit (抽象窗口工具包)的縮寫,這個(gè)工具包提供了一套與本地圖形界面進(jìn)行交互的接口。AWT 中的圖形函數(shù)與操作系統(tǒng)所提供的圖形函數(shù)之間有著一一對(duì)應(yīng)的關(guān)系,我們把它稱為peers。 也就是說,當(dāng)我們利用 AWT 來構(gòu)件圖形用戶界面的時(shí)候,我們實(shí)際上是在利用操作系統(tǒng)所提供的圖形庫(kù)。由于不同操作系統(tǒng)的圖形庫(kù)所提供的功能是不一樣的,在一個(gè)平臺(tái)上存在的功能在另外一個(gè)平臺(tái)上則可能不存在。為了實(shí)現(xiàn)Java語言所宣稱的"一次編譯,到處運(yùn)行"的概念,AWT 不得不通過犧牲功能來實(shí)現(xiàn)其平臺(tái)無關(guān)性,也就是說,AWT 所提供的圖形功能是各種通用型操作系統(tǒng)所提供的圖形功能的交集。由于AWT 是依靠本地方法來實(shí)現(xiàn)其功能的,我們通常把AWT控件稱為重量級(jí)控件。
Swing 是在AWT的基礎(chǔ)上構(gòu)建的一套新的圖形界面系統(tǒng),它提供了AWT 所能夠提供的所有功能,并且用純粹的Java代碼對(duì)AWT 的功能進(jìn)行了大幅度的擴(kuò)充。例如說并不是所有的操作系統(tǒng)都提供了對(duì)樹形控件的支持, Swing 利用了AWT 中所提供的基本作圖方法對(duì)樹形控件進(jìn)行模擬。由于 Swing 控件是用100%的Java代碼來實(shí)現(xiàn)的,因此在一個(gè)平臺(tái)上設(shè)計(jì)的樹形控件可以在其他平臺(tái)上使用。由于在Swing 中沒有使用本地方法來實(shí)現(xiàn)圖形功能,我們通常把Swing控件稱為輕量級(jí)控件。
AWT和Swing之間的基本區(qū)別:AWT 是基于本地方法的C/C++程序,其運(yùn)行速度比較快;Swing是基于AWT 的Java程序,其運(yùn)行速度比較慢。對(duì)于一個(gè)嵌入式應(yīng)用來說,目標(biāo)平臺(tái)的硬件資源往往非常有限,而應(yīng)用程序的運(yùn)行速度又是項(xiàng)目中至關(guān)重要的因素。在這種矛盾的情況下,簡(jiǎn)單而高效的AWT 當(dāng)然成了嵌入式Java的第一選擇。而在普通的基于PC或者是工作站的標(biāo)準(zhǔn)Java應(yīng)用中,硬件資源對(duì)應(yīng)用程序所造成的限制往往不是項(xiàng)目中的關(guān)鍵因素,所以在標(biāo)準(zhǔn)版的Java中則提倡使用Swing, 也就是通過犧牲速度來實(shí)現(xiàn)應(yīng)用程序的功能。
必須了解AWT是Swing的基礎(chǔ)。對(duì)AWT和Swing的了解,更具體的應(yīng)用需要在不斷的實(shí)踐中去體會(huì)。以上就是AWT和Swing的區(qū)別。
【編輯推薦】