¡Hola developer 👋🏼! En 1997 apareció la primera release de Java Swing, una forma genial de desarrollar aplicaciones de escritorio en este lenguaje.
Pues bien, ¡han pasado 28 años y todavía sigue ocupando el corazoncito ❤️ de muchas empresas!
En este artículo quiero compartir contigo cómo podemos contenerizar el entorno necesario para ejecutar este tipo de aplicaciones y levantarlas solo cuando lo necesitemos.
Como podrás imaginar, este tipo de apps necesitan crear ventanas gráficas 🪟 en nuestro sistema, así que veremos cómo conseguir que esto funcione tanto en Windows como en macOS, redirigiendo lo que se genera dentro del Dev Container al host.
🎥 Aquí te dejo un vídeo donde te explico paso a paso cómo funcionan los Dev Containers y cómo sacarles todo el partido 👇
🤔 ¿Por qué hacer esto?
Porque quiero poder usar Visual Studio Code 🧑🏻💻 con este tipo de aplicaciones y así aprovecharme de la versión más completa de GitHub Copilot 🤖 dentro del entorno.
Nada de instalaciones pesadas ni configuraciones eternas: solo abrir el contenedor y ¡a programar!
📦 Repositorio de ejemplo
Para demostrar que todo esto funciona, he preparado un repositorio de ejemplo 🧰 con:
- Una aplicación Java Swing de prueba ☕
- Una base de datos MySQL 🐬
- Código de ejemplo y tests unitarios 🧪
👉 Puedes encontrar el repositorio aquí: https://github.com/0GiS0/java-swing-demo
🍏 Configuración para macOS
🧠 En macOS no existe un servidor X11 nativo, por lo que necesitamos XQuartz. Pero no te preocupes, puedes instalarlo fácilmente ejecutando este comando 👇
brew install --cask xquartzUna vez instalado, necesitamos permitir las conexiones remotas, ya que nuestro Dev Container se comunicará con el host.
open -a XQuartz
defaults write org.xquartz.X11 nolisten_tcp -bool false
DISPLAY=:0 /opt/X11/bin/xhost +En el repositorio de ejemplo solo tendrás que asegurarte de que la variable de entorno tenga este valor:
"DISPLAY": "host.docker.internal:0"
Con esto, la aplicación sabrá dónde renderizar las ventanas.
Finalmente, solo queda levantar el contenedor y ejecutar la app con el script run.sh:
./run.shSi todo está correcto, deberías ver la aplicación funcionando sin problema 🎉
🪟 Configuración para Windows
En el caso de Windows, nos apoyaremos en WSL2 🐧 para evitar tener que instalar nada adicional y aprovechar lo que ya viene incluido con el sistema.
Para permitir la comunicación entre el contenedor y WSL2, mapeamos esta ruta dentro del Dev Container:
- /tmp/.X11-unix:/tmp/.X11-unixY luego, en la configuración del entorno, establecemos el valor de DISPLAY así:
"DISPLAY": "${localEnv:DISPLAY}"
Además, asegúrate de que VS Code esté configurado para usar WSL cuando ejecute Dev Containers.
Así todo fluirá sin errores 💫

Si abres el repositorio en Windows, verás que… ¡voilà! 🎩
La aplicación también funciona sin ningún problema 🪄
🧩 Conclusión
Java Swing puede tener sus años, pero sigue vivito y coleando 💪🏻
Y con Dev Containers, puedes mantener tu entorno perfectamente aislado, reproducible y fácil de arrancar cuando lo necesites.
Así que si aún tienes aplicaciones Swing en tu empresa o simplemente te gusta la nostalgia tech ✨, ¡esta es una forma moderna de mantenerlas bajo control!
¡Nos vemos 👋🏼!
