En resumen, hay un kit de herramientas AWT, que es la capa que hace toda la gestión de ventanas y el dibujo. Está llamando al código específico de la plataforma nativa dentro de la JVM. También es responsable del dibujo de java2d. Puede usar oleoductos acelerados directos o abiertos.
Swing se desarrolla en la parte superior. Swing realmente dibuja cada botón y cada objeto con código Java simple. El dibujo se maneja con un aspecto actual y se siente que decide cómo dibujar los componentes. De modo que puede anular sus métodos de pintura y agregar algunas cosas adicionales sin ningún problema.
Metal y Nimus LaF son 100% java2d dibujados, por lo que dentro de ellos encontrará elementos como drawRectangle y drawLine para dibujar componentes. El aspecto y las sensaciones nativas, como windows, gtk, acceden al tema de los sistemas operativos actuales para dibujar algo que se parece a los widgets nativos. Es por eso que no siempre se ven como aplicaciones nativas.
También hay otros kits de herramientas de interfaz gráfica de usuario para Java, como SWT, utilizados, por ejemplo, en Eclipse. Lo que está haciendo es obtener la ventana del AWT y luego poner 100% widgets nativos sobre ella. Está mucho mejor integrado con el sistema operativo, se ve mejor, funciona más rápido, usa menos memoria.Pero con eso, tendrías que distribuir tu aplicación con bibliotecas nativas específicas de os y es menos personalizable, en comparación con Swing.
La JVM a través del sistema operativo :) – GETah