{"id":2073,"date":"2026-01-21T12:59:40","date_gmt":"2026-01-21T11:59:40","guid":{"rendered":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/?p=2073"},"modified":"2026-02-23T18:12:19","modified_gmt":"2026-02-23T17:12:19","slug":"java-26-whats-new","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-26-quoi-de-neuf\/","title":{"rendered":"Java 26 : Quoi de neuf?"},"content":{"rendered":"<p>Maintenant que Java 26 est features complete (Rampdown Phase Two au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version pour nous, les d\u00e9veloppeurs.<\/p>\n<p>Cet article fait partie d\u2019une suite d\u2019article sur les <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/tag\/whatsnew\/\">nouveaut\u00e9s des derni\u00e8res versions de Java<\/a>, pour ceux qui voudraient les lire en voici les liens : <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-25-quoi-de-neuf\/\">Java 25<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-24-quoi-de-neuf\/\">Java 24<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-23-quoi-de-neuf\/\">Java 23<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-22-quoi-de-neuf\/\">Java 22<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-21-quoi-de-neuf\/\">Java 21<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-20-quoi-de-neuf\/\">Java 20<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-19-quoi-de-neuf\/\">Java 19<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-18-quoi-de-neuf\/\">Java 18<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-17-quoi-de-neuf\/\">Java 17<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-16-quoi-de-neuf\/\">Java 16<\/a>, <a href=\"https:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-15-quoi-de-neuf\/\">Java 15<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-14-quoi-de-neuf\/\">Java 14<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-13-quoi-de-neuf\/\">Java 13<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-12-quoi-de-neuf\/\">Java 12<\/a>, <a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-11-quoi-de-neuf\/\">Java 11<\/a>,\u00a0<a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/java-10-quoi-de-neuf\/\">Java 10<\/a>,\u00a0et\u00a0<a href=\"http:\/\/www.loicmathieu.fr\/wordpress\/informatique\/les-nouveautes-de-java-9-pour-les-developeurs\/\">Java 9<\/a>.<\/p>\n<p>Apr\u00e8s Java 25 et ses 18 JEPs, Java 26 arrive avec un petit nombre de JEPs, 10, avec tr\u00e8s peu de nouvelles fonctionnalit\u00e9s.<\/p>\n<h2>JEP 500: Prepare to Make Final Mean Final<\/h2>\n<p>Un champ final est cens\u00e9 ne jamais \u00eatre modifi\u00e9 apr\u00e8s son initialisation.\nMais h\u00e9las, la r\u00e9flexion profonde (deep reflection) permet de rendre accessible un champ final pour pouvoir ensuite le modifier via la m\u00e9thode <code>Field.setAccessible(true)<\/code>.\nModifier un champ final casse l&rsquo;int\u00e9grit\u00e9 de la JVM car cela contrevient \u00e0 l&rsquo;intention du d\u00e9veloppeur, avec tous les risques de s\u00e9curit\u00e9 que cela peut engendrer.<\/p>\n<p>De plus, certaines optimisations de la JVM ne peuvent s&rsquo;appliquer aux champs finaux tels que le <em>constant folding<\/em> du Just In Time compiler (JIT), une optimisation qui \u00e9value une expression constante une seule fois plut\u00f4t que chaque fois qu&rsquo;elle est utilis\u00e9e.<\/p>\n<p>Les records interdisent d\u00e9j\u00e0 la modification de champs finaux.<\/p>\n<p>La JEP 500 va \u00e9mettre un warning dans les logs de la JVM la premi\u00e8re fois qu&rsquo;un champ final est modifi\u00e9 via r\u00e9flexion profonde.<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nWARNING: Final field f in p.C has been [mutated\/unreflected for mutation] by class com.foo.Bar.caller in module N (file:\/path\/to\/foo.jar)\nWARNING: Use --enable-final-field-mutation=N to avoid a warning\nWARNING: Mutating final fields will be blocked in a future release unless final field mutation is enabled\n<\/pre>\n<p>Cela peut \u00eatre contr\u00f4l\u00e9 via l&rsquo;option JVM <code>--illegal-final-field-mutation<\/code> qui peut prendre les valeurs :<\/p>\n<ul>\n<li><code>allow<\/code> : permet la modification de champs finaux.<\/li>\n<li><code>warn<\/code> : \u00e9met un warning dans les logs de la JVM la premi\u00e8re fois qu&rsquo;un champ final est modifi\u00e9, c&rsquo;est le comportement par d\u00e9faut en Java 26.<\/li>\n<li><code>debug<\/code> : identique \u00e0 <code>warn<\/code> mais va inclure en plus la stack trace.<\/li>\n<li><code>deny<\/code> : interdit la modification de champs finaux.<\/li>\n<\/ul>\n<p>Une future release de Java passera le comportement par d\u00e9faut \u00e0 <code>deny<\/code>.<\/p>\n<p>Il est possible de s\u00e9lectivement autoriser la modification de champs finaux via l&rsquo;option JVM <code>--enable-final-field-mutation=M1,M2<\/code> qui prend en param\u00e8tre la liste des modules \u00e0 autoriser.<\/p>\n<p>Plus d&rsquo;informations dans la \u00a0<a href=\"https:\/\/openjdk.org\/jeps\/500\">JEP 500<\/a>.<\/p>\n<h2>JEP 504: Remove the Applet API<\/h2>\n<p>Supprime l&rsquo;API des applets qui avait \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9e pour suppression en Java 17.<\/p>\n<p>Les navigateurs actuels ne supportent de toute fa\u00e7on plus les applets depuis longtemps.<\/p>\n<p>Plus d&rsquo;informations dans la \u00a0<a href=\"https:\/\/openjdk.org\/jeps\/504\">JEP 504<\/a>.<\/p>\n<h2>JEP 516: Ahead-of-Time Object Caching with Any GC<\/h2>\n<p>La <a href=\"https:\/\/openjdk.org\/jeps\/483\">JEP 483: Ahead-of-Time Class Loading &amp; Linking<\/a> a introduit en Java 24 la possibilit\u00e9 de cr\u00e9er un cache AOT (Ahead of Time \u2013 avant le lancement de l\u2019application) contenant les classes d\u00e9j\u00e0 charg\u00e9es et li\u00e9es d\u2019une application pour am\u00e9liorer son temps de d\u00e9marrage.<\/p>\n<p>Celui-ci a \u00e9t\u00e9 enrichi en Java 25 avec les informations de profiling des m\u00e9thodes via la <a href=\"https:\/\/openjdk.org\/jeps\/515\">JEP 515: Ahead-of-Time Method Profiling<\/a>.<\/p>\n<p>En Java 26, ce cache a \u00e9t\u00e9 am\u00e9lior\u00e9 pour stocker les objets de mani\u00e8re agnostique au GC, permettant un support pour tous les GC, et surtout l&rsquo;utilisation d&rsquo;un cache AOT par une JVM utilisant un GC diff\u00e9rent de celui utilis\u00e9 lors de la cr\u00e9ation du cache.<\/p>\n<p>Plus d&rsquo;informations dans la \u00a0<a href=\"https:\/\/openjdk.org\/jeps\/516\">JEP 516<\/a>.<\/p>\n<h2>JEP 517: HTTP\/3 for the HTTP Client API<\/h2>\n<p>La JEP 517 apporte le support d&rsquo;<strong>HTTP\/3<\/strong> dans le client HTTP du JDK.<\/p>\n<p>Le client HTTP du JDK utilise toujours HTTP\/2 par d\u00e9faut.<\/p>\n<p>Pour utiliser HTTP\/3 il faut s\u00e9lectionner cette version lors de la cr\u00e9ation du client HTTP :<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nvar client = HttpClient.newBuilder()\n               .version(HttpClient.Version.HTTP_3)\n               .build();\n<\/pre>\n<p>Plus d&rsquo;informations dans la \u00a0<a href=\"https:\/\/openjdk.org\/jeps\/517\">JEP 517<\/a>.<\/p>\n<h2>JEP 522: G1 GC: Improve Throughput by Reducing Synchronization<\/h2>\n<p><strong>G1<\/strong> est le garbage collector (GC) par d\u00e9faut, mais il est parfois moins performant que le <strong>ParallelGC<\/strong> car pour r\u00e9aliser une partie de son travail de mani\u00e8re concurrente \u00e0 l&rsquo;application, il n\u00e9cessite de partager les ressources CPU avec les threads applicatifs et de se coordonner avec eux.<\/p>\n<p>La JEP 522 augmente \u00e0 la fois le d\u00e9bit et la latence des applications en r\u00e9duisant la quantit\u00e9 de synchronisation requise entre les threads d&rsquo;application et les threads GC. Plus pr\u00e9cis\u00e9ment la <em>write barrier<\/em> de G1 a \u00e9t\u00e9 modifi\u00e9e pour ne plus synchroniser sur la <em>card table<\/em> via l&rsquo;ajout d&rsquo;une seconde <em>card table<\/em>. Sans trop entrer dans les d\u00e9tails, la <em>write barrier<\/em> est un bout de code appel\u00e9 \u00e0 chaque fois que la r\u00e9f\u00e9rence d&rsquo;un objet est stock\u00e9e dans un champ, permettant \u00e0 G1 de tracer les allocations sans arr\u00eater les threads applicatifs. Enlever cette synchronisation va r\u00e9duire le co\u00fbt de G1 \u00e0 chaque \u00e9criture et donc am\u00e9liorer le d\u00e9bit de l&rsquo;application.<\/p>\n<p>Plus d&rsquo;informations dans la \u00a0<a href=\"https:\/\/openjdk.org\/jeps\/522\">JEP 522<\/a>.<\/p>\n<h2>UUIDv7 support<\/h2>\n<p>La nouvelle m\u00e9thode <code>UUID.ofEpochMillis(long)<\/code> permet de cr\u00e9er un <strong>UUID type 7<\/strong> (UUIDv7) depuis un timestamp Unix Epoch.<\/p>\n<img decoding=\"async\" src=\"\/wordpress\/wp-content\/uploads\/uuidv7.webp\" alt=\"uuidv7\" title=\"\" class=\"alignnone\" \/>\n<p>Les UUIDv7 sont cr\u00e9\u00e9es en attribuant un timestamp Unix en millisecondes dans les 48 bits les plus significatifs, en attribuant la version requise (4 bits) et la variante (2 bits) et en remplissant les 74 bits restants avec des bits al\u00e9atoires.<\/p>\n<p>La caract\u00e9ristique principale des UUIDv7 est qu&rsquo;ils sont monotones (chaque valeur suivante est sup\u00e9rieure \u00e0 la valeur pr\u00e9c\u00e9dente). Cela est d\u00fb au fait que la valeur d&rsquo;horodatage fait partie de l&rsquo;UUID.<\/p>\n<p>Le grand avantage des UUIDv7 est qu&rsquo;ils sont naturellement triables ce qui en fait un bon choix pour des identifiants de base de donn\u00e9es, comblant une des lacunes des UUID de version pr\u00e9c\u00e9dente. Tout en restant sur 128 bits, donc compatible avec les champs de type UUID pr\u00e9c\u00e9dents.<\/p>\n<h2>Les fonctionnalit\u00e9s qui sortent de preview<\/h2>\n<p>Les fonctionnalit\u00e9s suivantes sortent de preview (ou du module incubator) et passent en standard :<\/p>\n<p><strong><em>Aucune !<\/em><\/strong><\/p>\n<p>C&rsquo;est assez rare pour le surligner. Une partie des fonctionnalit\u00e9s qui sont en preview depuis longtemps sont bloqu\u00e9es en attente du projet Valhalla.<\/p>\n<h2>Les fonctionnalit\u00e9s qui restent en preview<\/h2>\n<p>Les fonctionnalit\u00e9s suivantes restent en preview (ou en incubator module) :<\/p>\n<ul><li><a href=\"https:\/\/openjdk.org\/jeps\/524\">JEP 524<\/a> &#8211; <strong>PEM Encodings of Cryptographic Objects<\/strong> : deuxi\u00e8me preview, nouvelle API qui apporte le support du format Privacy-Enhanced Mail (PEM) \u00e0 Java. Quelques changements dans l&rsquo;API mais les classes <code>PEMEncoder<\/code> et <code>PEMDecoder<\/code> proposent toujours la m\u00eame API.<\/li>\n<li><a href=\"https:\/\/openjdk.org\/jeps\/525\">JEP 525<\/a> &#8211; <strong>Structured Concurrency<\/strong> : sixi\u00e8me preview, nouvelle API permettant de simplifier l\u2019\u00e9criture de code multi-thread\u00e9 en permettant de traiter plusieurs t\u00e2ches concurrentes comme une unit\u00e9 de traitement unique. Quelques changements mineurs.<\/li>\n<li><a href=\"https:\/\/openjdk.org\/jeps\/526\">JEP 526<\/a> &#8211; <strong>Lazy Constants<\/strong> : deuxi\u00e8me preview, nouvelle API permettant de cr\u00e9er des constantes, initialis\u00e9es \u00e0 la demande.<\/li>\n<li><a href=\"https:\/\/openjdk.org\/jeps\/529\">JEP 529<\/a> &#8211; <strong>Vector API<\/strong> : onzi\u00e8me incubation, API permettant d\u2019exprimer des calculs vectoriels qui se compilent au moment de l\u2019ex\u00e9cution en instructions vectorielles pour les architectures CPU prises en charge. Aucun changement. Il a \u00e9t\u00e9 act\u00e9 dans la JEP que la Vector API sera en incubation tant que les fonctionnalit\u00e9s du projet Valhalla ne seront pas disponibles en preview. Ce qui \u00e9tait attendu, car la Vector API pourra alors tirer parti des am\u00e9liorations de performance et de repr\u00e9sentation en m\u00e9moire que devrait apporter le projet Valhalla.<\/li>\n<li><a href=\"https:\/\/openjdk.org\/jeps\/530\">JEP 530<\/a> &#8211; <strong>Primitive Types in Patterns, instanceof, and switch<\/strong> : quatri\u00e8me preview, ajoute le support des types primitifs dans les <code>instanceof<\/code> et les <code>switch<\/code>, et enrichit le pattern matching pour supporter des patterns de types primitifs : dans les <code>instanceof<\/code>, dans les cases des <code>switch<\/code>, et dans la d\u00e9construction d\u2019un record. Deux changements : am\u00e9lioration de la d\u00e9finition de l&rsquo;<a href=\"https:\/\/openjdk.org\/jeps\/530#Safety-of-conversions\">exactitude inconditionnelle<\/a> et application de contr\u00f4les de <a href=\"https:\/\/openjdk.org\/jeps\/530#Dominance\">dominance<\/a> plus stricts dans les switch, ce qui peut mener le compilateur \u00e0 rejeter plus de cas qu&rsquo;auparavant.<\/li>\n<\/ul>\n<p>Pour les d\u00e9tails sur celles-ci, vous pouvez vous r\u00e9f\u00e9rer \u00e0 mes articles pr\u00e9c\u00e9dents.<\/p>\n<h2>Divers<\/h2>\n<p>Divers ajouts au JDK :<\/p>\n<ul><li><code>Process.close()<\/code>  : Ferme tous les flux de lecture et d&rsquo;\u00e9criture et attend la fin du processus.  De plus <code>Process<\/code> impl\u00e9mente <code>AutoCloseable<\/code> ce qui fait qu&rsquo;il peut \u00eatre utilis\u00e9 dans un <strong>try-with-resources<\/strong>.<\/li>\n<li><code>String.compareToFoldCase()<\/code> et <code>String.equalsToFoldCase()<\/code> : impl\u00e9mentation d&rsquo;<code>equals<\/code> et <code>compareTo<\/code> qui utilisent le <strong>case folding<\/strong> d&rsquo;Unicode.<\/li>\n<li><code>BigInteger.rootn()<\/code>  et <code>BigInteger.rootnAndRemainder()<\/code> :  Renvoie la racine enti\u00e8re n-i\u00e8me.<\/li>\n<li><code>Duration.MAX<\/code> et <code>Duration.MIN<\/code> : dur\u00e9es maximales et minimales support\u00e9es.<\/li>\n<li><code>Instant.plusSaturating()<\/code>  : Renvoie une copie de cet instant plus la dur\u00e9e sp\u00e9cifi\u00e9e, avec une s\u00e9mantique satur\u00e9e. Si le r\u00e9sultat est avant MIN, renvoie MIN; si le r\u00e9sultat est  apr\u00e8s MAX,  renvoie MAX; sinon, renvoie <code>plus()<\/code>.<\/li>\n<li><code>ThreadLocalRandom.nextGaussian()<\/code> : Renvoie un double choisi de mani\u00e8re pseudo-al\u00e9atoire \u00e0 partir d&rsquo;une distribution gaussienne.<\/li>\n<li><code>Comparator.min(Object, Object)<\/code> et <code>Comparator.max(Object, Object)<\/code>  : retourne le plus petit ou plus grand objet entre les deux objets pass\u00e9s en param\u00e8tre.<\/li>\n<li><code>HttpRequest.BodyHandlers.ofFileChannel()<\/code> : Renvoie un <code>BodyHandler<\/code> depuis un <code>FileChannel<\/code>.<\/li>\n<\/ul>\n<p>La totalit\u00e9 des nouvelles API du JDK 26 peuvent \u00eatre trouv\u00e9es dans <a href=\"https:\/\/javaalmanac.io\/jdk\/26\/apidiff\/25\/\">The Java Version Almanac \u2013 New APIs in Java 26<\/a>.<\/p>\n<h2>Des changements internes, de la performance, et de la s\u00e9curit\u00e9<\/h2>\n<p>Comme toutes les nouvelles versions de Java, OpenJDK 25 contient son lot d&rsquo;optimisations de performance et d&rsquo;am\u00e9liorations de s\u00e9curit\u00e9.<\/p>\n<p>C\u00f4t\u00e9 performance, pas de gros changement, mais pas mal de tous les petits changements. J&rsquo;ai not\u00e9 celui-ci qui am\u00e9liore les performances de <code>ArrayList.addAll()<\/code> en ajoutant un fast-path au cas o\u00f9 la collection est elle-m\u00eame une <code>ArrayList<\/code> qui va copier le tableau sous-jacent, plus d&rsquo;information dans la <a href=\"https:\/\/github.com\/openjdk\/jdk\/pull\/28116\">PR #28116<\/a>.<\/p>\n<p>C\u00f4t\u00e9 s\u00e9curit\u00e9 je n&rsquo;ai riens not\u00e9 pour le moment mais je metterais \u00e0 jour l&rsquo;article si n\u00e9cessaire.<\/p>\n<h2>JFR Events<\/h2>\n<p>Voici les nouveaux \u00e9v\u00e9nements Java Flight Recorder (JFR) de la JVM :<\/p>\n<ul><li><code>StringDeduplication<\/code> : pas de description.<\/li>\n<li><code>FinalFieldMutation<\/code> : pas de description.<\/li>\n<\/ul>\n<p>Vous pouvez retrouver tous les \u00e9v\u00e9nements JFR support\u00e9s dans cette version de Java sur la page <a href=\"https:\/\/sap.github.io\/jfrevents\/26.html\">JFR Events<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>On reste clairement sur sa faim; cette release apporte tr\u00e8s peu de nouvelles fonctionnalit\u00e9s et la plupart des fonctionnalit\u00e9s d\u00e9j\u00e0 en preview ou incubator module le restent.\nOn peut quand m\u00eame noter le support de HTTP\/3 et UUIDv7 qui sont les bienvenues pour le d\u00e9veloppement d&rsquo;applications modernes.<\/p>\n<p>Comme toujours, on se languit du projet Valhalla&#8230; bien que de <a href=\"https:\/\/www.youtube.com\/watch?v=1lYsDMOc7hM\">nouvelles rumeurs<\/a> sont sorties et pr\u00e9disent une inclusion dans Java 28 des premi\u00e8res fonctionnalit\u00e9s li\u00e9e au project Valhalla qui sont les <a href=\"https:\/\/openjdk.org\/jeps\/401\">Value Classes and Objects<\/a> !<\/p>\n<p>Pour retrouver tous les changements de Java 26, voir les <a href=\"https:\/\/jdk.java.net\/26\/release-notes\">release notes<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Maintenant que Java 26 est features complete (Rampdown Phase Two au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version pour nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui voudraient les lire en voici les liens : Java 25, Java 24, Java 23, Java 22, Java 21, Java 20, Java 19, Java 18, Java 17, Java 16, Java 15,&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-26-quoi-de-neuf\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[11,232,163],"class_list":["post-2073","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-java","tag-java26","tag-whatsnew"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":829,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-11-quoi-de-neuf\/","url_meta":{"origin":2073,"position":0},"title":"Java 11  : quoi de neuf ?","author":"admin","date":"lundi  1 octobre 2018","format":false,"excerpt":"Maintenant que Java 11 est sorti, c'est le moment de faire le tour des fonctionnalit\u00e9s qu'apporte cette version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res version de Java, pour ceux qui voudraient les lires en voici les liens : Java 10,\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":712,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/demarrage-jvm-8-vs-9\/","url_meta":{"origin":2073,"position":1},"title":"D\u00e9marrage JVM 8 vs 9","author":"admin","date":"jeudi 31 ao\u00fbt 2017","format":false,"excerpt":"Introduction En parcourant la mailing liste d'open JDK (core-lib-dev) j'ai vu plusieurs threads de mail \u00e0 propos d'optimisation de temps de d\u00e9marrage et d'occupation m\u00e9moire d'une JVM \"minimale\". Ce travail a \u00e9t\u00e9 r\u00e9alis\u00e9 en grande partie par Claes Redestad (Oracle) lors du d\u00e9veloppement de Java 9. J'ai donc d\u00e9cid\u00e9 de\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":722,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-10-quoi-de-neuf\/","url_meta":{"origin":2073,"position":2},"title":"Java 10 : quoi de neuf ?","author":"admin","date":"lundi 26 mars 2018","format":false,"excerpt":"Maintenant que Java 10 est sorti, il est temps de se pencher sur les nouveaut\u00e9s de cette version. Comme pour mon pr\u00e9c\u00e9dent article sur java 9, je vais me pencher principalement sur les changements qui impacterons les d\u00e9veloppeurs utilisant Java en laissant de c\u00f4t\u00e9 les changements internes\/anecdotique\/sur des API peu\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":856,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-next\/","url_meta":{"origin":2073,"position":3},"title":"Java.Next","author":"admin","date":"mercredi 31 octobre 2018","format":false,"excerpt":"Ma premi\u00e8re contribution au blog de Zenika est un article qui parle du futur (ou du pr\u00e9sent) de Java et des changements pour les d\u00e9veloppeurs dans les versions 9, 10 et 11. La gouvernance de Java y est aussi abord\u00e9. Cet article reprend et r\u00e9sume les articles que j'ai pr\u00e9c\u00e9demment\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1375,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-18-quoi-de-neuf\/","url_meta":{"origin":2073,"position":4},"title":"Java 18 : quoi de neuf ?","author":"admin","date":"mardi  4 janvier 2022","format":false,"excerpt":"Maintenant que Java 18 est features complete (Rampdown Phase One au jour d\u2019\u00e9criture de l\u2019article), c\u2019est le moment de faire le tour des fonctionnalit\u00e9s qu\u2019apporte cette nouvelle version, \u00e0 nous, les d\u00e9veloppeurs. Cet article fait partie d\u2019une suite d\u2019article sur les nouveaut\u00e9s des derni\u00e8res versions de Java, pour ceux qui\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1839,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/java-vers-une-integrite-par-defaut-de-la-jvm\/","url_meta":{"origin":2073,"position":5},"title":"Java : vers une int\u00e9grit\u00e9 par d\u00e9faut de la JVM","author":"admin","date":"mardi  4 f\u00e9vrier 2025","format":false,"excerpt":"Cet article est paru pour la premi\u00e8re fois dans le magazine Programmez! Hors s\u00e9rie #16. La Machine Virtuelle Java (JVM) est un environnement d'ex\u00e9cution qui permet \u00e0 des programmes \u00e9crits en Java (ou dans d'autres langages compil\u00e9s en bytecode Java) de s'ex\u00e9cuter sur diff\u00e9rents syst\u00e8mes d'exploitation et architectures mat\u00e9rielles. D\u00e8s\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=2073"}],"version-history":[{"count":25,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2073\/revisions"}],"predecessor-version":[{"id":2134,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/2073\/revisions\/2134"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=2073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=2073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=2073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}