java Swing和AWT的區別

 簡單的說:

 

  AWT 是抽象窗口組件工具包,是 java 最早的用於編寫圖形節目應用程序的開發包。 
Swing 是爲了解決 AWT 存在的問題而新開發的包,它以 AWT 爲基礎的。     

具體的說就是:

       AWT 是Abstract Window ToolKit (抽象窗口工具包)的縮寫,這個工具包提供了一套與本地圖形界面進行交互的接口。AWT 中的圖形函數與操作系統所提供的圖形函數之間有着一一對應的關係,我們把它稱爲peers。 也就是說,當我們利用 AWT 來構件圖形用戶界面的時候,我們實際上是在利用操作系統所提供的圖形庫。由於不同操作系統的圖形庫所提供的功能是不一樣的,在一個平臺上存在的功能在另外 一個平臺上則可能不存在。爲了實現Java語言所宣稱的"一次編譯,到處運行"的概念,AWT 不得不通過犧牲功能來實現其平臺無關性,也就是說,AWT 所提供的圖形功能是各種通用型操作系統所提供的圖形功能的交集。由於AWT 是依靠本地方法來實現其功能的,我們通常把AWT控件稱爲重量級控件。 

       Swing 是在AWT的基礎上構建的一套新的圖形界面系統,它提供了AWT 所能夠提供的所有功能,並且用純粹的Java代碼對AWT 的功能進行了大幅度的擴充。例如說並不是所有的操作系統都提供了對樹形控件的支持, Swing 利用了AWT 中所提供的基本作圖方法對樹形控件進行模擬。由於 Swing 控件是用100%的Java代碼來實現的,因此在一個平臺上設計的樹形控件可以在其他平臺上使用。由於在Swing 中沒有使用本地方法來實現圖形功能,我們通常把Swing控件稱爲輕量級控件。 

       AWT和Swing之間的基本區別:AWT 是基於本地方法的C/C++程序,其運行速度比較快;Swing是基於AWT 的Java程序,其運行速度比較慢。對於一個嵌入式應用來說,目標平臺的硬件資源往往非常有限,而應用程序的運行速度又是項目中至關重要的因素。在這種矛 盾的情況下,簡單而高效的AWT 當然成了嵌入式Java的第一選擇。而在普通的基於PC或者是工作站的標準Java應用中,硬件資源對應用程序所造成的限制往往不是項目中的關鍵因素,所 以在標準版的Java中則提倡使用Swing, 也就是通過犧牲速度來實現應用程序的功能。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章