AWTからSwingが開発されるに至った経緯

一般に、JavaでGUIを持つアプリケーションやアプレットを作成する、AWTとSwingを使用します。この二つの違いを理解するには、歴史的な流れを知る必要があるようです。

Javaができた当初から存在したのはAWTの方だったそうです。
AWTは、稼働するプラットフォームに処理をゆだねるという仕組みを採用していたために、次のような問題が生じました。

  1. パフォーマンスが悪い
  2. すべてのプラットフォームで一貫したGUIを提供するのが難しい
  3. プラットフォームの短所も引き継ぐ
そこでAWTの短所を克服する形で、Swingが開発されました。Swingは、AWTとな異なる仕組みを作用しており、Java対応のどのプラットフォームでプログラムを動かしてもまったく同じ外観と動作が得られます。Swingの利点を上げると、以下のようになります。
  1. ユーザーインターフェース要素の数が多く、各要素の機能も豊富である。
  2. プラットフォームへの依存度が少ないため、プラットフォームの機能に制限されることも少ない。また、各プラットフォームに固有のバグが少ない。
  3. すべてのプラットフォームで一貫したユーザーインターフェースを提供する。

このようにSwingはAWTを発展させる形で作られたため、現在ではGUIプログラミングを行う時は、Swingを用いるのが主流です。しかし、Swingは完全にSwingを置き換えているわけではなく、AWTの基本構造をベースにしているため、使用する上ではAWTの知識が必要となってきます。
【参考文献】
アスキー書籍編集部『Java6 プログラミング講座』2007 ASCII 178 - 180 pp