{"id":742980,"date":"2026-10-01T16:08:33","date_gmt":"2026-10-01T15:08:33","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=idea&#038;p=742980"},"modified":"2026-10-01T16:09:43","modified_gmt":"2026-10-01T15:09:43","slug":"java-27-dans-intellij-idea","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/fr\/idea\/2026\/10\/java-27-dans-intellij-idea\/","title":{"rendered":"Java\u00a027 dans IntelliJ IDEA"},"content":{"rendered":"<p>Conform\u00e9ment \u00e0 son cycle de publication semestriel, Java\u00a027 est sorti le 15\u00a0septembre 2026. Dans cet article, nous allons voir ce que contient cette version, comment IntelliJ IDEA continue de prendre en charge les derni\u00e8res versions de Java, et m\u00eame comment IntelliJ IDEA tire parti de certains des changements apport\u00e9s au JDK.<\/p>\n<p>Java\u00a027 apporte neuf JEP, dont quatre sont finalis\u00e9es. En compl\u00e9ment, quatre fonctionnalit\u00e9s en pr\u00e9version continuent leur maturation et une JEP demeure au stade d&#8217;incubation.<\/p>\n<p>M\u00eame si vous n&#8217;utilisez pas IntelliJ IDEA, vous pouvez profiter de son intelligence ailleurs\u00a0: <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/08\/intellij-idea-goes-lsp\/\"><em>L&#8217;extension LSP d&#8217;IntelliJ IDEA : l&#8217;intelligence de code Java et Kotlin arrive dans VS Code, Cursor et les workflows agentiques<\/em><\/a>. Cela fournit le m\u00eame niveau de prise en charge des derni\u00e8res versions et fonctionnalit\u00e9s de Java, y compris pour les versions en acc\u00e8s anticip\u00e9 et les fonctionnalit\u00e9s en pr\u00e9version.<\/p>\n<p>Dans cet article, nous allons commencer par configurer IntelliJ IDEA afin d&#8217;utiliser la derni\u00e8re version de Java.<\/p>\n<h1 class=\"wp-block-heading\">Utilisation de Java\u00a027 dans IntelliJ IDEA (configuration)\u00a0<\/h1>\n<p>Vous devrez d&#8217;abord t\u00e9l\u00e9charger le JDK\u00a027. Vous avez plusieurs fa\u00e7ons de faire\u00a0: vous pouvez le t\u00e9l\u00e9charger depuis IntelliJ IDEA, \u00e0 l&#8217;aide d&#8217;outils comme <a href=\"https:\/\/sdkman.io\/\" target=\"_blank\" rel=\"noopener\">SDKMAN!<\/a> ou <a href=\"https:\/\/asdf-vm.com\/\" target=\"_blank\" rel=\"noopener\">asdf<\/a>, ou l&#8217;installer vous-m\u00eame.<\/p>\n<h2 class=\"wp-block-heading\">T\u00e9l\u00e9chargement du JDK<\/h2>\n<p>Pour t\u00e9l\u00e9charger le JDK\u00a027 depuis IntelliJ IDEA, ouvrez <em>Project Structure, <\/em>allez dans l&#8217;onglet <em>Project Settings | Project<\/em>, ouvrez le menu d\u00e9roulant du champ <em>SDK<\/em> et s\u00e9lectionnez <em>Download JDK<\/em>. Dans la fen\u00eatre <em>Download JDK<\/em> qui s&#8217;ouvre, d\u00e9finissez <em>Version<\/em> sur <em>27<\/em>, puis, dans le champ <em>Vendor<\/em>, s\u00e9lectionnez le fournisseur que vous souhaitez utiliser.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-739938\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/image-54.png\" alt=\"\" width=\"2048\" height=\"541\" \/><figcaption class=\"wp-element-caption\"><em>Download JDK<\/em><\/figcaption><\/figure>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-740140\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/Download-JDK-Select-vendor.png\" alt=\"\" width=\"2416\" height=\"1194\" \/><\/p>\n<figcaption class=\"wp-element-caption\"><em>Download JDK \u2013 Select vendor<\/em><\/figcaption>\n<\/figure>\n<p>Si vous avez d\u00e9j\u00e0 install\u00e9 le JDK, vous pouvez indiquer \u00e0 IntelliJ IDEA o\u00f9 se trouve votre installation. S\u00e9lectionnez plut\u00f4t <em>Add JDK from Disk<\/em> dans le menu d\u00e9roulant.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-739961\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/image-56.png\" alt=\"\" width=\"2048\" height=\"541\" \/><\/p>\n<figcaption class=\"wp-element-caption\"><em>Add JDK from disk<\/em><\/figcaption>\n<\/figure>\n<p>La version du JDK sera automatiquement propag\u00e9e depuis les param\u00e8tres de votre projet vers le terminal, ce qui signifie que vous-m\u00eame et votre agent pourrez utiliser le bon JDK pour votre projet dans le terminal d&#8217;IntelliJ IDEA. Cette fonctionnalit\u00e9 a fait l&#8217;objet d&#8217;une d\u00e9monstration dans la vid\u00e9o <a href=\"https:\/\/youtu.be\/1wzW-gM9OZE?si=6xpVuzD2xdXifvef&amp;t=555\" target=\"_blank\" rel=\"noopener\">Nouveaut\u00e9s d&#8217;IntelliJ IDEA\u00a02026.2<\/a>.<\/p>\n<p>Si vous utilisez <a href=\"https:\/\/sdkman.io\/\" target=\"_blank\" rel=\"noopener\">SDKMAN!<\/a> ou <a href=\"https:\/\/asdf-vm.com\/\" target=\"_blank\" rel=\"noopener\">asdf<\/a> pour g\u00e9rer vos JDK, IntelliJ IDEA peut lire le fichier <code>.sdkmanrc<\/code> ou <code>.tool-versions<\/code> dans votre projet et configurer le JDK automatiquement si vous l&#8217;avez d\u00e9j\u00e0 install\u00e9.<\/p>\n<p>Si vous utilisez SDKMAN! et que la version du JDK sp\u00e9cifi\u00e9e dans le fichier <code>.sdkmanrc<\/code> n&#8217;est pas encore install\u00e9e, une indication en ligne appara\u00eetra dans le fichier pour vous permettre de la t\u00e9l\u00e9charger directement depuis l&#8217;IDE en ex\u00e9cutant la commande SDKMAN! correspondante. correspondante. Cela fonctionne m\u00eame si SDKMAN! n&#8217;est pas install\u00e9, ce qui signifie que cette fonctionnalit\u00e9 est \u00e9galement disponible pour les utilisateurs de Windows.<\/p>\n<p>Pour en savoir plus sur la configuration du JDK, consultez la <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/sdk.html#set-up-jdk\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Configuration du niveau de langage<\/h2>\n<p>IntelliJ IDEA prend en charge Java\u00a027 d\u00e8s sa sortie. Dans <em>Project Structure<\/em>, configurez <em>Language level<\/em> sur <em>27 \u2013 No new language features<\/em>.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-739983\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/image-58.png\" alt=\"\" width=\"1808\" height=\"718\" \/><\/p>\n<figcaption class=\"wp-element-caption\"><em>27 \u2013 No new language features<\/em><\/figcaption>\n<\/figure>\n<p>Si vous utilisez des fonctionnalit\u00e9s en pr\u00e9version, choisissez <em>27 (Preview) \u2013 Primitive types in patterns, instanceof, and switch (5th preview).<\/em> Notez qu&#8217;IntelliJ IDEA met en \u00e9vidence l&#8217;utilisation des fonctionnalit\u00e9s en pr\u00e9version dans l&#8217;\u00e9diteur, afin que vous sachiez exactement o\u00f9 vous les utilisez.<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-739994\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/image-59.png\" alt=\"\" width=\"1808\" height=\"718\" \/><\/p>\n<figcaption class=\"wp-element-caption\"><em>27 (Preview) \u2013 Primitive types in patterns, instanceof, and switch (5th preview)<\/em><\/figcaption>\n<\/figure>\n<h1 class=\"wp-block-heading\">Nouvelles fonctionnalit\u00e9s stables de Java\u00a027<\/h1>\n<p>Java\u00a027 inaugure 4\u00a0nouvelles fonctionnalit\u00e9s stables. Jetons un coup d&#8217;\u0153il.<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/523\" target=\"_blank\" rel=\"noopener\">JEP\u00a0523\u00a0: Faire de G1 le ramasse-miettes par d\u00e9faut dans tous les environnements<\/a><\/h2>\n<p>Garbage-First (G1) est le ramasse-miettes par d\u00e9faut depuis Java\u00a09, \u00e0 une exception pr\u00e8s\u00a0: les machines disposant d&#8217;un seul CPU ou de moins de 1\u00a0792\u00a0Mo de RAM basculaient sur Serial GC. Cette JEP fait de G1 le ramasse-miettes par d\u00e9faut de la JVM HotSpot dans tous les environnements, et non plus uniquement dans les environnements serveur, en remplacement du garbage collector Serial.<\/p>\n<p>Le ramasse-miettes\u00a0G1 a b\u00e9n\u00e9fici\u00e9 d&#8217;am\u00e9liorations (notamment <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-522-g1-gc-improve-throughput-by-reducing-synchronization\">JEP\u00a0522\u00a0: Ramasse-miettes\u00a0G1\u00a0: am\u00e9liorer le d\u00e9bit en r\u00e9duisant la synchronisation dans Java\u00a026<\/a>), si bien que ses performances sont d\u00e9sormais suffisantes pour remplacer Serial. Pour les applications ex\u00e9cut\u00e9es dans des environnements aux ressources limit\u00e9es, qui offrent de meilleures performances avec Serial, celui-ci peut \u00eatre activ\u00e9 explicitement \u00e0 l\u2019aide de l\u2019option -XX:+UseSerialGC.<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/527\" target=\"_blank\" rel=\"noopener\">JEP\u00a0527\u00a0: \u00c9change hybride post-quantique de cl\u00e9s pour TLS\u00a01.3<\/a><\/h2>\n<p>Cette JEP renforce la s\u00e9curit\u00e9 des applications Java n\u00e9cessitant des communications r\u00e9seau s\u00e9curis\u00e9es en impl\u00e9mentant des algorithmes d&#8217;\u00e9change de cl\u00e9s hybrides pour TLS\u00a01.3. Cela permet de se pr\u00e9munir contre les attaques de type \u00ab\u00a0harvest now, decrypt later\u00a0\u00bb (collecter maintenant, d\u00e9chiffrer plus tard), lors desquelles un attaquant enregistre aujourd\u2019hui du trafic chiffr\u00e9 dans le but de le d\u00e9chiffrer une fois que les ordinateurs quantiques seront suffisamment puissants.<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/534\" target=\"_blank\" rel=\"noopener\">JEP\u00a0534\u00a0: En-t\u00eates d&#8217;objets compacts par d\u00e9faut<\/a><\/h2>\n<p>Cette JEP fait des en-t\u00eates d&#8217;objets compacts la disposition par d\u00e9faut des en-t\u00eates d&#8217;objets dans la JVM HotSpot.<\/p>\n<p>En r\u00e9duisant la taille des en-t\u00eates d&#8217;objet de 96 \u00e0 64\u00a0bits sur les architectures 64\u00a0bits, les en-t\u00eates d&#8217;objet compacts diminuent la taille du tas, am\u00e9liorent la densit\u00e9 de d\u00e9ploiement et augmentent la localit\u00e9 des donn\u00e9es.<\/p>\n<p>Les en-t\u00eates d&#8217;objets compacts ont \u00e9t\u00e9 introduits en tant que fonctionnalit\u00e9 exp\u00e9rimentale dans Java\u00a024, puis sont devenus une fonctionnalit\u00e9 activable dans Java 25. \u00c9tant donn\u00e9 que les en-t\u00eates d&#8217;objet compacts sont d\u00e9sormais activ\u00e9s par d\u00e9faut, il n&#8217;est plus n\u00e9cessaire de les activer \u00e0 l&#8217;aide d&#8217;une option de ligne de commande, comme c&#8217;\u00e9tait le cas avec le JDK\u00a025.\u00a0<\/p>\n<p>Les applications comportant un grand nombre d&#8217;objets b\u00e9n\u00e9ficieront particuli\u00e8rement de ce changement, car l&#8217;utilisation d&#8217;en-t\u00eates d&#8217;objets compacts r\u00e9duit l&#8217;empreinte m\u00e9moire de la JVM. Les JetBrains IDEs utilisent cette fonctionnalit\u00e9 et ont constat\u00e9 des \u00e9conomies de m\u00e9moire syst\u00e9matiques lorsqu&#8217;elle est activ\u00e9e. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/IJPL-212987\" target=\"_blank\" rel=\"noopener\">En savoir plus<\/a>.<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/536\" target=\"_blank\" rel=\"noopener\">JEP\u00a0536\u00a0: Masquage des donn\u00e9es JFR internes au sein du processus<\/a><\/h2>\n<p>Cette JEP am\u00e9liore JDK Flight Recorder (JFR) en masquant les arguments de ligne de commande ainsi que les valeurs initiales des variables d&#8217;environnement et des propri\u00e9t\u00e9s syst\u00e8me dans les enregistrements avant qu&#8217;ils ne quittent le processus, afin d&#8217;\u00e9viter toute fuite d&#8217;informations sensibles.<\/p>\n<h1 class=\"wp-block-heading\">Fonctionnalit\u00e9s de Java\u00a027 en pr\u00e9version<\/h1>\n<p>Les fonctionnalit\u00e9s en pr\u00e9version permettent aux d\u00e9veloppeurs de tester de nouvelles fonctionnalit\u00e9s et d&#8217;apporter leur retour d&#8217;exp\u00e9rience avant leur finalisation. Les fonctionnalit\u00e9s en pr\u00e9version peuvent faire l&#8217;objet de plusieurs it\u00e9rations, avec ou sans modifications, avant d&#8217;\u00eatre finalis\u00e9es et de devenir une partie standard du langage.<\/p>\n<p>IntelliJ IDEA s&#8217;efforce de prendre en charge les fonctionnalit\u00e9s en pr\u00e9version, afin que vous puissiez exp\u00e9rimenter avant qu&#8217;elles ne deviennent la norme. Comme ces fonctionnalit\u00e9s sont toujours sujettes \u00e0 changement, IntelliJ IDEA ne prend en charge les fonctionnalit\u00e9s en pr\u00e9version que pour le JDK actuel. Pour activer les fonctionnalit\u00e9s en pr\u00e9version, d\u00e9finissez <em>Language <\/em><em>level<\/em> sur <em>27 (Preview) \u2013 Primitive types in patterns, instanceof, and switch (5th preview).<\/em><\/p>\n<p>Java\u00a027 contient quatre fonctionnalit\u00e9s en pr\u00e9version et une fonctionnalit\u00e9 en incubation. Les fonctionnalit\u00e9s elles-m\u00eames sont identiques \u00e0 celles de Java\u00a026, mais certaines d&#8217;entre elles ont \u00e9t\u00e9 r\u00e9vis\u00e9es dans Java\u00a027.\u00a0<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/531\" target=\"_blank\" rel=\"noopener\">JEP\u00a0531\u00a0: Lazy constants (troisi\u00e8me pr\u00e9version)<\/a><\/h2>\n<p>Les lazy constants (constantes \u00e0 initialisation diff\u00e9r\u00e9e) sont des objets qui contiennent des donn\u00e9es immuables. Comme leur nom l&#8217;indique, elles sont \u00e9valu\u00e9es de mani\u00e8re diff\u00e9r\u00e9e. Cela pr\u00e9sente des avantages par rapport aux champs final, qui sont \u00e9valu\u00e9s imm\u00e9diatement. Avec les lazy constants, les champs ne sont \u00e9valu\u00e9s qu&#8217;en cas de besoin, ce qui peut am\u00e9liorer le temps de d\u00e9marrage.<\/p>\n<p>Pour une explication un peu plus d\u00e9taill\u00e9e, consultez la section consacr\u00e9e aux <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-526-lazy-constants-second-preview\"><em>Lazy constants dans Java\u00a026 avec IntelliJ IDEA<\/em><\/a>.<\/p>\n<p>Les lazy constants ont \u00e9t\u00e9 inaugur\u00e9es dans Java\u00a025 (en tant que <a href=\"https:\/\/openjdk.org\/jeps\/502\" target=\"_blank\" rel=\"noopener\">valeurs stables<\/a>) et ont connu des modifications importantes dans Java\u00a026. L&#8217;API a fait l&#8217;objet de nouvelles r\u00e9visions avec Java\u00a027.\u00a0\u00a0<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/532\" target=\"_blank\" rel=\"noopener\">JEP\u00a0532\u00a0: Types primitifs dans les patterns, instanceof et switch (5e\u00a0pr\u00e9version)<\/a><\/h2>\n<p>Comme <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-530-primitive-types-in-patterns-instanceof-and-switch-fourth-preview\">expliqu\u00e9<\/a> dans <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/\"><em>Java\u00a026 dans IntelliJ IDEA<\/em><\/a>, cette fonctionnalit\u00e9 \u00e9tend la correspondance de motifs afin de prendre en charge tous les types primitifs dans les contextes de motifs, notamment avec <code>instanceof<\/code> et <code>switch<\/code>. Cette fonctionnalit\u00e9 supprime certaines limitations de la correspondance de motifs, permettant de comparer, tester et convertir des valeurs de types primitifs dans ces constructions en toute s\u00e9curit\u00e9. La suppression des casts manuels non s\u00e9curis\u00e9s (susceptibles de provoquer des bugs subtils) et des v\u00e9rifications de plage a am\u00e9lior\u00e9 la s\u00e9curit\u00e9 et la lisibilit\u00e9 du code. Cette fonctionnalit\u00e9 est toujours en pr\u00e9version dans Java\u00a027, sans changement par rapport \u00e0 la version de Java\u00a026.<\/p>\n<h3 class=\"wp-block-heading\">Exemple rapide<\/h3>\n<p>Examinons rapidement un exemple d\u2019utilisation des types primitifs dans des expressions switch avec des patterns de garde.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int itemDiscountPercentage(int items) {\n   return switch (items) {\n       case 2 -&gt; 5;\n       case 3, 4 -&gt; 10;\n       case int i when i &gt;= 5 -&gt; 20;\n       default -&gt; 0;\n   };\n}<\/pre>\n<p>Nous pouvons ajouter une Javadoc \u00e0 cette m\u00e9thode pour expliquer son fonctionnement. Depuis Java\u00a023 (<a href=\"https:\/\/openjdk.org\/jeps\/467\" target=\"_blank\" rel=\"noopener\">JEP\u00a0467<\/a>), on peut \u00e9crire de la Javadoc en Markdown. Si votre projet utilise JDK\u00a023 ou une version ult\u00e9rieure, IntelliJ IDEA ins\u00e9rera par d\u00e9faut des commentaires de documentation Markdown lorsque vous utilisez l&#8217;action contextuelle <em>Add Javadoc<\/em>.<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/Java27_AddJavaDoc.mp4\"><\/video><figcaption class=\"wp-element-caption\"><em>Add JavaDoc<\/em><\/figcaption><\/figure>\n\n\n<p>Remarque\u00a0: si vous pr\u00e9f\u00e9rez utiliser des commentaires classiques plut\u00f4t que le Markdown, ouvrez <em>Settings<\/em>, allez dans <em>Editor | Code Style | Java | Code Generation | Comment Code<\/em>, puis d\u00e9cochez l&#8217;option <em>Prefer documentation line comments<\/em>.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/image-53.png\" alt=\"\" class=\"wp-image-739857\"\/><figcaption class=\"wp-element-caption\"><em>Prefer documentation line comments<\/em><\/figcaption><\/figure>\n\n\n<p>IntelliJ IDEA peut convertir les commentaires Javadoc en Markdown gr\u00e2ce \u00e0 l&#8217;action contextuelle <em>Convert to Markdown documentation comment<\/em>.<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/Java27_Convert-to-Markdown.mp4\"><\/video><figcaption class=\"wp-element-caption\"><em>Convert to Markdown documentation comment<\/em><\/figcaption><\/figure>\n\n\n<p>Vous trouverez une explication plus d\u00e9taill\u00e9e de cette fonctionnalit\u00e9 dans <a href=\"https:\/\/blog.jetbrains.com\/idea\/2024\/09\/java-23-and-intellij-idea\/#primitive-types-in-patterns-instanceof-and-switch-preview-feature\">cette section<\/a> de <a href=\"https:\/\/blog.jetbrains.com\/idea\/2024\/09\/java-23-and-intellij-idea\/\"><em>Java\u00a023 et IntelliJ IDEA<\/em><\/a>.<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/533\" target=\"_blank\" rel=\"noopener\">JEP\u00a0533\u00a0: Concurrence structur\u00e9e (7e\u00a0pr\u00e9version)<\/a><\/h2>\n<p>Comme <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-525-structured-concurrency-sixth-preview\">expliqu\u00e9<\/a> dans <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/\"><em>Java\u00a026 dans IntelliJ IDEA<\/em><\/a>, la concurrence structur\u00e9e nous offre de meilleurs \u00ab\u00a0idiomes\u00a0\u00bb pour le code multithread, ce qui permet au code de mieux correspondre au mod\u00e8le mental de l\u2019utilisateur.\u00a0<\/p>\n<p>La concurrence structur\u00e9e consid\u00e8re les groupes de t\u00e2ches li\u00e9es s\u2019ex\u00e9cutant dans diff\u00e9rents threads comme des unit\u00e9s de travail uniques. Cela am\u00e9liore la lisibilit\u00e9 et l&#8217;observabilit\u00e9\u00a0; le code concurrent est donc plus facile \u00e0 comprendre et \u00e0 appr\u00e9hender. Cela permet \u00e9galement d&#8217;\u00e9liminer les fuites de threads et les d\u00e9lais d&#8217;annulation.\u00a0<\/p>\n<p>Pour en savoir plus sur la concurrence structur\u00e9e et son fonctionnement avec les autres fonctionnalit\u00e9s du projet Loom, consultez mon pr\u00e9c\u00e9dent article de blog, <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/08\/project-loom-in-intellij-idea-virtual-threads-scoped-values-and-structured-concurrency\/\"><em>Project Loom in IntelliJ IDEA\u00a0: Virtual Threads, Scoped Values, and Structured Concurrency<\/em><\/a> (Projet Loom dans IntelliJ IDEA\u00a0: threads virtuels, valeurs \u00e0 port\u00e9e limit\u00e9e et concurrence structur\u00e9e).<\/p>\n<p>Comme mentionn\u00e9 dans cet article, il existe un live template permettant de g\u00e9n\u00e9rer rapidement la structure de base d\u2019un <code>StructuredTaskScope<\/code>. Vous pouvez afficher la liste des <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/using-live-templates.html\" target=\"_blank\" rel=\"noopener\">live templates<\/a> disponibles dans IntelliJ IDEA \u00e0 l\u2019aide du raccourci (<em>\u2318J<\/em> sur macOS \/ <em>Ctrl+J<\/em> sous Windows et Linux).<\/p>\n<p>Vous pouvez \u00e9galement utiliser la <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/command-completion.html\" target=\"_blank\" rel=\"noopener\">compl\u00e9tion des commandes<\/a> : saisissez <code>..<\/code> pour afficher la liste de toutes les commandes pertinentes dans le contexte actuel. Vous pouvez m\u00eame saisir une partie du nom de la commande (par exemple \u00ab live \u00bb pour la commande Afficher les mod\u00e8les dynamiques), et la commande correspondante appara\u00eetra parmi les r\u00e9sultats de la compl\u00e9tion classique.<\/p>\n<p>href=&#8221;https:\/\/www.jetbrains.com\/help\/idea\/using-live-templates.html&#8221; target=&#8221;_blank&#8221; rel=&#8221;noopener&#8221;>live templates<\/a> disponibles dans IntelliJ IDEA \u00e0 l&#8217;aide du raccourci (<em>\u2318J<\/em> sous macOS\/<em>Ctrl+J<\/em> sous Windows et Linux). Vous pouvez \u00e9galement utiliser la <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/command-completion.html\" target=\"_blank\" rel=\"noopener\">compl\u00e9tion des commandes<\/a>\u00a0: saisissez .. et une liste de toutes les commandes pertinentes dans votre contexte actuel s&#8217;affichera. Vous pouvez m\u00eame saisir une partie du nom de la commande (par exemple \u00ab\u00a0live\u00a0\u00bb pour Show live templates), et la commande correspondante s&#8217;affichera parmi les suggestions de saisie semi-automatique.<\/p>\n<p>Vous pouvez lancer des recherches dans la liste des live templates, aussi bien par nom que par description. Si l&#8217;on cherche \u00ab\u00a0structured\u00a0\u00bb, on trouvera le live template <code>sts<\/code>.<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/Java27_Show-live-templates.mp4\"><\/video><figcaption class=\"wp-element-caption\"><em>Use command completion to Show live templates<\/em><\/figcaption><\/figure>\n\n\n<p>Pour en savoir plus sur la compl\u00e9tion de commande, consultez mon pr\u00e9c\u00e9dent article : <a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/11\/universal-entry-point-a-single-entry-point-for-context-aware-coding-assistance\/\"><em>Universal Entry Point\u00a0: A Single Entry Point for Context-Aware Coding Assistance<\/em><\/a> (Point d&#8217;entr\u00e9e universel\u00a0: un point d&#8217;entr\u00e9e unique pour une assistance au codage contextuelle).<\/p>\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/538\" target=\"_blank\" rel=\"noopener\">JEP\u00a0538\u00a0: Encodages PEM des objets cryptographiques (3e\u00a0pr\u00e9version)<\/a><\/h2>\n<p>Comme <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-524-pem-encodings-of-cryptographic-objects-second-preview\">d\u00e9crit<\/a> dans <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/\"><em>Java\u00a026 dans IntelliJ IDEA<\/em><\/a>, cette JEP fournit une API en pr\u00e9version pour l&#8217;encodage et le d\u00e9codage d&#8217;objets cryptographiques (cl\u00e9s, certificats et listes de r\u00e9vocation de certificats) vers et depuis le format PEM (Privacy-Enhanced Mail).<\/p>\n<p>L&#8217;API a fait l&#8217;objet de nouvelles modifications dans Java\u00a027 par rapport \u00e0 la version pr\u00e9c\u00e9dente.<\/p>\n<h1 class=\"wp-block-heading\">Fonctionnalit\u00e9s de Java\u00a027 en incubation<\/h1>\n<p>Les <a href=\"https:\/\/openjdk.org\/jeps\/11\" target=\"_blank\" rel=\"noopener\">modules d&#8217;incubation<\/a> sont des API exp\u00e9rimentales. Il s&#8217;agit explicitement d&#8217;API et d&#8217;outils non finalis\u00e9s, mis \u00e0 la disposition des d\u00e9veloppeurs \u00e0 des fins d&#8217;essai. Contrairement aux fonctionnalit\u00e9s en pr\u00e9version, les fonctionnalit\u00e9s en incubation peuvent faire l&#8217;objet de modifications importantes, voire \u00eatre supprim\u00e9es dans les versions futures. Elles ne sont pas destin\u00e9es \u00e0 un usage en production.<\/p>\n<p>Pour utiliser une fonctionnalit\u00e9 en incubation, vous devez explicitement ajouter le module lors de l&#8217;ex\u00e9cution du code, en utilisant l&#8217;option de ligne de commande <code>--add-modules<\/code> pour ce module sp\u00e9cifique.<\/p>\n<p>Si vous ex\u00e9cutez le code \u00e0 partir d&#8217;IntelliJ IDEA, vous pouvez ajouter des options de ligne de commande aux configurations d&#8217;ex\u00e9cution de votre application. S\u00e9lectionnez la configuration d&#8217;ex\u00e9cution de votre programme, puis cliquez sur les trois points pour acc\u00e9der \u00e0 <em>More Actions<\/em>. S\u00e9lectionnez <em>Edit<\/em> pour ouvrir <em>Run\/Debug Configurations<\/em>. Cliquez sur le lien <em>Modify Options<\/em>, puis, dans la fen\u00eatre contextuelle <em>Add Run Options<\/em>, s\u00e9lectionnez <em>Add VM Options<\/em>. Un nouveau champ s&#8217;affichera avec l&#8217;indication VM Options. Ajoutez l&#8217;option de ligne de commande \u00e0 ce champ.<\/p>\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/Java27_Add-VM-Options.mp4\"><\/video><figcaption class=\"wp-element-caption\"><em>Add VM Options<\/em><\/figcaption><\/figure>\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/openjdk.org\/jeps\/537\" target=\"_blank\" rel=\"noopener\">JEP\u00a0537\u00a0: API Vector (12e\u00a0incubation)<\/a><\/h2>\n<p>Comme <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/#jep-529-vector-api-eleventh-incubator\">indiqu\u00e9<\/a> dans <a href=\"https:\/\/blog.jetbrains.com\/idea\/2026\/03\/java-26-in-intellij-idea\/\"><em>Java\u00a026 dans IntelliJ IDEA<\/em><\/a>, cette JEP introduit une API qui permet aux d\u00e9veloppeurs d&#8217;exprimer des calculs vectoriels qui se compilent de mani\u00e8re fiable en instructions vectorielles optimales sur les processeurs pris en charge. Les op\u00e9rations vectorielles permettent d&#8217;effectuer davantage de travail au cours d\u2019un m\u00eame cycle CPU, ce qui peut entra\u00eener des gains de performance significatifs.<\/p>\n<p>Comme il s&#8217;agit d&#8217;un module en incubation, vous devrez utiliser une option de ligne de commande pour ajouter le module explicitement, comme d\u00e9crit ci-dessus. Pour utiliser l&#8217;API Vector, ajoutez l&#8217;option de ligne de commande suivante\u00a0: <code>--add-modules jdk.incubator.vector<\/code>.<\/p>\n<p>L&#8217;API Vector n&#8217;a connu aucun changement dans Java\u00a027 par rapport \u00e0 Java\u00a026. Cette fonctionnalit\u00e9 restera en incubation jusqu&#8217;\u00e0 ce que les fonctionnalit\u00e9s requises du <a href=\"https:\/\/openjdk.org\/projects\/valhalla\/\" target=\"_blank\" rel=\"noopener\">Projet Valhalla<\/a> passent en pr\u00e9version.<\/p>\n<h1 class=\"wp-block-heading\">Autres changements\u00a0: am\u00e9liorations du d\u00e9bogueur<\/h1>\n<p>Outre les JEP, le JDK\u00a027 apporte des corrections de bugs, comme <a href=\"https:\/\/bugs.openjdk.org\/browse\/JDK-6960970\" target=\"_blank\" rel=\"noopener\">JDK-6960970<\/a>. Le d\u00e9bogueur \u00e9tait tr\u00e8s lent lors de l\u2019ex\u00e9cution pas \u00e0 pas. Ce probl\u00e8me a \u00e9t\u00e9 corrig\u00e9 dans le JDK\u00a027 et l\u2019ex\u00e9cution pas \u00e0 pas dans le d\u00e9bogueur est d\u00e9sormais plus rapide. Nos ing\u00e9nieurs ont <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/JBR-10441\" target=\"_blank\" rel=\"noopener\">r\u00e9troport\u00e9 ce correctif dans JetBrains Runtime (JBR) 25<\/a>, afin d\u2019acc\u00e9l\u00e9rer l\u2019ex\u00e9cution pas \u00e0 pas lors du d\u00e9bogage du code d\u2019IntelliJ IDEA lui-m\u00eame. Cela montre qu&#8217;il est possible de r\u00e9troporter cette modification vers Java\u00a025 et qu&#8217;elle fonctionne correctement. Si vous souhaitez profiter de cette modification, vous pouvez utiliser JBR\u00a025 ou demander \u00e0 votre fournisseur de r\u00e9troporter cette modification.<\/p>\n<h1 class=\"wp-block-heading\">Futures orientations<\/h1>\n<p>Des fonctionnalit\u00e9s du projet Valhalla commencent \u00e0 faire leur apparition dans Java. Les <a href=\"https:\/\/openjdk.org\/jeps\/401\" target=\"_blank\" rel=\"noopener\">objets valeurs (JEP\u00a0401)<\/a> et l&#8217;<a href=\"https:\/\/openjdk.org\/jeps\/539\" target=\"_blank\" rel=\"noopener\">initialisation stricte des champs dans la JVM (JEP\u00a0539)<\/a> ont tous deux \u00e9t\u00e9 retenus comme fonctionnalit\u00e9s en pr\u00e9version du <a href=\"https:\/\/openjdk.org\/projects\/jdk\/28\/\" target=\"_blank\" rel=\"noopener\">JDK\u00a028<\/a>. Si vous souhaitez essayer ces fonctionnalit\u00e9s, il n&#8217;est donc plus n\u00e9cessaire de t\u00e9l\u00e9charger une distribution Valhalla sp\u00e9cifique. Vous pouvez t\u00e9l\u00e9charger la version EA du JDK\u00a028 (acc\u00e8s anticip\u00e9). Cette version est disponible au t\u00e9l\u00e9chargement directement depuis IntelliJ IDEA.<\/p>\n<p>Si vous avez d\u00e9j\u00e0 t\u00e9l\u00e9charg\u00e9 le JDK 28\u00a0EA, indiquer \u00e0 IntelliJ IDEA o\u00f9 se trouve votre installation.<\/p>\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n<p>Bien qu&#8217;il ne s&#8217;agisse pas d&#8217;une version LTS, Java\u00a027 apporte des am\u00e9liorations en mati\u00e8re de s\u00e9curit\u00e9 et de performances, et a fait \u00e9voluer plusieurs fonctionnalit\u00e9s en pr\u00e9version importantes. IntelliJ IDEA prend en charge Java\u00a027 d\u00e8s sa sortie, et continuera de prendre en charge les derni\u00e8res fonctionnalit\u00e9s Java. N&#8217;h\u00e9sitez pas \u00e0 nous faire part de vos commentaires.<\/p>\n<p><em>Auteur de l&#8217;article original en anglais<\/em> :<\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/Marit_JC_dD_950x950.png\" width=\"200\" height=\"200\" alt=\"Marit van Dijk\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Marit van Dijk<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":743200,"comment_status":"closed","ping_status":"closed","template":"","categories":[5088,89],"tags":[40,155,9265],"cross-post-tag":[],"class_list":["post-742980","idea","type-idea","status-publish","has-post-thumbnail","hentry","category-java","category-news","tag-intellij-idea","tag-java","tag-java-27"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/idea\/742980","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=742980"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/idea\/742980\/revisions"}],"predecessor-version":[{"id":743993,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/idea\/742980\/revisions\/743993"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/743200"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=742980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=742980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=742980"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=742980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}