

Dev
Oracle lance Java 25, une version LTS pour l’ère de l’IA, qui allie modernité et continuité
Par Laurent Delattre, publié le 17 septembre 2025
Avec 18 JEPs, des avancées en observabilité et une feuille de route post-quantique, Java 25 consolide sa position de langage d’entreprise incontournable pour l’ère numérique. Le langage se réinvente pour s’adapter à l’ère de l’IA et aux nouvelles pratiques de développement.
Oracle a officiellement lancé Java 25, une version majeure de sa plateforme qui vise à maintenir l’ancrage de Java dans les réalités de l’entreprise moderne : l’intelligence artificielle, la sécurité notamment post-quantique, le besoin constant de performances dans le Cloud comme à l’Edge, la séduction des talents…
Cette nouvelle mouture, estampillée Long-Term Support (LTS), s’accompagne de 18 améliorations notables (JEPs) et de milliers d’autres optimisations mineures visant à la fois à solidifier la position de Java et à séduire une nouvelle génération de développeurs.
Une renaissance pour un pilier de l’entreprise
Malgré ses trente ans d’existence, Java demeure un colosse technologique. Reconnu comme le premier langage utilisé en entreprise, il fait tourner plus de 73 milliards de machines virtuelles (JVM) actives dans le monde. Il est aussi reconnu comme le langage de prédilection pour les déploiements « cloud natifs » et 51 milliards de JVM s’exécutent dans le Cloud.
Autre signe d’une base installée massive, active et durable dans l’entreprise, les baromètres de popularité situent encore Java dans le quatuor de tête mondial (TIOBE : 4e en septembre 2025).
Au‑delà des classements, les études « State of Java » confirment la présence très élevée de Java dans les applications métiers et la préférence des équipes pour des versions LTS récentes (17/21), à côté d’un socle historique toujours en production.
Mais, sa réputation de verbosité, ses temps de démarrage, son empreinte mémoire et sa concurrence avec des langages plus modernes (Go, Rust, Python, JavaScript/TypeScript, etc.) l’obligent aujourd’hui à une évolution constante. C’est dans ce contexte qu’intervient cette nouvelle version « Java 25 ». « Nous assistons véritablement à ce que nous appelons une renaissance continue de la plateforme Java », a déclaré Chad Arimura, VP des relations développeurs Java, lors de la conférence de presse. Cette dynamique est largement attribuée au rythme de sortie semestriel qui permet d’intégrer l’innovation de manière continue.
L’importance capitale d’une version LTS
Reste que pour les DSI, dans un monde qui voit la plateforme évoluer tous les 6 mois, la principale annonce est que Java 25 est bien plus qu’une mise à jour : c’est la nouvelle version Long-Term Support (LTS). Oracle s’engage à fournir un support étendu d’au moins huit ans, offrant ainsi la stabilité et la prévisibilité indispensables aux environnements de production critiques. Oracle prévoit des mises à jour trimestrielles de sécurité/performance jusqu’en septembre 2028 sous licence NFTC (No‑Fee Terms & Conditions), puis des mises à jour sous OTN au moins jusqu’en septembre 2033 (cf plus loin).
La précédente version LTS était Java 21 sortie en 2023. Au passage, Oracle confirme que désormais une cadence de deux ans sera adoptée pour chaque LTS, contre trois auparavant. Une mise à jour tous les 6 mois, une version LTS tous les 2 ans, Oracle estime avoir ainsi trouvé le juste équilibre entre l’accès aux innovations et la pérennité des applications. « Cela donne aux entreprises la possibilité de choisir si elles veulent suivre le rythme des versions ou opter pour une version LTS et bénéficier d’un support à long terme », explique Chad Arimura.

La feuille de route de Java est pilotée par de grands projets structurants et à long terme, comme Loom (threads virtuels et concurrence structurée pour simplifier et améliorer la gestion du parallélisme), Leyden (vise à réduire le temps de démarrage et l’empreinte mémoire des applications Java grâce à la compilation Ahead-of-Time), Valhalla (nouveaux types de valeur et amélioration de la représentation des données en mémoire pour des performances accrues), Panama (facilite l’interopérabilité entre Java et les bibliothèques natives via l’API des fonctions étrangères et de la mémoire), et Babylon (étend Java pour mieux supporter des modèles de programmation externes comme SQL, le machine learning ou l’utilisation de GPU).

La force de Java reste sa capacité à évoluer sans sacrifier la compatibilité : « Vous pouvez souvent exécuter aujourd’hui un programme Java écrit il y a 25 ans » rappelle Chad Arimura.
Pour imposer cette version 25 comme la nouvelle référence du développement en entreprise, Oracle a veillé à y ancrer des avancées techniques significatives.
Un gros focus sur les performances et l’observabilité
Avec Java 25, la performance n’est pas un slogan mais une réalité mesurable. Les travaux issus du projet Leyden se concrétisent par des mécanismes d’optimisation anticipée (Ahead-of-Time) qui réduisent drastiquement les temps de démarrage, un atout décisif pour les architectures microservices et serverless. Des tests sur le framework Helidon ont montré une amélioration des performances allant jusqu’à 74 % en passant de Java 21 à 25, et ce, sans aucune modification du code.
À cela s’ajoutent des efforts pour réduire l’empreinte mémoire du framework avec d’astucieuses trouvailles, comme la compaction des en-têtes d’objets (JEP 519). Ces améliorations ne se contentent pas de diminuer la consommation mémoire des programmes Java, elles améliorent la densité des conteneurs et, par conséquent, ont un impact direct sur la facture cloud permettant de la diminuer sensiblement. Dans un même ordre d’idées, on retiendra l’introduction d’un Shenandoah générationnel qui optimise la gestion des tas très dynamiques, renforçant la stabilité des applications à forte charge.
Il est un autre domaine où Java 25 s’améliore singulièrement. Les systèmes actuels reposent sur des microservices, des conteneurs et des environnements élastiques. Ces architectures augmentent la complexité du SI, multiplient les points de défaillance et rendent le diagnostic complexe. Parallèlement, les réglementations (DORA, NIS2, ISO 27001) exigent une traçabilité accrue et des capacités d’audit avancées. C’est pourquoi Java 25 améliore l’observabilité des applications. Le JDK Flight Recorder (JFR) s’enrichit de nouvelles capacités de profilage et de traçage (profilage CPU, traçage des méthodes, échantillonnage coopératif, etc.), offrant une visibilité fine sur les performances en production sans recourir à des outils tiers coûteux. Dans un contexte où chaque milliseconde et chaque Mo comptent, comprendre le comportement des applications est essentiel pour ajuster la taille des instances, réduire la consommation mémoire et éviter le surprovisionnement. Les métriques fines offertes par Java 25 aident à dimensionner correctement les ressources et à justifier les choix d’optimisation auprès des directions financières. Ces nouvelles métriques permettent d’identifier les anomalies en production avec un overhead minimal, sans redémarrage ni instrumentation lourde.
IA et calcul intensif : une plateforme prête pour l’ère agentique
Java 25 ne se contente pas d’accompagner la vague IA en entreprise, le framework compte bien lui donner des fondations solides. D’abord, l’écosystème outille la génération de code via des assistants comme Oracle Code Assist ou Cursor, intégrés à VS Code. Ensuite, il facilite l’intégration des modèles dans les applications métiers grâce à des frameworks tels que LangChain4j ou Spring AI, qui permettent d’orchestrer des LLM depuis des services Java existants. Enfin, il prépare le terrain pour le déploiement et l’entraînement de modèles en Java, en s’appuyant sur des projets structurants comme Panama, Valhalla et Babylon, conçus pour optimiser l’accès mémoire, la vectorisation et l’interopérabilité avec des accélérateurs (GPU).

L’API Vector (JEP 508), désormais à un stade avancé, permet d’exploiter la vectorisation pour accélérer les calculs numériques, un atout pour l’inférence et le traitement de données massives.
La concurrence structurée (JEP 505) et les valeurs à portée limitée (JEP 506) simplifient la gestion des tâches parallèles et le partage de données immuables, deux besoins critiques dans les pipelines d’IA et les architectures distribuées.
Enfin, la prise en charge des types primitifs dans le pattern matching (JEP 507) et les optimisations AOT issues de Leyden contribuent à réduire la latence et à améliorer la prévisibilité des performances, ce qui est essentiel pour les systèmes temps réel ou les microservices intégrants des modèles.
Ces évolutions, combinées aux efforts des projets Panama et Babylon, positionnent désormais Java comme une option crédible pour intégrer des modèles d’IA dans des applications métiers sans sacrifier la robustesse ni la sécurité. Pour rappel, Panama facilite l’appel de bibliothèques natives (souvent écrites en C/C++) et l’accès à la mémoire hors heap, ce qui simplifie l’intégration avec des frameworks IA existants. Babylon vise l’interopérabilité avec des modèles de programmation étrangers (CUDA, Triton), ouvrant la voie à l’utilisation des GPU sans quitter l’écosystème Java.
Cybersécurité : anticiper sans rompre
La sécurité reste un axe stratégique, et Java 25 prend une longueur d’avance en préparant le terrain pour l’ère post-quantique (PQC). « L’IA, c’est tellement dépassé. Tout le monde nous interroge sur la cryptographie post-quantique », a ironisé Donald Smith, VP de la gestion des produits Java pour mieux attirer l’attention sur les efforts cyber et PQC. L’API de dérivation de clés (JEP 510), désormais finalisée, constitue une brique essentielle pour les schémas hybrides et les futures normes cryptographiques. En parallèle, la prise en charge des encodages PEM (JEP 470) simplifie l’intégration avec des systèmes d’authentification modernes. Derrière ces innovations se cache la volonté de permettre au développeur d’implémenter d’ores et déjà des sécurités PQC avec l’assurance que les codes sources Java n’auront pas à être modifiés une fois les normes et algorithmes PQC finalisés. Oracle a confirmé son intention d’intégrer les algorithmes officiels résistants au quantique dès que les standards IETF seront stabilisés, puis les backporter vers les versions LTS en fonction des besoins. Cette stratégie garantit aux entreprises une transition maîtrisée, sans rupture pour les applications existantes.
Moderniser sans rompre : un enjeu de transmission
Un effort particulier a été fait pour rendre Java plus accessible. Java 25 franchit une étape importante dans la simplification du code. L’introduction des fichiers sources compacts et des méthodes main d’instance permet désormais d’écrire un programme fonctionnel en quelques lignes, sans la lourdeur des déclarations historiques. Cette évolution, pensée pour « paver la rampe d’accès », vise à rendre le langage plus accueillant pour les nouveaux venus tout en restant cohérent avec les pratiques existantes.

Dans le même esprit, les déclarations d’importation de modules facilitent la réutilisation des bibliothèques modulaires, tandis que la prise en charge des types primitifs dans le pattern matching complète un chantier entamé depuis plusieurs versions. Enfin, la flexibilité accrue des constructeurs renforce la robustesse du code en autorisant des validations avant l’appel à la superclasse. Ces ajustements ne bouleversent pas l’écosystème, mais ils réduisent la verbosité et améliorent la lisibilité, deux points souvent reprochés à Java.
L’impact organisationnel pour les DSI
L’arrivée de Java 25 et des simplifications linguistiques évoqués ci-dessus entraîne des conséquences directes sur la gestion des compétences et la dynamique des équipes. La simplification syntaxique et l’introduction de concepts plus expressifs séduiront les jeunes développeurs, habitués à des langages concis comme Kotlin ou Python. Cette évolution facilite l’onboarding et réduit la barrière d’entrée, mais elle impose aussi un effort d’acculturation pour les équipes expérimentées, qui devront intégrer ces nouvelles pratiques sans renoncer à leurs acquis.
Pour les DSI, le défi est double : maintenir la cohérence des standards internes tout en encourageant l’adoption des idiomes modernes. Cela suppose de mettre en place des formations ciblées, de favoriser le mentorat inversé – où les juniors partagent leurs réflexes avec les seniors – et de renforcer les revues de code pour éviter une fragmentation stylistique. À terme, cette modernisation peut devenir un levier d’attractivité et de rétention des talents, à condition d’accompagner la transition par une gouvernance claire et des outils adaptés (analyse statique, guidelines, CI/CD intégrant les nouvelles fonctionnalités).
L’éternelle question des licences
La question des licences Java repose sur un équilibre entre l’accès libre au langage et la gestion commerciale de certaines de ses distributions. Le langage Java et sa spécification sont ouverts, et l’implémentation de référence, OpenJDK, est publiée sous licence libre, ce qui permet à tout développeur, qu’il soit indépendant ou en entreprise, de l’utiliser gratuitement, y compris pour un usage commercial.
Cependant, la version Oracle JDK, longtemps utilisée comme standard de facto, a changé de modèle en 2019 : si elle reste gratuite pour le développement et les tests, son utilisation en production par les entreprises nécessite désormais un abonnement payant (par utilisateur) donnant accès aux mises à jour de sécurité et au support technique. Cette évolution a poussé de nombreuses organisations à se tourner vers des distributions alternatives d’OpenJDK, gratuites ou assorties de contrats de support proposés par d’autres fournisseurs.
La problématique réside donc dans le choix entre payer pour la tranquillité d’esprit et le support officiel d’Oracle (via l’abonnement Oracle Java SE), ou opter pour une distribution libre en assumant la responsabilité de la maintenance et des mises à jour.
On rappellera que l’abonnement Oracle Java SE procure les droits d’utilisation d’Oracle JDK en production, un ensemble d’outils complémentaires (incluant GraalVM, Enterprise Performance Pack, Java Management Service…), des mises à jour de sécurité pendant toute la durée du contrat et un support technique officiel.
On le voit, Java, fort de cette version 25, reste un pilier pour bâtir des systèmes critiques. Loin d’être une simple mise à jour incrémentale, Java 25 s’affirme aussi comme une réponse stratégique aux bouleversements du développement logiciel. Dans un contexte où les plateformes de suggestion de code, d’analyse automatique et d’automatisation des tâches techniques s’imposent dans l’outillage quotidien, la clarté et la robustesse du socle Java prennent une nouvelle dimension stratégique. Là où la tentation du « no-code » et des assistants IA pourrait reléguer la maîtrise profonde des langages au second plan, Java 25 rappelle la valeur d’un écosystème mature, pérenne et capable de s’adapter sans renier ses fondements. Une bulle de stabilité ouverte à l’innovation dans un monde en pleine ébullition…
Les 18 « JEP » intégrés à Java 25
Catégorie 94181_55d8b8-49> |
JEP 94181_b4f4ee-33> |
Titre 94181_262618-a7> |
Description 94181_5d9548-cb> |
Langage 94181_8ca5ae-0a> |
507 94181_3e7f34-b5> |
Primitive Types in Patterns, instanceof, and switch (Third Preview) 94181_cabdf5-8d> |
Améliore le filtrage par motif pour inclure les types primitifs, simplifiant ainsi de nombreuses opérations de validation et de traitement de données. 94181_b54509-74> |
94181_b88764-c8> |
511 94181_33e681-66> |
Module Import Declarations 94181_592db9-3f> |
Simplifie la réutilisation des modules en permettant d’importer l’ensemble de leurs packages exportés avec une seule déclaration. 94181_dbfeef-71> |
94181_4dae47-77> |
512 94181_5ec24d-37> |
Compact Source Files and Instance Main Methods 94181_c13926-b0> |
Rend le langage plus accessible aux débutants en assouplissant la syntaxe requise pour écrire des programmes simples. 94181_b27bfe-0e> |
94181_d7343d-7d> |
513 94181_1de801-74> |
Flexible Constructor Bodies 94181_47c53e-26> |
Offre plus de flexibilité dans l’ordre d’initialisation des champs au sein des constructeurs, renforçant la sécurité du code. 94181_302398-75> |
Performance et Runtime 94181_fe4363-6e> |
505 94181_880652-fa> |
Structured Concurrency (Fifth Preview) 94181_c81d1f-7b> |
Facilite la programmation concurrente en traitant des groupes de tâches exécutées dans des threads différents comme une seule unité de travail. 94181_c845f2-da> |
94181_324d74-44> |
506 94181_bb7d46-d6> |
Scoped Values 94181_3c9722-f7> |
Permet un partage efficace de données immuables au sein d’un même thread ou entre plusieurs threads. 94181_26d3db-ee> |
94181_3e4911-0d> |
509 94181_cc0c02-22> |
JFR CPU-Time Profiling (Experimental) 94181_49362e-d4> |
Introduit une nouvelle méthode de profilage du temps CPU dans le JDK Flight Recorder pour une analyse de performance plus fine. 94181_3a1113-37> |
94181_5c29c8-92> |
514 94181_a788cf-34> |
Ahead-of-Time Command-Line Ergonomics 94181_cf6429-2a> |
Améliore l’ergonomie de la ligne de commande pour la compilation anticipée (AOT) dans le cadre du projet Leyden. 94181_311021-d4> |
94181_8ed6b3-77> |
515 94181_95d100-0a> |
Ahead-of-Time Method Profiling 94181_b82928-80> |
Permet d’utiliser les données du JDK Flight Recorder pour guider la compilation anticipée et ainsi optimiser les performances. 94181_3b50f1-db> |
94181_d717dc-50> |
518 94181_f88604-29> |
JFR Cooperative Sampling 94181_e8ed41-01> |
Ajoute un mécanisme d’échantillonnage coopératif au JFR pour un suivi à faible surcoût des applications. 94181_0f5365-f4> |
94181_fb8cef-d8> |
519 94181_19e494-f9> |
Compact Object Headers 94181_e9df46-2d> |
Réduit l’empreinte mémoire des applications en diminuant la taille de l’en-tête des objets Java. 94181_50dd34-6e> |
94181_a7f4cc-13> |
520 94181_da594c-a4> |
JFR Method Timing & Tracing 94181_382ee5-8e> |
Améliore le JFR avec de nouveaux événements pour mesurer et tracer précisément le temps d’exécution des méthodes. 94181_4ad307-d0> |
94181_5e6498-ec> |
521 94181_435bbc-4c> |
Generational Shenandoah 94181_f77de7-4d> |
Introduit un mode générationnel au ramasse-miettes Shenandoah pour améliorer ses performances globales. 94181_4974d6-70> |
Bibliothèques 94181_47487e-d9> |
502 94181_dd667e-c2> |
Stable Values (Preview) 94181_998d6c-a4> |
Propose une nouvelle API pour créer des collections d’objets immuables et optimisées en mémoire. 94181_797223-de> |
94181_d6d9e2-9a> |
508 94181_d78ec8-aa> |
Vector API (Tenth Incubator) 94181_844a26-c7> |
Continue le développement d’une API pour les calculs vectoriels complexes, essentiels pour l’IA et le machine learning. 94181_328f24-64> |
Sécurité 94181_673dbe-39> |
470 94181_a2900d-de> |
PEM Encodings of Cryptographic Objects (Preview) 94181_a959be-4a> |
Standardise l’encodage et le décodage des objets cryptographiques au format PEM pour une meilleure interopérabilité. 94181_fdb13e-0e> |
94181_05bb8e-6e> |
510 94181_1b0f2c-b4> |
Key Derivation Function API 94181_188d66-51> |
Fournit une API pour les fonctions de dérivation de clés, un élément fondamental pour les protocoles cryptographiques modernes et post-quantiques. 94181_3813f8-8a> |
Maintenance 94181_04b59b-50> |
503 94181_c8ec95-9d> |
Remove the 32-bit x86 Port 94181_e8d4c2-a4> |
Supprime le portage 32-bit pour x86, qui n’est plus maintenu, afin de simplifier le développement futur du JDK. 94181_db3a4c-9d> |
À LIRE AUSSI :
