AWT utiliza comandos nativos de la plataforma lo que le da velocidad pero hace que sea menos portable, mientras que Swing usa código Java puro haciéndolo más portable aunque más lento. AWT intenta emular la apariencia nativa del sistema operativo, mientras que Swing tiene su propia apariencia.