La modernización de aplicaciones Java heredadas puede ser un desafío, especialmente cuando se trata de dependencias obsoletas, vulnerabilidades de seguridad y plataformas de despliegue anticuadas. Afortunadamente, GitHub Copilot Agent Mode, junto con la extensión de VS Code para la modernización de aplicaciones, ofrece una solución interactiva y paso a paso para facilitar este proceso.
¿Qué es GitHub Copilot Agent Mode?
GitHub Copilot Agent Mode es una funcionalidad avanzada que transforma a Copilot de un simple generador de sugerencias a un colaborador activo en tu código. Imagínalo como un desarrollador junior en tu equipo que comprende tus objetivos y trabaja en múltiples pasos para alcanzarlos de forma automática e iterativa.
Con Agent Mode, Copilot puede:
- Entender instrucciones de alto nivel.
- Tomar decisiones basadas en el contexto.
- Ejecutar tareas complejas de varios pasos.
- Iterar en los cambios con feedback en tiempo real.
Requisitos Previos
Antes de empezar, asegúrate de tener lo siguiente:
- Visual Studio Code
- Una licencia de GitHub Copilot (Pro, Pro +, Business o Enterprise).
- La extensión “GitHub Copilot app modernization – upgrade for Java”.
- Un proyecto Java heredado basado en Git, construido con Maven o Gradle (compatible con JDK 8 o posterior).
Pasos para Modernizar tu Proyecto Java
Paso 1: Abre tu Proyecto Java en VS Code
Utiliza un proyecto Java heredado de ejemplo (o el tuyo propio), con control de código fuente inicializado con Git y un conjunto de pruebas funcional (idealmente con pruebas unitarias).
git clone https://github.com/your-org/your-legacy-java-app.git
cd your-legacy-java-app
code .
Paso 2: Inicia una Sesión de Agente en VS Code
Abre la barra lateral de chat de GitHub Copilot e inicia una nueva sesión de agente. Selecciona “GitHub Copilot app modernization – upgrade for Java” de las herramientas disponibles.
Copia y pega lo siguiente en tu sesión de agente para comenzar:
Using Java upgrade tools, upgrade this project to Java 21. Analyze deprecated APIs, update Gradle dependencies, and propose a safe, testable migration plan.
Paso 3: Permite que Copilot Analice y Planifique
Copilot analizará tu proyecto y propondrá un plan de actualización. La herramienta comenzará escaneando:
- La versión de JDK en uso.
- Las configuraciones de las herramientas de construcción (
build.gradlepara Gradle opom.xmlpara Maven). - Las dependencias obsoletas o inseguras.
- Las APIs y características del lenguaje que están en desuso.
Luego, creará un plan de actualización estructurado que podrás editar en el chat de Copilot. Puedes indicarle que excluya módulos de esta actualización o que realice los ajustes necesarios.
Paso 4: Aplica los Cambios y Resuelve los Errores
Una vez que apruebes el plan, Copilot comenzará a actualizar los archivos, ajustar las importaciones y corregir los errores de sintaxis. Si aparecen errores de compilación, Copilot entrará en un bucle de corrección y prueba hasta que el proyecto se compile sin problemas.
Copilot generará un informe de actualización detallado, que incluirá:
- Archivos modificados e historial de commits.
- Actualizaciones de APIs y dependencias.
- Tareas pendientes y próximos pasos.
Ejemplo de cambios en el código antes y después de la actualización:
// Antes (constructor obsoleto)
View view = this.resolver.resolveViewName("intro", new Locale("EN"));
// Después de la actualización a Java 21
View view = this.resolver.resolveViewName("intro", Locale.of("EN"));
Paso 5: Migra a Azure (Opcional)
Para preparar tu aplicación para Azure, puedes ejecutar una evaluación para identificar problemas de compatibilidad con la nube. Desde la interfaz de usuario de la extensión GitHub Copilot app modernization, haz clic en “Migrate to Azure”.
Dependiendo del destino de implementación, GitHub Copilot app modernization identificará los problemas de migración a la nube y te recomendará acciones. Puedes modificar el archivo assessment-config.yaml en la carpeta appmod-java/appcat para establecer el destino de la implementación. Por ejemplo, puedes elegir Azure Kubernetes Service (AKS) como destino.
Se generará un informe de evaluación que detallará los problemas de compatibilidad con la nube. Haz clic en el botón “migrate” asociado a la categoría de problemas de migración de autenticación para pasar de la autenticación de usuarios local a Microsoft Entra ID.
Al igual que en el proceso de actualización, Copilot primero hará un plan destacando las actualizaciones de dependencias y los cambios de configuración. Una vez que apruebes el plan, Copilot ejecutará los pasos de migración.
Paso 6: Valida los Cambios y Revisa el Informe
Una vez que tu código esté actualizado, es hora de confirmar que todo funciona como se espera. Copilot te guiará a través de la ejecución de tu conjunto de pruebas utilizando el sistema de construcción de tu proyecto.
Para proyectos Maven, puedes ejecutar las pruebas manualmente con:
./mvnw test
Para proyectos Gradle:
./gradlew test
Si hay fallos, Copilot te ayudará a depurar o incluso a escribir las pruebas que falten basándose en tus cambios recientes. Recuerda que siempre debes confirmar todos los pasos propuestos.
Escaneo Automático de CVE
GitHub Copilot app modernization realiza automáticamente un escaneo exhaustivo de CVE en todas las dependencias modificadas, una característica de seguridad fundamental. Cuando se detectan vulnerabilidades, el agente propone de forma inteligente reemplazos de versiones seguros o recomienda bibliotecas alternativas para mantener el cumplimiento de la seguridad.
Conclusión
Con GitHub Copilot app modernization, puedes tomar un proyecto Java heredado y prepararlo para la nube. Esta herramienta facilita la modernización del código para actualizaciones y migraciones de Java, resuelve problemas de compilación, valida los cambios e incluso ayuda a fortalecer la cobertura de las pruebas, todo dentro de un único flujo de trabajo guiado.
No importa si estás modernizando Java, actualizando .NET o planificando tu próxima migración, las extensiones que mejoran Copilot Agent Mode están listas para ayudarte a analizar grandes bases de código, planificar actualizaciones o migraciones, solucionar problemas automáticamente y ahorrar horas de depuración manual.
Fuente: GitHub Blog
Leave a Comment