Java LTS n’est pas un détail de développeur coincé dans un fichier Docker. C’est un choix de maintenance, de sécurité, de performance web et, parfois, de sobriété numérique. En 2026, ma position est simple : Java 25 est la cible LTS à privilégier pour un nouveau projet ou une migration bien préparée. Java 21 reste propre. Java 17 doit entrer dans un plan de migration. Java 8 et 11 ne sont acceptables que si vous savez exactement pourquoi vous les gardez.
La mauvaise réponse, c’est « on verra plus tard ». Plus tard arrive souvent pendant un audit de sécurité, une montée de version Spring pénible, ou un incident à 23 h. Bref, mauvaise soirée.
Réponse courte : Java LTS sert à stabiliser la production, pas à figer votre stack
Une version LTS donne un socle stable pour plusieurs années. Elle limite les changements fonctionnels, reçoit des correctifs et permet aux équipes de planifier les migrations sans courir après une version Java tous les six mois.
Mais LTS ne veut pas dire « on installe et on oublie ». Franchement, c’est même l’erreur la plus fréquente. Une application en Java 17 avec des dépendances abandonnées, une image Docker non patchée et un pipeline CI bricolé reste une dette technique. Le label LTS ne sauve pas une stack mal entretenue.
Mon arbitrage pour un site, une API ou une plateforme web :
- nouveau projet : Java 25 LTS, sauf blocage framework sérieux ;
- application déjà en Java 21 : rester dessus si tout est stable, préparer Java 25 sans urgence panique ;
- application en Java 17 : planifier une migration, surtout si la roadmap produit dépasse 12 mois ;
- Java 8 ou 11 : traiter le sujet comme une contrainte legacy, pas comme une situation normale.
Java LTS, ça veut dire quoi concrètement ?
La différence entre version LTS et version non-LTS
Java sort régulièrement de nouvelles versions. Certaines sont des versions de fonctionnalité, utiles pour tester des nouveautés, mais rarement idéales comme socle long terme en production. Les versions LTS, pour Long-Term Support, sont celles que l’écosystème considère comme des points d’ancrage plus durables.
Oracle indique que Java 8, 11, 17, 21 et 25 sont des versions LTS. Il prévoit aussi une cadence LTS tous les deux ans, avec Java 29 annoncé comme prochaine LTS prévue en septembre 2027. Ça donne une logique lisible : on ne migre pas à chaque release, mais on ne reste pas non plus dix ans immobile.
Pourquoi la cadence de sortie change la maintenance applicative
Le vrai sujet, ce n’est pas la nouveauté pour la nouveauté. C’est l’alignement. Votre version Java doit rester cohérente avec le framework, les bibliothèques, les images conteneur, le runtime cloud, les outils de build et les pratiques de sécurité.
Quand cet alignement casse, la facture arrive par petits morceaux : dépendances bloquées, patches plus compliqués, temps de build instables, choix d’hébergement restreints. Rien de spectaculaire au début. Puis un jour, une migration qui aurait dû prendre deux semaines en prend trois mois. Classique. Agaçant.
Quelles sont les versions Java LTS encore pertinentes en 2026 ?
| Version | Situation en 2026 | Recommandation GreenCodeLab |
|---|---|---|
| Java 8 | Très présent dans les anciens systèmes, mais coûteux à maintenir proprement. | À isoler, documenter, puis migrer dès que le contexte métier le permet. |
| Java 11 | Socle encore croisé en entreprise, souvent lié à des frameworks vieillissants. | Acceptable seulement avec support, monitoring et trajectoire de sortie. |
| Java 17 | LTS moderne mais déjà en phase de transition pour les nouvelles roadmaps. | Stable à court terme, migration à inscrire au backlog. |
| Java 21 | Très bon compromis actuel pour beaucoup d’applications web. | Rester dessus si la stack est saine, préparer Java 25 sans précipitation. |
| Java 25 | Dernière LTS, publiée en septembre 2025. | Cible recommandée pour nouveau projet et migration préparée. |
Java 8 et 11 : socles historiques à surveiller
Java 8 et Java 11 ne disparaissent pas parce qu’un blog l’a décidé. Beaucoup de systèmes tournent encore dessus. Le problème, c’est que chaque année ajoute de la friction : compatibilité, support fournisseur, dépendances, sécurité, recrutement aussi. Les développeurs capables de maintenir proprement une vieille stack existent, mais ce n’est pas une stratégie.
Java 17 : encore présent, mais migration à planifier
Java 17 a été une excellente base. Pour une application stable, correctement patchée, sans évolution lourde prévue, ce n’est pas un feu rouge. Mais si vous lancez une refonte, une modernisation cloud ou une nouvelle plateforme, choisir Java 17 en 2026 ressemble déjà à un compromis de retard.
Java 21 : stable, moderne, encore défendable
Java 21 reste une bonne version pour les équipes qui veulent éviter une migration immédiate. C’est souvent le bon choix si vos frameworks, vos tests et votre environnement de production sont déjà calés dessus. Pas besoin de casser une stack saine pour cocher une case.
Java 25 : nouvelle cible LTS pour les projets durables
Java 25 est la cible logique pour démarrer proprement. Pas parce que « plus récent » veut automatiquement dire meilleur. Parce qu’une nouvelle base LTS donne plus de marge pour les années qui viennent, surtout sur des projets web qui devront encaisser sécurité, performance, évolutions cloud et maintenance applicative.
Java LTS et qualité web : les impacts que l’on sous-estime
On parle souvent de performance web côté front : poids des images, JavaScript, rendu, Core Web Vitals. Très bien. Mais le backend compte aussi. Un serveur qui répond lentement, une API instable ou une JVM mal dimensionnée finissent par toucher l’expérience utilisateur.
Sécurité et correctifs
Une version LTS bien suivie facilite l’application des correctifs. Elle ne garantit rien toute seule, mais elle réduit le nombre de zones grises. JDK, framework, dépendances, base image, librairies de sérialisation, connecteurs de base de données : tout doit avancer ensemble.
Le piège, c’est de confondre « version supportée » et « application maintenue ». Ce sont deux choses différentes. Une application peut tourner sur une LTS récente et rester vulnérable parce qu’elle traîne une dépendance oubliée.
Performance serveur, temps de démarrage et mémoire
Les versions modernes de Java apportent souvent de meilleurs comportements côté JVM, garbage collection, démarrage ou consommation mémoire. Je dis bien souvent. Pas toujours. Et surtout pas de façon magique.
Sur un site ou une API, les effets concrets se regardent dans les métriques : temps de réponse, latence p95, cold start, mémoire par conteneur, CPU sous charge, erreurs 5xx. Le score Lighthouse ne mesure pas tout, mais il vous rappelle une chose simple : la performance ressentie dépend de toute la chaîne, pas seulement du front.
Observabilité, incidents et stabilité en production
Une stack Java récente s’intègre mieux avec l’observabilité actuelle : logs structurés, métriques JVM, traces distribuées, alertes mémoire, suivi des temps de réponse. Pas glamour. Très utile quand la production tousse.
Une migration Java réussie ne se voit presque pas côté utilisateur. C’est justement bon signe : moins d’incidents, moins de latence bizarre, moins de dette qui bloque les évolutions.
Le lien avec la sobriété numérique : moins de ressources, moins de dette, moins de surprovisionnement
La sobriété numérique ne consiste pas à repeindre une architecture en vert. Elle demande de consommer moins de ressources pour rendre le même service, ou un meilleur service, avec moins de gaspillage.
Java LTS entre dans le sujet par trois portes très concrètes.
- Une JVM plus efficace peut réduire la mémoire ou le CPU nécessaires sur certains workloads.
- Une stack maintenable évite de conserver des architectures artificiellement lourdes.
- Une meilleure stabilité limite le surprovisionnement « au cas où », ce vieux réflexe cloud qui coûte cher et gaspille des ressources.
Mesurez avant de promettre un gain environnemental
Passer de Java 17 à Java 25 ne rend pas automatiquement une application sobre. En revanche, la migration peut être le bon moment pour nettoyer les dépendances, revoir les limites mémoire, réduire les images Docker et ajuster les instances cloud. Là, on parle sérieusement d’éco-conception web.
Quelle version Java LTS choisir selon votre situation ?
| Votre situation | Choix conseillé | Point de vigilance |
|---|---|---|
| Nouveau backend ou API web | Java 25 LTS | Valider compatibilité framework, drivers, monitoring et hébergement. |
| Application récente en Java 21 | Rester sur Java 21 à court terme | Préparer une fenêtre de test Java 25, sans migration réflexe. |
| Application en Java 17 | Planifier Java 21 ou 25 | Ne pas attendre la fin de support pour découvrir les blocages. |
| Stack Java 8 ou 11 | Audit technique avant décision | Identifier dépendances, licence, coûts de support et risques sécurité. |
| Cloud, conteneurs, autoscaling | Java 25 si compatible | Mesurer mémoire, cold start et densité de conteneurs. |
| Framework ancien ou produit critique | Migration progressive | Prévoir rollback, tests de charge et double environnement. |
Si je devais trancher sans dossier complet, je choisirais Java 25 pour tout nouveau socle. Pour l’existant, je regarderais d’abord la maturité des tests. Une équipe sans tests sérieux n’a pas un problème Java. Elle a un problème de pilotage technique.
Et oui, c’est un peu brutal. Mais migrer un runtime sans couverture de tests, c’est jouer à pile ou face avec la production.
Checklist avant de migrer vers une nouvelle LTS
Une migration Java propre commence avant le changement de version. Le passage de 17 à 21 ou 25 peut être simple. Ou pas. La différence se joue souvent dans la préparation.
Auditer les dépendances et frameworks
- Lister les frameworks principaux : Spring, Quarkus, Micronaut, Hibernate, outils batch.
- Vérifier la compatibilité officielle avec la version cible.
- Repérer les bibliothèques non maintenues.
- Tester les drivers base de données et clients HTTP.
Aligner local, CI/CD et production
Le poste développeur, le pipeline CI, les images Docker et la production doivent utiliser une version cohérente. Sinon, vous fabriquez des bugs fantômes. Le vendredi après-midi, évidemment.
Tester les performances réelles avant/après
Ne vous contentez pas d’un build vert. Faites tourner un scénario proche de la production. Mesurez latence, mémoire, CPU, démarrage, erreurs, charge. Le gain peut être réel, nul, ou négatif si la JVM est mal configurée.
Prévoir rollback, monitoring et fenêtre de déploiement
Un bon plan de migration inclut un retour arrière. Pas par pessimisme. Par professionnalisme. Vous devez savoir quoi faire si la latence monte, si une dépendance casse en production ou si le comportement mémoire change.
Checklist minimale :
- version cible validée en préproduction ;
- dépendances critiques mises à jour ;
- images Docker reconstruites et scannées ;
- tests de charge comparatifs ;
- alertes mémoire, CPU et latence vérifiées ;
- rollback documenté ;
- fenêtre de déploiement choisie avec les équipes métier.
Oracle JDK, OpenJDK, Temurin : ne confondez pas version Java et distribution
Dernier point, et il évite pas mal de malentendus : Java 25, Java 21 ou Java 17 désignent une version de la plateforme. Oracle JDK, OpenJDK, Eclipse Temurin ou d’autres builds désignent des distributions.
OpenJDK est l’implémentation open source de référence. Des fournisseurs produisent ensuite des binaires avec leurs propres modalités de support, licences, plateformes et cycles de mise à jour. WhichJDK recommande par exemple Eclipse Temurin 25 pour un usage courant, avec un point que je partage complètement : garder la même version en local, en CI et en production.
Pour une entreprise, le choix dépend du support attendu, de la licence, de la sécurité et de l’hébergement. Ne laissez pas ça au hasard dans un Dockerfile.
Si votre migration touche à la performance, au cloud ou à une refonte applicative, un cadrage de conseil technique évite souvent de transformer une montée de version en chantier interminable.
FAQ rapide sur Java LTS
Quelle est la dernière version Java LTS ?
En 2026, la dernière version Java LTS est Java 25, publiée en septembre 2025. Oracle indique que Java 8, 11, 17, 21 et 25 sont des versions LTS, avec Java 29 prévue comme prochaine LTS en septembre 2027.
Java 21 est-il encore recommandé ?
Oui, Java 21 reste un choix solide pour une application déjà stable dessus. Pour un nouveau projet lancé en 2026, Java 25 offre toutefois une meilleure marge long terme si la stack est compatible.
LTS veut-il dire gratuit ?
Non. LTS décrit une logique de support long terme, pas un modèle de licence unique. Les conditions dépendent de la distribution choisie, par exemple Oracle JDK, Eclipse Temurin ou une autre distribution OpenJDK.
OpenJDK et Oracle JDK sont-ils identiques ?
Ils sont liés, mais ce n’est pas la même chose. OpenJDK est l’implémentation open source de référence. Oracle JDK est une distribution fournie par Oracle, avec ses propres conditions de licence et de support.
Faut-il migrer de Java 17 à Java 25 ?
Pas dans la panique. Mais si votre application Java 17 doit vivre plusieurs années, la migration vers Java 21 ou Java 25 doit être planifiée. Attendre le dernier moment augmente le risque technique.
Une version Java LTS améliore-t-elle la sobriété numérique ?
Pas automatiquement. Une version récente peut aider à réduire mémoire, CPU ou surprovisionnement selon les workloads, mais il faut mesurer avant/après. La sobriété vient surtout d’une stack maintenable, bien dimensionnée et régulièrement nettoyée.