GitHub Copilot 28 mai 2026

L'IA et la génération
de code Java

Comment l'IA générative a bouleversé le développement

Julien Dubois
Julien Dubois
Java Champion  •  Principal Manager @ Microsoft / GitHub

Qui suis-je ?

Julien Dubois
Julien Dubois
☕ Java Champion 🏢 Microsoft / GitHub ⭐ JHipster 🤖 AI × Java
  • Principal Manager, Java Developer Relations @ Microsoft / GitHub
  • Créateur de JHipster — plateforme Open Source 22 000+ ⭐
  • Contributeur LangChain4j & Spring AI
  • 200+ conférences internationales (Devoxx, SpringOne, Microsoft Build…)
  • Auteur de "Spring par la pratique" — 1er livre français sur Spring
  • 25+ ans d'expérience dans l'écosystème Java
🌐 julien-dubois.com    𝕏 @juliendubois    🐙 github.com/jdubois    💼 linkedin.com/in/juliendubois

L'évolution des agents IA

📅
Les débuts — limités
Dates d'entraînement anciennes  •  Complétion de code uniquement  •  Un fichier à la fois
💡
La maturité — multi-fichiers
Compréhension du projet  •  Contexte étendu  •  Génération complète de fonctionnalités
🤖
Aujourd'hui — assistants autonomes
Mode agent  •  Mode plan  •  Skills  •  MCP  •  Intégration IDE complète

Mode Agent, Mode Plan & Git Worktrees

🤖 Mode Agent

L'IA agit de manière autonome :

  • Lit les fichiers du projet
  • Écrit et modifie du code
  • Exécute des commandes shell
  • Lance les tests automatiquement
  • Corrige les erreurs seul
💡 GitHub Copilot Agent Mode

📋 Mode Plan

L'IA planifie avant d'agir :

  • Analyse la demande en profondeur
  • Génère un plan d'action détaillé
  • Demande votre validation
  • Exécute étape par étape
  • Revient en arrière si besoin
💡 Moins d'erreurs grâce à la réflexion préalable

🌳 Git Worktrees

Plusieurs agents en parallèle, sans conflit :

  • Un répertoire par branche
  • Un agent par worktree
  • Plusieurs tâches simultanées
  • Isolation complète des changements
  • Merge final maîtrisé
💡 git worktree add + 1 agent par dossier

Model Context Protocol (MCP)

🔌 Protocole standard ouvert

MCP permet aux agents IA de se connecter à des outils externes : bases de données, APIs, systèmes de fichiers, services cloud — en temps réel.

🗄️
Bases de données
PostgreSQL, MySQL, MongoDB…
☁️
Cloud & APIs
GitHub, Azure, AWS, REST…
🔍
Docs & Recherche
Javadoc, Stack Overflow…
💡 L'agent gagne accès à un contexte enrichi en temps réel pour générer du code plus précis et plus pertinent
🚀 Demo : Utiliser le serveur MCP de GitHub

Demo : Utiliser le serveur MCP de GitHub

copilot — prompt
>
Use the GitHub official MCP server to find:
- In repositories coded in Java, with more than 100 stars
- 10 tickets with the "good first issue" label
- Tickets should have a title, GitHub repository, link

Les Skills

🎯 Qu'est-ce qu'un Skill ?

Un skill permet de spécialiser un agent IA avec des instructions métier précises, des fichiers de contexte et des outils dédiés — pour un domaine particulier.
Standard ouvert Agent Skills (agentskills.io) — compatible Copilot CLI, Claude Code, Windsurf…

📦 dr-jskill

Mon skill pour créer des applications Spring Boot 4.x avec Java 25, PostgreSQL, Docker, et un front-end Vue / React / Angular au choix.

github.com/jdubois/dr-jskill

💡 Pourquoi des skills ?

  • Conventions de code personnalisées
  • Architecture définie à l'avance
  • Résultats reproductibles
  • Partage en équipe
🚀 Demo : Génération d'une application Spring Boot 4 + Java 25 + Vue.js avec dr-jskill

Demo : Spring Boot 4 + Java 25 + Vue.js avec dr-jskill

copilot — prompt
>
Create a ticket management application with Dr JSkill.
    
Here are the specifications:

- the application's goal is to find good tickets to help Java Open Source projects
- tickets are GitHub tickets, as discovered with the MCP prompt from the previous demo
- add/edit/remove tickets with a title, GitHub repository, link and status
- store them in a database, and initialize the database with the tickets from the previous command
- it has a fancy UI with Vue.js

Intégration dans les IDEs

Les IDEs Java intègrent l'IA nativement.

🟦 VS Code

  • GitHub Copilot natif — réalisé par Microsoft, intégration la plus poussée
  • Agent mode — complétion, chat et agent mode
  • Java Extension Pack — JDTLS, debug, tests, Maven/Gradle — utilisé par l'agent
  • Choix du modèle (GPT, Claude, ...) au sein de Copilot

🟥 IntelliJ IDEA

  • Plugin GitHub Copilot — complétion, chat et mode agent
  • Plugin ACP (Agent Client Protocol, standard ouvert lancé par Zed) — brancher un agent externe (GitHub Copilot CLI…) directement dans l'IDE
  • Serveur MCP IntelliJ — expose l'index PSI, le refactoring et les inspections aux agents externes
  • JetBrains Junie — l'agent de JetBrains
  • Accès aux refactorings sémantiques d'IntelliJ (rename, extract, change signature…) depuis l'agent

AGENTS.md — le brief du projet

Un seul fichier, à la racine, lu par tous les agents : le standard ouvert AGENTS.md.

🧭 Ce qu'il contient

  • Overview du projet, stack, ports
  • Commandes exactes : ./mvnw verify, ./mvnw spring-boot:run
  • Version JDK, framework, BOM
  • Conventions de code, tests, coverage
  • Convention de commits & PR
  • Actions interdites (prod, secrets, --force…)

🚀 Comment le créer

  • /init dans Copilot CLI — l'agent lit votre repo et propose un draft
  • Relire, élaguer : court vaut mieux que long (context rot)
  • Itérer : chaque fois que l'agent se trompe, corriger AGENTS.md — pas le prompt
  • Versionné, revu en PR comme du code

🗂️ Monorepo & modules

  • AGENTS.md à la racine = règles globales
  • Un AGENTS.md par sous-module pour les spécificités (le plus proche gagne)
  • Pointer vers les skills et serveurs MCP attendus
  • Renvoyer vers docs/ plutôt que de tout dupliquer
💡 Pas d'AGENTS.md = l'agent redécouvre le projet à chaque session, et se trompe à chaque fois aux mêmes endroits
🚀 Demo : Génération d'un copilot-instructions.md avec /init

Demo : Génération d'un copilot-instructions.md avec /init

copilot — prompt
> /init
copilot — prompt
> Create a public GitHub repo called jdubois/2026-demo and push the code there

Bonnes pratiques pour Java

Les CLIs agentiques modernes (Copilot CLI, Claude Code…) intègrent le protocole LSP. Pour Java, c'est JDTLS (Eclipse JDT Language Server).

☕ JDTLS — Eclipse JDT Language Server

  • Le même moteur que VS Code Java & Eclipse, exposé via LSP
  • Analyse sémantique complète : AST, type system, classpath Maven/Gradle
  • Refactorings sûrs : rename, extract method, change signature — propagés à tout le projet
  • Navigation : go-to-definition, find-references, hiérarchie de types
  • Quick-fix & organize imports pilotés par l'agent
  • Diagnostics temps réel : erreurs de compilation, warnings, nullability

✅ Hygiène projet

  • Pinner le JDK
  • ./mvnw compile doit être rapide
  • Garder main vert — c'est la vérité-terrain de l'agent
  • Boucle : générer → verify → lire les erreurs → corriger

🚫 Déconseillé dans une boucle d'agent

-DskipTests, les tests doivent tourner.

Harness > model

Un agent = tools in a loop. À modèle égal, c'est le harness autour du modèle qui fait la différence entre un agent qui livre et un agent qui hallucine.

🔁 La boucle

  • Observer → décider → agir → vérifier, en continu
  • Plan mode avant agent mode sur tout sujet non trivial
  • Sub-agents : isoler les contextes, paralléliser

🛠️ Les outils

  • Skills, MCP servers, LSP, sandbox shell — capacités déterministes
  • Au-delà de ~20 outils chargés, le modèle se trompe de cible

🧠 Le contexte

  • AGENTS.md + skills : briefer une bonne fois pour toutes
  • Éviter le context rot : poisoning, distraction, confusion, clash
  • Context offloading : plan.md, mémoire, résumés — pas tout dans la fenêtre

✅ Le verdict (evals)

  • Critère vérifiable par la machine : ./mvnw verify
  • L'agent lit les erreurs (LSP, tests) et corrige tout seul
  • Sans verdict net, l'agent tourne en rond — et le modèle n'y pourra rien

💡 Conséquence pratique

Le même modèle, dans deux harness différents, donne des résultats très éloignés (cf. classements SWE-bench). Investir dans le harness — skills, MCP, AGENTS.md, LSP, boucle de vérification — rapporte plus que de courir après le dernier modèle.

GitHub Copilot App

Technical preview — une app desktop native GitHub : démarrer une session agentique, l'isoler, la piloter, et merger la PR finale.

🧭 Partir du contexte GitHub

  • Démarrer depuis une issue, PR, prompt ou session précédente
  • Inbox unifiée sur tous les repos connectés
  • Détails, reviews et checks restent attachés à la session

⚡ Sessions isolées

  • Chaque session : son git worktree, ses fichiers, sa conversation
  • Pause / reprise, en parallèle sur plusieurs repos

✅ Piloter, valider, livrer

  • Relire le plan et le diff, guider l'itération
  • Valider via terminal et navigateur intégrés
  • Ouvrir la PR — mêmes reviews, mêmes checks
  • Agent Merge : reviews, checks, merge automatique
🚀 Demo : GitHub Copilot App — 3 sessions et 3 PR mergées, sans quitter l'app

Demo : 3 sessions en parallèle avec GitHub Copilot App

session 1 — prompt
> Transform the UI to be enterprise-like.
session 2 — prompt
> Translate the UI to French.
session 3 — prompt
>
I want to assign tickets to users. There are 3 users, stored in a database table: julien, alice, bob. Update the database, the Java code and the front-end code accordingly.

Conclusion

🚀 Ce qui a changé

  • De la complétion à l'autonomie (agent + plan mode)
  • L'importance du harness : MCP & Skills, LSP, AGENTS.md
  • GitHub Copilot App & Git worktrees = agents en parallèle
  • Intégration avancée dans VS Code & IntelliJ

✅ Ce qui reste vrai

  • Le développeur reste maître du code
  • La compréhension technique est clé
  • JHipster est toujours pertinent ! 😄
Julien Dubois
Julien Dubois
github.com/jdubois/dr-jskill
🙏
Merci !