Jonas,
Swing обобщает вашу базовую архитектуру, чтобы предоставить вам независимый от платформы пользовательский опыт. Единственным тяжеловесным компонентом (предоставляемым ОС) является контейнер JFrame, а остальное в значительной степени обрабатывается Takeit Swing. AWT, с другой стороны, просит ОС нарисовать все свои компоненты пользовательского интерфейса, что означает, что он быстрее во многих отношениях, чем использование собственных компонентов пользовательского интерфейса, специфичных для данной ОС. SWT пытается достичь среднего уровня, для различных стандартных компонентов, таких как кнопки и метки (которые доступны в большинстве ОС), он позволяет ОС справиться с этими и для других специализированных компонентов, SWT будет обрабатывать создание для вас.
При этом я могу обрисовать недостатки.
(1) Поскольку инструментарий создает и отображает компоненты для вас, а не запрашивает ОС, вы не получаете преимущества от скорости встроенных компонентов, предоставляемых ОС.
(2) Пользовательский интерфейс не является особенно атрибутивным, поскольку он выглядит чуждым большинству платформ ОС в отношении того, как вы выглядите и чувствуете.
(3) Некоторые из менеджеров компоновки, например, GridBadLayout и т. Д., Могут быть упрощены. Я потерял счет из числа проектов, над которыми я работал, где люди обернули GridBagLayout в какой-то специальный код, чтобы получить более простой способ его использования.
Я бы посоветовал вам написать простое приложение на AWT, Swing и SWT и сравнить подходы к разработке и конечный продукт между ними, а затем просмотреть различные комментарии других разработчиков и решить, какое из них лучше всего подходит. Я работал с Swing в течение многих лет и использовал неприязнь к SWT, но я понял, что Swing намного сложнее, чем он должен быть по сравнению с другими фреймворками.