Swing считается легковесным, поскольку он полностью реализован на Java без вызова собственной операционной системы для отрисовки компонентов графического интерфейса пользователя.
С другой стороны, AWT (Abstract Window Toolkit) - это тяжелый инструментарий, поскольку он просто выполняет вызовы операционной системы для создания ее компонентов GUI.
Раздел Evolution of Swing Paint System из статьи Живопись в AWT и Swing объясняет разницу между легким и тяжелым весом:
Когда исходный API AWT был
только для JDK 1.0
существовали тяжелые компоненты
(«тяжелый вес» означает, что
компонент имеет свой собственный непрозрачный нативный
окно). Это позволило АВТ полагаться
сильно на подсистеме краски в каждом
родная платформа.
[...]
С
введение легкого веса
компоненты в JDK 1.1 («легкий»
компонент тот, который повторно использует
родное окно его ближайшего
тяжелый предок), нужен AWT
осуществить обработку краски для
легкие компоненты в общем
Java-код.
Поскольку Swing реализован на Java, у него есть некоторые недостатки в производительности, однако я слышал, что производительность улучшилась в последних выпусках Java.
Преимущество Swing состоит в том, что он имеет гораздо больше доступных компонентов, таких как JTable
и JList
, которые более графические и расширяемые, чем компоненты, предоставляемые в AWT, что позволяет для разработки более насыщенных графикой приложений.