AWT和Swing都是java中的包。
AWT(Abstract Window Toolkit):抽象窗口工具包,早期編寫圖形界面應用程序的包。
Swing :為解決 AWT 存在的問題而新開發的圖形界面包。Swing是對AWT的改良和擴展。
AWT和Swing的實現原理不同: AWT的圖形函數與操作系統提供的圖形函數有著一一對應的關系。也就是說,當我們利用 AWT構件圖形用戶界面的時候,實際上是在利用操作系統的圖形庫。 不同的操作系統其圖形庫的功能可能不一樣,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現Java語言所宣稱的"一次編譯,到處運行"的概念,AWT不得不通過犧牲功能來實現平臺無關性。因此,AWT 的圖形功能是各操作系統圖形功能的“交集”。 因為AWT是依靠本地方法來實現功能的,所以AWT控件稱為“重量級控件”。 而Swing ,不僅提供了AWT 的所有功能,還用純粹的Java代碼對AWT的功能進行了大幅度的擴充。 例如:并不是所有的操作系統都提供了對樹形控件的支持, Swing則利用了AWT中所提供的基本作圖方法模擬了一個樹形控件。 由于 Swing是用純粹的Java代碼來實現的,因此Swing控件在各平臺通用。 因為Swing不使用本地方法,故Swing控件稱為“輕量級控件”。 AWT和Swing之間的區別: 1)AWT 是基于本地方法的C/C++程序,其運行速度比較快;Swing是基于AWT的Java程序,其運行速度比較慢。 2)AWT的控件在不同的平臺可能表現不同,而Swing在所有平臺表現一致。
在實際應用中,應該使用AWT還是Swing取決于應用程序所部署的平臺類型。例如: 1)對于一個嵌入式應用,目標平臺的硬件資源往往非常有限,而應用程序的運行速度又是項目中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT當然成了嵌入式Java的第一選擇。 2)在普通的基于PC或者是工作站的標準Java應用中,硬件資源對應用程序所造成的限制往往不是項目中的關鍵因素。所以在標準版的Java中則提倡使用Swing, 也就是通過犧牲速度來實現應用程序的功能。
新聞熱點
疑難解答