AWT состоит из “тяжелых компонентов”, имеющих в качестве peer системные компоненты. Swing – состоит из легких компонентов, построенных на основании базовых компонентов AWT.
Кроме этого, в Swing усовершенствована модель слушателей событий.
В данный момент Swing является основной библиотекой пользовательского интерфейса в Java. AWT - не дорабатывается.
Поэтому использование Swing - почти всегда предпочтительнее, за исключением тех случаев, когда нужна обратная совместимость с Java 1