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