1. 程式人生 > >AWT和Swing的是什麼?有何不同?怎麼選擇

AWT和Swing的是什麼?有何不同?怎麼選擇

寫部落格的目的是為了自己學習和複習,許多解釋來自於網上大牛,文章非原創。能幫助到別人當然更好不過,水平有限,可能有許多錯誤,歡迎指正。

what是AWT和Swing?

AWT和Swing都是Java中用來做視覺化介面的。AWT(Abstract Window Toolkit):抽象視窗工具包,早期編寫圖形介面應用程式的包。Swing :為解決 AWT 存在的問題而新開發的圖形介面包。Swing是對AWT的改良和擴充套件。

實現原理

AWT :是通過呼叫作業系統的native方法實現的,所以在Windows系統上的AWT視窗就是Windows的風格,而在Unix系統上的則是XWindow風格。 AWT 中的圖形函式與 作業系統 所提供的圖形函式之間有著一一對應的關係,我們把它稱為peers。 也就是說,當我們利用 AWT 來構件圖形使用者介面的時候,我們實際上是在利用 作業系統 所提供的圖形庫。由於不同 作業系統 的圖形庫所提供的功能是不一樣的,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現Java語言所宣稱的”一次編譯,到處執行”的概念,AWT 不得不通過犧牲功能來實現其平臺無關性,也就是說,AWT 所提供的圖形功能是各種通用型作業系統所提供的圖形功能的交集。由於AWT 是依靠本地方法來實現其功能的,我們通常把AWT控制元件稱為重量級控制元件。
Swing

:是所謂的Lightweight元件,不是通過native方法來實現的,所以Swing的視窗風格更多樣化。但是,Swing裡面也有heaveyweight元件。比如JWindow,Dialog,JFrame。Swing由純Java寫成,可移植性好,外觀在不同平臺上相同。所以Swing部件稱為輕量級元件( Swing是由純JAVA CODE所寫的,因此SWING解決了JAVA因視窗類而無法跨平臺的問題,使視窗功能也具有跨平臺與延展性的特性,而且SWING不需佔有太多系統資源,因此稱為輕量級元件!!!)

異同(區別)

  1. AWT 是基於本地方法的C/C++程式,其執行速度比較快;Swing是基於AWT的Java程式,其執行速度比較慢。
  2. AWT的控制元件在不同的平臺可能表現不同,而Swing在所有平臺表現一致。

如何選擇

在實際應用中,應該使用AWT還是Swing取決於應用程式所部署的平臺型別。例如:

  1. 對於一個嵌入式應用,目標平臺的硬體資源往往非常有限,而應用程式的執行速度又是專案中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT當然成了嵌入式Java的第一選擇。
  2. 在普通的基於PC或者是工作站的標準Java應用中,硬體資源對應用程式所造成的限制往往不是專案中的關鍵因素。所以在標準版的Java中則提倡使用Swing,也就是通過犧牲速度來實現應用程式的功能。