Jonas,
Swing generalizza la tua architettura di base per offrirti un'esperienza utente neutrale sulla piattaforma. L'unico componente dei pesi massimi (fornito dal sistema operativo) è il contenitore JFrame e il resto è praticamente gestito da Swing. AWT, dall'altro lato, chiede al sistema operativo di disegnare tutti i suoi componenti dell'interfaccia utente, il che significa che è più veloce in molti modi poiché usi i componenti dell'interfaccia utente nativi specifici del sistema operativo. SWT cerca di raggiungere una via di mezzo, per vari componenti standard come pulsanti ed etichette (che sono disponibili sulla maggior parte dei sistemi operativi), consente al sistema operativo di gestirli e per altri componenti specializzati, SWT gestirà la creazione per te.
Detto questo, posso delineare gli svantaggi.
(1) Poiché il toolkit crea e rende i componenti per te piuttosto che chiedere al sistema operativo, non puoi trarre vantaggio dalla velocità dei componenti integrati forniti dal sistema operativo.
(2) L'interfaccia utente non è particolarmente interessante in quanto sembra estranea alla maggior parte delle piattaforme del sistema operativo per quanto riguarda l'aspetto e la sensazione che si utilizza.
(3) Alcuni gestori di layout, ad esempio GridBadLayout ecc., Potrebbero essere semplificati meglio. Ho perso il conto del numero di progetti su cui ho lavorato in cui le persone hanno racchiuso GridBagLayout in un codice su misura per ottenere un modo più semplice di usarlo.
Ti consiglierei di scrivere una semplice app in AWT, Swing e SWT e confrontare gli approcci di sviluppo con il prodotto finale tra tutti, quindi rivedere i vari commenti fatti da altri sviluppatori e decidere quale funziona meglio. Ho lavorato con Swing per molti anni e ho usato antipatia per SWT, ma mi sarei reso conto che Swing è molto più complicato di quanto debba essere rispetto ad altri framework là fuori.