AWT和Swing都是java中的包。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, 也就是經過犧牲速度來實現應用程序的功能。設計