<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Kotlin</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur la programmation en langage Kotlin]]></description>
		<language>fr</language>
		<lastBuildDate>Wed, 22 Jul 2026 08:35:48 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Kotlin</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Le tour d’horizon Kotlin de Kodee : Kotlin fête ses 15 ans, Kotlin 2.4.0 et la chaîne d’outils Kotlin</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184514&amp;goto=newpost</link>
			<pubDate>Mon, 06 Jul 2026 14:11:25 GMT</pubDate>
			<description>*JetBrains présente le tour...</description>
			<content:encoded><![CDATA[<div><b><font size="4">JetBrains présente le tour d'horizon des nouveautés et évènements concernant le langage de programmation Kotlin par Kodee : Kotlin fête ses 15 ans, Kotlin 2.4.0 et la chaîne d’outils Kotlin</font></b><br />
<br />
Kotlin est un langage de programmation multiplateforme, de haut niveau, à usage général et à typage statique, doté d’une inférence de types. Kotlin est conçu pour interagir pleinement avec Java, et la version pour la machine virtuelle Java (JVM) de la bibliothèque standard de Kotlin s’appuie sur la bibliothèque de classes Java. Cependant, l'inférence de types permet une syntaxe plus concise. Kotlin cible principalement la JVM, mais se compile également en JavaScript (par exemple, pour les applications web front-end utilisant React) ou en code natif via LLVM (par exemple, pour les applications iOS natives partageant une logique métier avec des applications Android). JetBrains prend en charge les coûts de développement du langage, tandis que la Fondation Kotlin protège la marque Kotlin. La mascotte de Kotlin est baptisée Kodee.<br />
<br />
Tous les mois, Kodee présente le tour d’horizon des nouveautés et évènements concernant Kotlin. Voici le tour d'horizon des mois de mai et juin :<br />
<br />
<b><font size="3">Coup de projecteur approuvé par Kodee</font></b><br />
<br />
Bonjour à tous ! Les mois de mai et juin ont été tellement riches en actualités Kotlin que j’ai eu besoin d’un peu plus d’espace pour ce tour d’horizon. Kotlin a fêté ses 15 ans, la version 2.4.0 est arrivée avec de nouvelles fonctionnalités pour les développeurs sur toutes les plateformes, et j’ai découvert de nombreuses façons d’apprendre, d’expérimenter, de créer des agents IA et des applications basées sur l’IA, ainsi que d’explorer des bibliothèques Kotlin Multiplatform utiles. Voici les actualités qui m’ont le plus marqué.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677375d1783410034/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 3274
Taille : 46,3 Ko"  style="float: CONFIG" /></div><br />
<b>L’effet Kotlin dans la vie réelle</b><br />
<br />
Que se passe-t-il lorsque la logique de Kotlin dépasse le cadre du code ? À l’occasion de l’anniversaire de Kotlin, des concepts familiers du langage ont été transposés dans des situations du quotidien, les rendant ainsi plus concis, plus efficaces et plus ludiques. J’ai pris beaucoup de plaisir à voir l’effet Kotlin prendre vie en dehors de l’EDI.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7082" target="_blank">Regarder la vidéo</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677376d1783410038/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/2.jpg/" border="0" alt="Nom : 2.jpg
Affichages : 254
Taille : 86,8 Ko"  style="float: CONFIG" /></div><br />
<b>Kodee vs Friction</b><br />
<br />
Je me suis donné à fond pour éliminer les bugs dans Kodee vs. Friction, un jeu d’arcade sur navigateur où j’affronte des ennemis tels que le Boilerplate Golem et la Callback Hydra à l’aide de bonus inspirés de Kotlin. Il est développé avec Kotlin, Compose Multiplatform pour le web, Kotlin/Wasm et un backend Ktor. Le code source est public, vous pouvez donc voir comment tout fonctionne. Pour une expérience optimale, je vous recommande de jouer sur un ordinateur de bureau ou un ordinateur portable.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7083" target="_blank">Jouez à Kodee vs. Friction</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677377d1783410042/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/3.jpg/" border="0" alt="Nom : 3.jpg
Affichages : 259
Taille : 66,4 Ko"  style="float: CONFIG" /></div><br />
<b>Ressources gratuites pour apprendre Kotlin</b><br />
<br />
Un anniversaire est une bonne occasion d’apprendre quelque chose de nouveau. Pour fêter les 15 ans de Kotlin, une sélection de cours sur Kotlin est disponible gratuitement sur Hyperskill. Que vous souhaitiez consolider vos bases ou vous lancer dans le développement mobile et backend, ces ressources axées sur des projets vous offrent un moyen pratique de continuer à progresser.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7084" target="_blank">Profitez de cours gratuits sur Kotlin</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677378d1783410047/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/4.jpg/" border="0" alt="Nom : 4.jpg
Affichages : 255
Taille : 48,3 Ko"  style="float: CONFIG" /></div><br />
<b>Kotlin 2.4.0</b><br />
<br />
Kotlin 2.4.0 est disponible ! Cette version stabilise les paramètres de contexte et les champs de support explicites, étend les capacités de la bibliothèque standard et de la plateforme, et apporte des améliorations à Kotlin/JVM, Kotlin/Native, Kotlin/Wasm, Kotlin/JS, Gradle, Maven et au compilateur. Je vous recommande de consulter la présentation complète pour découvrir les changements les plus pertinents pour vos projets.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7085" target="_blank">Découvrez les nouveautés de Kotlin 2.4.0</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677379d1783410052/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/5.jpg/" border="0" alt="Nom : 5.jpg
Affichages : 259
Taille : 34,4 Ko"  style="float: CONFIG" /></div><br />
<b>Kotlin Toolchain 0.11</b><br />
<br />
Kotlin Toolchain est votre point d’entrée unifié pour travailler sur des projets Kotlin. À l’aide d’une simple commande `kotlin`, vous pouvez créer, compiler, exécuter, tester et publier des projets, sans configuration complexe de plugins. La version 0.11 est désormais disponible en tant qu’évolution officielle du projet Amper. Je me réjouis de voir ce workflow simplifié continuer à se développer dans le cadre du développement JVM et multiplateforme.<br />
<br />
:fleche: <a href="https://jetbrains.developpez.com/actu/384657/JetBrains-annonce-que-Amper-0-11-0-est-disponible-et-devient-Kotlin-Toolchain-un-point-d-entree-unifie-vers-Kotlin-permettant-de-developper-des-applications-JVM-Android-iOS-multiplateformes/" target="_blank">En savoir plus sur la chaîne d’outils Kotlin 0.11</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677380d1783410058/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/6.jpg/" border="0" alt="Nom : 6.jpg
Affichages : 258
Taille : 73,0 Ko"  style="float: CONFIG" /></div><br />
<b>Koog 1.0</b><br />
<br />
Koog a atteint la version 1.0, marquant ainsi une étape majeure dans la création d’agents d’IA en Kotlin idiomatique. Le noyau stable s’accompagne d’une garantie de compatibilité d’un an, d’une interopérabilité améliorée, d’une observabilité multiplateforme et d’une prise en charge de workflows d’agents fiables pour les applications backend, mobiles et multiplateformes.<br />
<br />
:fleche: <a href="https://jetbrains.developpez.com/actu/383729/La-version-1-0-de-Koog-le-framework-open-source-de-JetBrains-permettant-de-creer-des-agents-IA-en-Kotlin-et-Java-est-disponible-avec-un-noyau-stable-et-une-meilleure-interoperabilite/" target="_blank">En savoir plus sur Koog 1.0</a><br />
<br />
<b>Subventions pour les auteurs de bibliothèques Kotlin</b><br />
<br />
Le programme de subventions 2026 de la Fondation Kotlin est ouvert aux développeurs qui créent ou maintiennent des bibliothèques, des outils et des frameworks Kotlin open source. Les projets qui renforcent l’écosystème Kotlin – y compris les travaux liés à Kotlin Multiplatform, à l’IA et aux grands modèles linguistiques – peuvent solliciter un soutien financier. La date limite de dépôt des candidatures est fixée au 14 juillet 2026.<br />
<br />
<b>Expériences Compose Hot Reload avec des agents IA</b><br />
<br />
Compose Hot Reload 1.2.0-beta01 poursuit le développement du serveur MCP expérimental, offrant aux agents IA davantage de moyens d’interagir en temps réel avec les applications Compose en cours d’exécution. Cette version bêta ajoute la prise en charge du mode de compilation autonome, de l’accès aux journaux, de l’inspection des erreurs de l’interface utilisateur et des contrôles du cycle de vie tels que le redémarrage et la réinitialisation. Bien qu’il s’agisse encore d’une fonctionnalité expérimentale, elle offre un aperçu intéressant de la manière dont le développement assisté par l’IA pourrait devenir plus visuel, interactif et connecté à l’application en cours d’exécution.<br />
<br />
<b>Compose Multiplatform 1.12.0-beta01</b><br />
<br />
Compose Multiplatform 1.12.0-beta01 est disponible. Cette version apporte des mises à jour pour les interfaces utilisateur partagées entre les plateformes, notamment de nouvelles capacités graphiques, des améliorations en matière d’accessibilité sur iOS, des mises à jour du comportement des tests d’interface utilisateur, ainsi que des corrections pour iOS, les ordinateurs de bureau, le Web, les ressources et le plugin Gradle. Consultez les notes de mise à jour pour obtenir la liste complète des modifications et les détails de migration.<br />
<br />
<b>Trois bibliothèques Kotlin Multiplatform à découvrir</b><br />
<br />
J’ai trouvé trois ajouts utiles à explorer sur Klibs.io : ComposeMediaPlayer pour la lecture vidéo multiplateforme, NSExceptionKt pour un meilleur signalement des plantages Kotlin/Native sur les plateformes Apple, et multiplatform-settings pour le stockage de données clé-valeur dans du code partagé. Elles résolvent des problèmes très différents, ce qui rend justement la découverte de l’écosystème des bibliothèques KMP si intéressante.<br />
<br />
<b>Le parcours de Booking.com avec Kotlin Multiplatform</b><br />
<br />
Booking.com a adopté Kotlin Multiplatform pour une bibliothèque d’expérimentation, et les résultats ont dépassé les attentes de l’équipe. Leur expérience montre comment KMP peut améliorer la cohérence multiplateforme tout en s’intégrant dans un environnement produit et d’ingénierie existant, sans pour autant obliger les équipes à abandonner le développement spécifique à une plateforme.<br />
<br />
C’est tout pour ce tour d’horizon. Joyeux 15e anniversaire, Kotlin – et bon codage !<br />
<br />
:fleche: <a href="https://jetbrains.developpez.com/actu/384050/JetBrains-presente-les-principaux-points-de-la-Keynote-de-la-KotlinConf-26-avancees-dans-la-conception-du-langage-les-outils-les-workflows-pilotes-par-l-IA-et-le-developpement-multiplateforme/" target="_blank">Keynote de la KotlinConf'26</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p677375d1783410034/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/1.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677376d1783410038/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/2.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677377d1783410042/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/3.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677378d1783410047/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/4.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677379d1783410052/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/5.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p677380d1783410058/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/6.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2273/autres-langages/autres-langages/kotlin/">Kotlin</category>
			<dc:creator>Jade Emy</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184514/autres-langages/autres-langages/kotlin/tour-d-horizon-kotlin-kodee-kotlin-fete-15-ans-kotlin-2-4-0-chaine-d-outils-kotlin/</guid>
		</item>
		<item>
			<title>Les principaux points de la Keynote de la KotlinConf’26</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184170&amp;goto=newpost</link>
			<pubDate>Wed, 10 Jun 2026 16:21:19 GMT</pubDate>
			<description>*JetBrains présente les...</description>
			<content:encoded><![CDATA[<div><b><font size="4">JetBrains présente les principaux points de la Keynote de la KotlinConf’26 : avancées dans la conception du langage, les outils, les workflows pilotés par l’IA et le développement multiplateforme</font></b><br />
<br />
Kotlin est un langage de programmation multiplateforme, de haut niveau, à usage général et à typage statique, doté d'une inférence de types. Kotlin est conçu pour interagir pleinement avec Java, et la version pour la machine virtuelle Java (JVM) de la bibliothèque standard de Kotlin s'appuie sur la bibliothèque de classes Java. Cependant, l'inférence de types permet une syntaxe plus concise. Kotlin cible principalement la JVM, mais se compile également en JavaScript (par exemple, pour les applications web front-end utilisant React) ou en code natif via LLVM (par exemple, pour les applications iOS natives partageant une logique métier avec des applications Android). JetBrains prend en charge les coûts de développement du langage, tandis que la Fondation Kotlin protège la marque Kotlin.<br />
<br />
Kotlin a 15 ans cette année, et il est vraiment partout. Il fait fonctionner les systèmes qui se cachent derrière de nombreux gestes du quotidien, comme le paiement sans contact, l’achat de billets de train, l’utilisation des systèmes de divertissement à bord des avions et même la déclaration de revenus en ligne. Alors que l’IA continue de transformer la manière dont les logiciels sont développés, l’impact croissant de Kotlin dans le monde réel met en lumière l’importance des langages et des outils qui aident les équipes à gérer la complexité, à exprimer clairement leurs idées et à construire des systèmes fiables en toute confiance.<br />
<br />
Lors de la conférence KotlinConf’26, l’équipe JetBrains et ses partenaires du secteur ont expliqué comment Kotlin continue d’évoluer pour les développeurs, quelle que soit l’ampleur de leurs projets. La keynote a mis en avant les avancées dans la conception du langage, les outils, les workflows pilotés par l’IA et le développement multiplateforme, toutes destinées à améliorer l’expérience de développement avec Kotlin pour la création d’applications modernes sur tous les environnements.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/MmwBJbzWbV0?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b>Évolution de Kotlin</b><br />
<br />
À mesure que le développement piloté par l’IA élève le niveau d’abstraction, la confiance accordée au langage de programmation devient plus importante que jamais. Le concepteur principal du langage Kotlin, Michail Zare&#269;enskij, a expliqué qu’avec Kotlin, l’équipe vise à instaurer cette confiance à chaque niveau. L’ergonomie et la sécurité sont des principes qui guident le langage au plus profond de sa conception.<br />
<br />
Michail a présenté en avant-première Kotlin 2.4.0, la prochaine étape de l’évolution de Kotlin vers un code plus sûr et plus ergonomique. Parmi les fonctionnalités en cours de stabilisation figurent les paramètres de contexte, conçus rendre les API plus expressives et centrées sur la logique essentielle, ainsi que les champs de support explicites, qui simplifient les modèles courants de propriétés de support tout en réduisant le code répétitif et en améliorent la sécurité.<br />
<br />
La présentation a également porté sur plusieurs fonctionnalités expérimentales du langage, notamment des classes de valeur à champs multiples pour la modélisation de données spécifiques à un domaine, telles que des montants monétaires ou des couleurs. Voici quelques-uns des principaux aspects des classes de valeur :<br />
<br />
- Le compilateur génère automatiquement des fonctions telles que <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">equals<span class="br0">&#40;</span><span class="br0">&#41;</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">hashCode<span class="br0">&#40;</span><span class="br0">&#41;</span></span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">toString<span class="br0">&#40;</span><span class="br0">&#41;</span></span>.<br />
- Les classes de valeurs utilisent par défaut une déstructuration plus sûre, basée sur le nom.<br />
- Les classes de valeurs n’ont pas de sémantique d’identité et sont définies exclusivement par leurs propriétés.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676849d1781117031/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 1470
Taille : 27,3 Ko"  style="float: CONFIG" /></div><br />
Ces modifications sont conçues pour rendre le travail avec les données plus sûr, plus expressif et plus efficace au fil du temps.<br />
<br />
La présentation a également mis en lumière les projets futurs, tels que la localité en tant que concept linguistique de premier ordre, et les erreurs « riches », une nouvelle approche pour représenter et gérer les défaillances récupérables.<br />
<br />
<b>Écosystème Kotlin</b><br />
<br />
Les outils font partie de l’histoire de Kotlin depuis le début. Alors que Kotlin s’étend à de nouveaux workflows, notamment aux agents et aux intégrations, l’écosystème continue d’appliquer les mêmes principes fondamentaux d’ergonomie et de sécurité. L’objectif est de garantir une expérience de développement cohérente, quel que soit l’éditeur, l’outil de build ou le framework agentique.<br />
<br />
La Kotlin Toolchain a fait partie des principales annonces. Il s’agit d’un point d’entrée unifié vers l’écosystème Kotlin. Accessible via une commande unique, la Kotlin Toolchain rassemble tout ce dont vous avez besoin, de la création, la compilation, l’exécution, les tests d’applications au formatage du code, à la génération de documentation et à l’intégration avec des agents.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676850d1781117037/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/2.jpg/" border="0" alt="Nom : 2.jpg
Affichages : 363
Taille : 50,1 Ko"  style="float: CONFIG" /></div><br />
Dès aujourd’hui, vous pouvez utiliser la Kotlin Toolchain dans vos projets JVM et multiplateformes pour créer, exécuter et tester vos applications et Amper constitue maintenant un élément central de la Kotlin Toolchain. À l’avenir, la Kotlin Toolchain s’enrichira d’intégrations LSP, de capacités d’IA, du provisionnement natif des dépendances, et bien plus. Comme toujours, JetBrains propose également des intégrations étroites avec les EDI pour offrir la meilleure expérience possible dès l’installation.<br />
<br />
La présentation a également annoncé le Modèle de documentation Kotlin, un élément central de Kotlin qui représente une documentation lisible par machine sous la forme d’un <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kdoc.jar</span>. Ce format spécifié et rétrocompatible sera publié en même temps que les bibliothèques et utilisé par les EDI, les outils web comme Dokka et les agents d’IA.<br />
<br />
Autre annonce importante : la promotion du serveur de langage Kotlin vers sa phase Alpha. Bénéficiant de toute la puissance du moteur IntelliJ, LSP offre une expérience plus cohérente pour les diagnostics, la saisie semi-automatique du code et la prise en charge des outils. L’extension officielle de Kotlin pour Visual Studio Code est désormais également disponible sur la Marketplace Visual Studio.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676851d1781117043/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/3.jpg/" border="0" alt="Nom : 3.jpg
Affichages : 354
Taille : 59,1 Ko"  style="float: CONFIG" /></div><br />
Dans le cadre des efforts de la Kotlin Foundation, JetBrains et Meta ont initié le processus de normalisation de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">ktfmt</span> afin d’en faire un élément central de Kotlin.<br />
<br />
L’équipe a également annoncé une collaboration continue avec la communauté open source afin d’apporter une prise en charge de Kotlin de premier plan à la <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">rules_kotlin</span> officielle de Bazel, pour faciliter l’utilisation de Kotlin dans des bases de code importantes comptant des milliers de modules.<br />
<br />
<b>Kotlin chez Google</b><br />
<br />
Google utilise Kotlin en production depuis plus d’une décennie, et 92 % des développeurs Android professionnels utilisent désormais Kotlin pour leurs applications Android.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676852d1781117049/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/4.jpg/" border="0" alt="Nom : 4.jpg
Affichages : 350
Taille : 28,0 Ko"  style="float: CONFIG" /></div><br />
La keynote a également mis en avant la collaboration continue de Google avec JetBrains sur le compilateur K2. Depuis le lancement de la prise en charge stable de K2 dans Android Studio, l’équipe Google a observé une adoption quasi universelle. Dans Kotlin Symbol Processing (KSP), une solution de traitement des annotations Java pour Kotlin développée et maintenue par Google, a réduit le temps d’exécution des compilations complexes de 17 %. Dans R8, l’outil d’optimisation de programme complet d’Android, l’équipe a pu ajouter une nouvelle optimisation pour supprimer l’utilisation de la réflexion dans les journaux de la bibliothèque des coroutines, entraînant une amélioration de 50 % des performances de Compose.<br />
<br />
<b>Outils d’IA pour Kotlin</b><br />
<br />
La keynote a également abordé la nouvelle génération d’outils d’IA pour le développement en Kotlin. JetBrains veut vous permettre d’utiliser n’importe quel agent directement dans les EDI JetBrains. Dans ce cadre, l'éditeur co-dirige le développement d’une norme ouverte, le protocole ACP (Agent Client Protocol), qui spécifie la façon dont les EDI et les agents de programmation communiquent. Vous pouvez en découvrir davantage car <a href="https://jetbrains.developpez.com/actu/383316/JetBrains-presente-son-orientation-en-2026-pour-les-workflows-d-IA-et-workflows-classiques-dans-les-EDI-JetBrains/" target="_blank">JetBrains a récemment présenté son orientation en 2026 pour les workflows d'IA et workflows classiques dans les EDI JetBrains.</a><br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676853d1781117055/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/5.jpg/" border="0" alt="Nom : 5.jpg
Affichages : 360
Taille : 46,4 Ko"  style="float: CONFIG" /></div><br />
<b>Junie</b><br />
<br />
Junie, l’agent de programmation de JetBrains, est étroitement intégré aux EDI JetBrains, et même la version CLI de Junie peut se connecter à l’EDI afin d’obtenir tout le contexte du projet. Junie fonctionne également avec plusieurs fournisseurs de LLM afin de vous laisser choisir le meilleur modèle pour une tâche spécifique. Junie fonctionnait déjà dans les projets Kotlin, mais désormais il fournit également une prise en charge Android dédiée.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676854d1781117061/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/6.jpg/" border="0" alt="Nom : 6.jpg
Affichages : 354
Taille : 62,6 Ko"  style="float: CONFIG" /></div><br />
<b>JetBrains Air</b><br />
<br />
Alors que les développeurs gagnent en productivité grâce aux agents, la keynote a également exploré les moyens de faire évoluer les flux de travail de développement basés sur les agents. JetBrains Air est un environnement de développement agentique conçu pour fonctionner efficacement avec plusieurs agents. OpenAI Codex, Claude Agent, Gemini CLI et Junie peuvent exécuter des boucles de tâches indépendantes sans interférer les uns avec les autres. Vous pouvez lancer des agents dans des arbres de travail Git ou des conteneurs Docker distincts, et pour partager la progression avec l’ensemble de votre équipe, vous pourrez bientôt utiliser des agents dans le cloud et même les lancer et les guider directement depuis le navigateur.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676855d1781117067/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/7.jpg/" border="0" alt="Nom : 7.jpg
Affichages : 349
Taille : 41,1 Ko"  style="float: CONFIG" /></div><br />
<b>Anthropic et JetBrains</b><br />
<br />
Christian Ryan, qui dirige l’ingénierie d’IA appliquée chez Anthropic en Europe, est intervenu lors de la keynote pour mettre en avant la collaboration croissante entre Anthropic et JetBrains en matière d’outils d’IA, de bibliothèques et de workflows de développement. Quand Anthropic a créé son SDK JVM officiel, son équipe a utilisé Kotlin, ce qui lui a permis de créer le SDK dans un langage ergonomique, concis et null-safe. La collaboration inclut également le SDK Kotlin MCP officiel.<br />
<br />
Côté outils, Claude est désormais pris en charge nativement dans IntelliJ IDEA et Android Studio. Claude est aussi un modèle intégré nativement dans Junie et JetBrains Air. Pour les utilisateurs de la ligne de commande, un plugin pour Claude Code intègre le LSP Kotlin officiel de JetBrains afin d’obtenir une compréhension plus approfondie du projet. Une nouvelle référence SWE-bench pour Kotlin, basée sur 110 tâches d’ingénierie réelles issues de dépôts Kotlin, a été présentée lors de la keynote. Avec des prompts (instructions génératives) et des configurations d’agents identiques, Claude Code avec Opus 4.7 a obtenu le taux de résolution le plus élevé, soit 86,4 %.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676856d1781117074/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/8.jpg/" border="0" alt="Nom : 8.jpg
Affichages : 356
Taille : 52,8 Ko"  style="float: CONFIG" /></div><br />
<b>Koog 1.0</b><br />
<br />
Vadim Briliantov, Responsable technique et auteur de Koog, a poursuivi la conférence avec une présentation du framework d’agents d’IA en Kotlin qui vous permet de créer des agents d’IA agents d’IA tolérants aux pannes, évolutifs et prêts pour les environnements d’entreprise, entièrement en Kotlin idiomatique. Vadim a annoncé la version stable de Koog 1.0, une étape majeure pour le développement d’agents prêts pour la production en Kotlin, pour le backend, le mobile et les applications multiplateformes.<br />
<br />
La présentation s’est concentrée sur l’approche de Koog pour la création de systèmes d’IA fiables, grâce à des DSL de workflows fortement typés (type-safe), à des mécanismes de persistance et de reprise pour les agents de longue durée d’exécution, ainsi qu’à des intégrations approfondies avec l’écosystème Kotlin existant, notamment Spring AI, Ktor et les outils d’observabilité. L’une des études de cas mentionnées provenait de Mercedes-Benz, dont l’équipe utilise Koog pour créer des agents d’assistance à l’entretien des véhicules, avec des workflows structurés et une logique d’exécution minutieusement contrôlée. Lire l’étude de cas complète.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676857d1781117081/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/9.jpg/" border="0" alt="Nom : 9.jpg
Affichages : 357
Taille : 44,0 Ko"  style="float: CONFIG" /></div><br />
Vadim a également présenté la prise en charge multiplateforme ainsi que les capacités d’IA embarquée sur Android grâce aux modèles Gemma de Google. Cette démonstration a renforcé la position croissante de Kotlin comme langage unifié pour le développement d’applications modernes alimentées par l’IA, qu’il s’agisse de services backend ou d’expériences mobiles, le tout en Kotlin.<br />
<br />
<b>Kotlin pour le développement backend</b><br />
<br />
La keynote s’est poursuivie avec les nouveautés de Kotlin pour le développement backend, notamment de nouvelles fonctionnalités dans Ktor, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kotlinx-rpc</span> et Exposed. L’équipe a présenté l’intégration Koog pour développer des services utilisant l’IA avec Ktor, la prise en charge native expérimentale de gRPC dans <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kotlinx-rpc</span>, ainsi que la version stable d’Exposed, qui introduit des types vectoriels pour la recherche de similarités optimisée par IA, et enfin un nouveau plugin Gradle pour simplifier la génération des scripts de migration. Une nouvelle compétence d’agent est également disponible pour aider les développeurs à migrer des projets existants vers Exposed 1.0.<br />
<br />
Au-delà des outils, la présentation a mis en avant l’adoption croissante de Kotlin dans les environnements d’entreprise et dans des contextes soumis à la conformité, dans lesquels la fiabilité et la prise en charge à long terme sont essentielles. À partir de Kotlin 2.4, la bibliothèque standard de Kotlin intégrera une politique de prise en charge de la sécurité sur 18 mois, avec des correctifs de sécurité rétroportés dans toutes les branches de version bénéficiant d’une prise en charge active.<br />
<br />
La keynote a également souligné les gains de productivité de Kotlin pour les équipes backend, en s’appuyant sur des données qui montrent des cycles de développement 15 à 20 % plus rapides à mesure que les projets se complexifient.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676858d1781117088/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/10.jpg/" border="0" alt="Nom : 10.jpg
Affichages : 340
Taille : 41,3 Ko"  style="float: CONFIG" /></div><br />
La présentation a mis l’accent sur l’intégration étroite de Kotlin à l’écosystème JVM grâce à une collaboration continue avec Spring : meilleure représentation de Kotlin dans la documentation de Spring et de JUnit, mises à jour du <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kotlin-maven-plugin</span> et de l’expérience de démarrage avec Maven, prise en charge améliorée des coroutines dans Micrometer, et poursuite de la stabilisation du plugin du compilateur Lombok pour les projets mixtes Kotlin-Java.<br />
<br />
<b>Kotlin Multiplatform</b><br />
<br />
L’adoption rapide de Kotlin Multiplatform se poursuit. Le nombre d’applications de premier plan utilisant KMP a plus que doublé au cours de l’année écoulée. Des entreprises comme PayPal, Booking.com, Sony et Duolingo l’utilisent déjà en production, et de plus en plus d’équipes adoptent Compose Multiplatform pour partager leur interface utilisateur entre différentes plateformes.<br />
<br />
Par exemple, Sony utilise KMP dans son application Sound Connect pour casques audio afin d’interagir avec des API de plateforme comme les capteurs et le traitement en arrière-plan, tout en partageant l’interface utilisateur via Compose Multiplatform. Si l’on tient compte de l’ensemble des études de cas consacrées à Kotlin Multiplatform, les applications créées avec KMP servent aujourd’hui des centaines de millions d’utilisateurs au quotidien.<br />
<br />
Débuter avec KMP est désormais plus simple grâce au plugin KMP pour EDI disponible sur tous les systèmes d’exploitation pour IntelliJ IDEA et Android Studio. Ce plugin offre tout le nécessaire pour construire de super applications KMP : configurations d’exécution pratiques, outils pour travailler avec du code Compose, intégrations avec Swift et des fonctionnalités interlangages, et prise en charge d’AGP 9.0.<br />
<br />
Vous pouvez également créer de nouveaux projets directement dans l’EDI avec l’assistant de projet KMP, qui utilise désormais notre nouvelle structure par défaut, dans laquelle chaque module a une responsabilité unique et clairement définie. JetBrains déclare : « <i>Nous travaillons à améliorer l’expérience de développement sur iOS, notamment grâce aux fonctionnalités Swift Export qui rendent l’appel de Kotlin à partir de Swift plus naturel. Dans Kotlin 2.4, Swift Export passe officiellement en phase alpha. Nous avons également introduit SPM import, qui vous permet d’ajouter des dépendances à du code compatible avec Objective-C à l’aide de Swift Package Manager et d’appeler ces API directement depuis du code Kotlin.</i> »<br />
<br />
Kotlin/Native a bénéficié d’importantes améliorations des performances au cours de l’année écoulée. Mesurés sur la base de code de Google Docs, les temps de build sont désormais 25 % plus rapides et les builds utilisent moins de la moitié de la quantité de RAM par rapport à l’an dernier.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676859d1781117097/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/11.jpg/" border="0" alt="Nom : 11.jpg
Affichages : 338
Taille : 24,8 Ko"  style="float: CONFIG" /></div><br />
<b>Compose Multiplatform</b><br />
<br />
Compose Multiplatform est entièrement stable et prêt pour la production sur mobile et desktop. La plateforme web est également passée en phase bêta en septembre 2025, une nouvelle avancée majeure pour le développement d’interfaces utilisateur multiplateformes. Pour toutes ces plateformes, l’équipe continue de vous proposer les dernières améliorations et API de Jetpack Compose. L’un des temps forts de l’année écoulée est la nouvelle bibliothèque Navigation 3 : une solution flexible pensée pour Compose, qui vous donne un contrôle total sur votre back stack et qui est déjà stable pour une utilisation multiplateforme.<br />
<br />
Sur iOS, de nouvelles API d’interopérabilité permettent désormais de combiner des composants natifs Liquid Glass avec l’interface utilisateur Compose, permettant ainsi aux vues natives d’interagir dynamiquement avec le contenu Compose situé en dessous.<br />
<br />
Au-delà du framework lui-même, l’écosystème de Kotlin Multiplatform continue de se développer rapidement. Plus de 3 500 bibliothèques communautaires sont à présent référencées sur klibs.io. Vous bénéficiez ainsi d’un ensemble d’outils et d’intégrations en pleine expansion pour concevoir des applications multiplateformes sur mobile, ordinateur, backend et web.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676860d1781117106/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/12.jpg/" border="0" alt="Nom : 12.jpg
Affichages : 341
Taille : 24,5 Ko"  style="float: CONFIG" /></div><br />
<b>Conclusion</b><br />
<br />
La KotlinConf’26 a clairement montré que Kotlin continue d’évoluer au-delà d’un simple langage de programmation pour devenir un écosystème complet pour le backend, le mobile, le web, l’IA et le développement multiplateforme. Des améliorations du langage et des outils à son adoption croissante, ces annonces reflétaient un objectif commun : aider les développeurs à créer des logiciels modernes avec davantage de clarté, de sécurité et de productivité.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7050" target="_blank">En savoir plus sur l'écosystème Kotlin</a><br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7051" target="_blank">Essayer Kotlin en ligne avec Kotlin Playground</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676857d1781117081/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/9.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676860d1781117106/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/12.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676859d1781117097/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/11.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676858d1781117088/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/10.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676856d1781117074/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/8.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676855d1781117067/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/7.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676854d1781117061/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/6.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676853d1781117055/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/5.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676852d1781117049/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/4.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676851d1781117043/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/3.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676850d1781117037/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/2.jpg/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676849d1781117031/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26/1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2273/autres-langages/autres-langages/kotlin/">Kotlin</category>
			<dc:creator>Jade Emy</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184170/autres-langages/autres-langages/kotlin/principaux-points-keynote-kotlinconf-26-a/</guid>
		</item>
		<item>
			<title>Conçu pour la productivité : ce que les données révèlent sur Kotlin, selon une étude de JetBrains</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184039&amp;goto=newpost</link>
			<pubDate>Tue, 02 Jun 2026 16:01:59 GMT</pubDate>
			<description>*Conçu pour la productivité :...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Conçu pour la productivité : ce que les données révèlent sur Kotlin, selon une étude de JetBrains</font></b><br />
<br />
<b>Les années passées à concevoir un langage axé sur la productivité se reflètent désormais dans les données.</b><br />
<br />
Kotlin est un langage de programmation multiplateforme, de haut niveau, à usage général et à typage statique, doté d'une inférence de types. Kotlin est conçu pour interagir pleinement avec Java, et la version pour la machine virtuelle Java (JVM) de la bibliothèque standard de Kotlin s'appuie sur la bibliothèque de classes Java. Cependant, l'inférence de types permet une syntaxe plus concise. Kotlin cible principalement la JVM, mais se compile également en JavaScript (par exemple, pour les applications web front-end utilisant React) ou en code natif via LLVM (par exemple, pour les applications iOS natives partageant une logique métier avec des applications Android). JetBrains prend en charge les coûts de développement du langage, tandis que la Fondation Kotlin protège la marque Kotlin.<br />
<br />
Le pragmatisme est au cœur de la conception de Kotlin depuis le tout début. Le langage privilégie la commodité et la productivité du développeur plutôt que la pureté théorique ou l’ambition de proposer de nouvelles fonctionnalités.<br />
<br />
Les développeurs décrivent leur expérience avec Kotlin de manière assez uniforme : plus de temps consacré à ce qu’ils cherchent à créer, moins de temps perdu en formalités. Il y a moins de rituels à accomplir pour satisfaire le compilateur, et moins de code standard à écrire avant d'en venir à l'essentiel. Pendant des années, la question intéressante était de savoir si cet effet serait également visible à grande échelle.<br />
<br />
Nous disposons désormais de données. Une récente étude de JetBrains Research a mesuré le temps écoulé entre la première modification et la validation sur environ 28 millions d'exemples. Pour un travail comparable, les développeurs Kotlin ont passé environ 15 % à 20 % de temps en moins que les développeurs travaillant en Java.<br />
<br />
Cet écart est d’autant plus important aujourd’hui que de plus en plus de code est écrit par des agents IA et que les développeurs consacrent davantage de temps à lire, réviser et vérifier le code. Nous y reviendrons à la fin.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676684d1780419462/autres-langages/autres-langages/kotlin/concu-productivite-donnees-revelent-kotlin-selon-etude-jetbrains/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 34617
Taille : 34,7 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">La productivité par conception : un bref historique</font></b><br />
<br />
Le pragmatisme se concrétise lorsque l’on examine les fonctionnalités qu’il produit. Voici cinq exemples tirés de plus d’une décennie de décisions de conception du langage et de l’écosystème.<br />
<br />
<b>Les classes de données</b><br />
<br />
Certains modèles se répètent dans toutes les bases de code. Objets de valeur, DTO, enveloppes de message et enregistrements de configuration : Kotlin capture ces formes en une seule déclaration.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #0000ff;">data</span> <span style="color: #0000ff;">class</span> User<span class="br0">&#40;</span><span style="color: #0000ff;">val</span> id: <span style="color: #0080ff;">Long</span>, <span style="color: #0000ff;">val</span> name: <span style="color: #0080ff;">String</span>, <span style="color: #0000ff;">val</span> email: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span></code><hr />
</div><br />
<br />
Une seule ligne, un comportement de type valeur et un minimum de code standard. Vous bénéficiez automatiquement de l'égalité, du hachage, de la déstructuration structurelle, de toString() et d'un constructeur copy(). Ajouter un champ ne signifie pas réécrire six méthodes à la main.<br />
<br />
<b>Sécurité null</b><br />
<br />
Le système de types de Kotlin vérifie si une valeur peut être absente, et le compilateur ne vous laisse pas ignorer la question. Toute une catégorie d’erreurs d’exécution devient un retour d’information à la compilation.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #0000ff;">val</span> length: <span style="color: #0080ff;">Int</span> = user?.profile?.email?.length ?: 0</code><hr />
</div><br />
<br />
Une chaîne nullable s’exprime en une seule ligne, et le compilateur vérifie chaque étape. Les valeurs manquantes apparaissent à la compilation, et non plus tard en production.<br />
<br />
<b>Les petits gains</b><br />
<br />
Une poignée de fonctionnalités éliminent discrètement les frictions à chaque point d'appel. Les conversions intelligentes éliminent la saisie redondante une fois que la vérification de type a déjà eu lieu. Les arguments nommés avec des valeurs par défaut rendent la configuration lisible sans passer par la cérémonie du constructeur. Les lambdas en fin de ligne transforment les API basées sur des blocs en quelque chose qui se lit comme un flux de contrôle ordinaire.<br />
<br />
Chacune de ces fonctionnalités est mineure. Ensemble, elles façonnent l'apparence d'une fonction typique :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">fun</span> createUser<span class="br0">&#40;</span>
    name: <span style="color: #0080ff;">String</span>,
    role: Role = Role.MEMBER,
    email: <span style="color: #0080ff;">String</span>? = <span style="color: #0000ff;">null</span>,
<span class="br0">&#41;</span> = transaction <span class="br0">&#123;</span>                       <span style="color: #808080;">// trailing lambda</span>
    <span style="color: #0000ff;">val</span> user = Users.insert<span class="br0">&#40;</span>name, role, email<span class="br0">&#41;</span>
    <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>email != <span style="color: #0000ff;">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>                <span style="color: #808080;">// smart cast: email is now String</span>
        sendWelcome<span class="br0">&#40;</span>email.lowercase<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
    user
<span class="br0">&#125;</span>
&nbsp;
createUser<span class="br0">&#40;</span>name = <span style="color: #FF0000;">&quot;Anton&quot;</span>, role = Role.ADMIN<span class="br0">&#41;</span>   <span style="color: #808080;">// named args + default</span></pre></td></tr></table></code><hr />
</div><br />
<br />
<i>Trois fonctionnalités se combinent en une seule fonction courte et lisible.</i><br />
<br />
<b>Coroutines et concurrence structurée</b><br />
<br />
Le traitement asynchrone en Kotlin se lit comme du code ordinaire. Les fonctions suspendues semblent séquentielles mais s’exécutent en parallèle, et la concurrence structurée lie chaque opération asynchrone à la portée qui l’a lancée – ainsi, rien ne s’échappe pour s’exécuter en arrière-plan sans être remarqué.<br />
<br />
<b>Les DSL comme idiome de premier ordre</b><br />
<br />
La productivité ne s’est pas arrêtée au langage. Les mêmes choix syntaxiques – lambdas en fin de ligne, fonctions d’extension, constructeurs typés – favorisent également une culture des DSL adaptés aux EDI dans tout l’écosystème : scripts de build Gradle, interface utilisateur Compose, routage Ktor, SQL exposé, et constructeurs HTML et JSON. Chacun constitue une surface de configuration que le compilateur interprète comme du code natif, et non comme un format distinct à mémoriser. <br />
<br />
Aucun de ces éléments n’est une victoire isolée. Chacun est le fruit du même engagement envers le pragmatisme. La suite de cet article examine à quoi ressemble cet engagement dans son ensemble.<br />
<br />
<b><font size="3">La question à laquelle les témoignages ne pouvaient répondre</font></b><br />
<br />
Les développeurs décrivent Kotlin ainsi depuis des années : <i>moins de formalités et plus de temps consacré au travail réel.</i> Mais une description n’est pas une mesure. La question de savoir si le même effet se traduirait également en chiffres, à une échelle où l’opinion d’une seule équipe ne domine pas, est tout autre.<br />
<br />
Les témoignages ne sont pas représentatifs, et l’auto-évaluation comporte des biais connus, dont le plus évident : les personnes qui choisissent Kotlin veulent que ce choix soit justifié. Un biais plus subtil est que les développeurs qui ont brièvement essayé Kotlin avant de revenir en arrière risquent de ne jamais être pris en compte dans l’échantillon. C’est là qu’une étude peut combler le fossé.<br />
<br />
<b><font size="3">Ce qu’a révélé l’étude</font></b><br />
<br />
Dans une étude récente, l’équipe JetBrains Research a analysé les données télémétriques d’IntelliJ IDEA Ultimate sur une période de 20 mois, de novembre 2023 à juin 2025, couvrant environ 320 000 développeurs et 28 millions de cycles de développement. Dans cette étude, un cycle correspond au temps écoulé entre la première modification d’un fichier source après un push et le push suivant sur ce fichier.<br />
<br />
Pour les petites tâches (environ dix minutes de modification), les cycles Kotlin étaient en moyenne environ 15,7 % plus courts que ceux de Java. Pour les tâches de durée moyenne (environ une demi-heure), ils étaient environ 20,3 % plus courts. Pour les tâches volumineuses (une heure et demie à deux heures), ils étaient environ 15,1 % plus courts. En termes absolus, cela représente une ou deux minutes de gain pour une correction courte, cinq à sept minutes pour une correction moyenne et 15 à 20 minutes pour une correction longue – un gain qui se répète de nombreuses fois au cours d’une journée de travail et d’un trimestre. La même tendance s’est maintenue quelle que soit la taille des tâches et tout au long de la période de 20 mois.<br />
<br />
Les questions qui viennent à l’esprit sont légitimes. Les projets Kotlin et Java ne sont-ils pas de tailles différentes ? Les développeurs n’ont-ils pas des niveaux d’expérience différents ? Certaines équipes Kotlin ne sont-elles pas simplement plus récentes ou mieux dotées en ressources que les équipes Java auxquelles elles sont comparées ?<br />
<br />
Des efforts considérables ont été déployés pour écarter ces facteurs. L’étude a comparé les mêmes développeurs avant et après leur migration de Java vers Kotlin, par rapport à des développeurs restés sur Java pendant la même période – une conception longitudinale qui isole le changement de langage des différences entre équipes ou projets. Le travail a été classé par taille de tâche, de sorte que la comparaison n’opposait pas une modification d’une ligne à la création d’une fonctionnalité. La version du JDK a été utilisée comme indicateur de la culture d’ingénierie, la comparaison ayant été effectuée à la fois avec et sans ce contrôle. La tendance s’est confirmée.<br />
<br />
La méthodologie complète – la conception longitudinale, les contrôles, les vérifications de validité et les limites de ce que l’étude peut et ne peut pas affirmer – se trouve dans l’article de JetBrains Research. Tout ce qui suit correspond à la manière dont nous, du côté de Kotlin, interprétons ces résultats.<br />
<br />
<b><font size="3">La conclusion principale : les projets Kotlin ne ralentissent pas</font></b><br />
<br />
Un écart de 15 % à 20 % sur les tâches individuelles est réel, mais ce n’est pas le plus important. La conclusion principale réside dans la trajectoire. En examinant comment le même type de travail évolue au cours de la durée de vie d’un projet, les données racontent une histoire différente de celle que révèlent les chiffres ponctuels.<br />
<br />
Dans l'échantillon de l'étude, les projets Java ont ralenti au cours de la période de 20 mois. Les cycles se sont allongés de 9 % à 17 % à mesure que les bases de code s'étoffaient, qu'il s'agisse de tâches de petite, moyenne ou grande envergure. La même tendance se retrouve dans des segments indépendants des données : plus un projet Java vieillit, plus le même type de travail prend du temps. Les projets Kotlin n'ont pratiquement pas montré ce ralentissement. Certains développeurs ayant migré vers Kotlin ont même progressé au cours de la même période, travaillant plus rapidement sur des tâches comparables à la fin de la période qu’au début.<br />
<br />
Cela correspond à ce que nous entendons depuis des années du côté de la maintenabilité : <i>le code Kotlin est plus facile à maintenir. Vous pouvez y revenir six mois plus tard et comprendre encore ce que vous avez écrit.</i> <br />
<br />
Jusqu’à présent, ces rapports coexistaient avec les rapports sur la productivité en tant qu’observations distinctes. Ils apparaissent de plus en plus comme la même conclusion vue sous deux angles différents.<br />
<br />
Voici notre interprétation de ce phénomène – il s’agit explicitement de la nôtre, et non d’une conclusion que l’étude cherchait à prouver. Le code Kotlin exprime l’intention plus clairement que le code Java équivalent. Les types contiennent davantage d’informations. Les idiomes sont plus uniformes entre les équipes et au fil du temps. Une moindre partie du travail est codée dans des modèles que le lecteur suivant doit reconstruire. <br />
<br />
Si cette interprétation est correcte, le résultat de la trajectoire prend tout son sens. Une base de code qui reste lisible n’accumule pas le genre de friction qui transforme lentement une modification de 10 minutes en une de 15 minutes. La différence n’est peut-être pas perceptible dès le premier jour. Mais à grande échelle, l’effet cumulatif est indéniable !<br />
<br />
<b><font size="3">Ce que cela signifie à l’ère de l’IA</font></b><br />
<br />
À mesure que la rédaction assistée par l’IA et les workflows agentiques se généralisent, les développeurs passent plus de temps à réviser, intégrer, rejeter et ajuster le code qu’à l’écrire eux-mêmes. Même au sein des équipes qui n’ont pas adopté les agents à grande échelle, cette évolution modifie la répartition des activités quotidiennes. Une part croissante du travail du développeur consiste à décider si ce code a sa place.<br />
<br />
Deux faits bien établis coexistent. Premièrement, les développeurs passent la majeure partie de leur temps à lire du code plutôt qu’à l’écrire. La règle des 80/20 est un lieu commun dans le secteur pour une bonne raison : elle ressort des études, des rétrospectives et de tout bilan honnête de la façon dont une journée de travail est passée. Deuxièmement, pour un travail comparable, les développeurs Kotlin parcourent leurs cycles de manière significativement plus rapide que les développeurs Java.<br />
<br />
L'interprétation raisonnable est que le temps gagné est du temps de lecture. C'est à la lecture que passe la majeure partie du temps, et Kotlin semble accélérer ce processus.<br />
<br />
Dans les flux de travail axés sur l'agent, cela revêt une importance encore plus grande. La révision du code d'une modification générée par l'IA consiste à lire. Vérifier qu'une implémentation proposée fait bien ce qu'elle prétend faire consiste à lire. L'intégrer dans un système existant consiste à lire. Rejeter une mauvaise suggestion commence par la lecture. La part de la semaine d'un développeur consacrée à la saisie est en baisse depuis deux décennies, et elle s'effondre aujourd'hui. Le temps passé à lire et à comprendre suit une tendance inverse.<br />
<br />
Les langages qui vous permettent de lire plus vite – et de faire confiance à ce que vous lisez – sont bien plus intéressants pour le développement logiciel moderne.<br />
<br />
Kotlin offre également davantage de garanties statiques dès l'installation. La non-nullabilité est appliquée au niveau des types. Le rétrécissement de type se produit automatiquement une fois que vous avez vérifié un type. Les hiérarchies scellées, associées à des expressions « when » exhaustives, permettent de répondre à la question « L'agent a-t-il oublié un cas ? » dès la phase de compilation. Les mêmes fonctionnalités qui rendent le code Kotlin plus rapide à lire le rendent également plus rapide à vérifier mécaniquement, par le compilateur avant la révision, puis par le réviseur humain par la suite.<br />
<br />
Ce type de sécurité est vraiment payant lorsque vous n’avez pas écrit le code vous-même.<br />
<br />
L’avantage en termes de productivité mis en évidence par les données était bien réel avant l’IA, et l’évolution du développement logiciel pourrait rendre cet avantage plus important que jamais. L'écart du premier jour, l'avantage de la trajectoire et le cas du flux de travail agentique vont tous dans la même direction.<br />
<br />
<b><font size="3">Conclusion</font></b><br />
<br />
<b>Pour les développeurs</b> : la discussion au sein de l'équipe, qui repose depuis des années sur l'intuition, s'appuie désormais sur des chiffres. La prochaine fois que la question se posera de savoir si Kotlin est réellement rentable pour une équipe Java, vous pourrez fonder votre réponse sur des données concrètes.<br />
<br />
<b>Pour les responsables techniques</b> : les arguments quantitatifs en faveur d’un nouveau service JVM sont désormais visibles. L’effet « day-one » plus faible et l’effet de trajectoire plus important jouent tous deux en votre faveur. Le second est le plus important pour tout ce que vous comptez maintenir au-delà d’un an.<br />
<br />
Le pragmatisme a donné naissance à un langage dont les avantages s’accumulent avec le temps – et qui prend de l’importance, et non l’inverse, à mesure que le rôle du développeur évolue.<br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7038" target="_blank">En savoir plus sur le développement back-end avec Kotlin</a><br />
<br />
:fleche: <a href="https://www.developpez.com/redirect/7039" target="_blank">Essayer Kotlin en ligne</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676684d1780419462/autres-langages/autres-langages/kotlin/concu-productivite-donnees-revelent-kotlin-selon-etude-jetbrains/1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2273/autres-langages/autres-langages/kotlin/">Kotlin</category>
			<dc:creator>JetBrains</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184039/autres-langages/autres-langages/kotlin/concu-productivite-donnees-revelent-kotlin-selon-etude-jetbrains/</guid>
		</item>
		<item>
			<title>Kotlin 2.3.20 apporte la prise en charge de Gradle 9.3.0 et la déstructuration par nom</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182723&amp;goto=newpost</link>
			<pubDate>Wed, 18 Mar 2026 10:39:03 GMT</pubDate>
			<description>*La version 2.3.20 du langage...</description>
			<content:encoded><![CDATA[<div><b><font size="4">La version 2.3.20 du langage de programmation Kotlin est disponible et apporte la prise en charge de Gradle 9.3.0, introduit le plugin de compilation Lombok ainsi que déstructuration basée sur les noms</font></b><br />
<br />
<b>La version 2.3.20 de Kotlin est disponible. Voici les principales nouveautés : Gradle : compatibilité avec Gradle 9.3.0 et utilisation par défaut de BTA pour la compilation Kotlin/JVM, Maven : configuration simplifiée pour les projets Kotlin, Plugins du compilateur Kotlin : Lombok est en version Alpha et prise en charge JPA améliorée dans le plugin kotlin.plugin.jpa, Langage : prise en charge des déclarations de déstructuration basées sur les noms, Bibliothèque standard : nouvelle API pour créer des copies immuables de Map.Entry, Kotlin/Native : nouveau mode d'interopérabilité pour les bibliothèques C et Objective-C.</b><br />
<br />
Kotlin est un langage de programmation orienté objet et fonctionnel, avec un typage statique qui permet de compiler pour la machine virtuelle Java, JavaScript, et vers plusieurs plateformes en natif (grâce à LLVM). Son développement provient principalement d'une équipe de programmeurs chez JetBrains. Google a annoncé pendant la conférence Google I/O 2017 que Kotlin devient le second langage de programmation officiellement pris en charge par Android après Java. Le 8 mai 2019, toujours lors de la conférence Google I/O, Kotlin devient officiellement le langage de programmation voulu et recommandé par le géant américain Google pour le développement des applications Android.<br />
<br />
Récemment, la version 2.3.20 du langage de programmation Kotlin est disponible. Kotlin 2.3.20 ajoute la compatibilité avec Gradle 9.3.0, et la compilation Kotlin/JVM utilise désormais par défaut l'API Build tools. Les déclarations de déstructuration basée sur les noms sont désormais prises en charge, et les utilisateurs de Maven bénéficient d'une configuration de projet simplifiée. Les développeurs disposent également d'une nouvelle API de bibliothèque standard pour créer des copies immuables de Map.Entry. <br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p675055d1773834385/autres-langages/autres-langages/kotlin/kotlin-2-3-20-apporte-prise-charge-gradle-9-3-0-destructuration-nom/1.jpg/" border="0" alt="Nom : 1.jpg
Affichages : 8313
Taille : 48,8 Ko"  style="float: CONFIG" /></div><br />
Voici les mises à jour de Kotlin 2.3.20&#65279; :<br />
<br />
<b><font size="3">Maven : Configuration simplifiée pour les projets Kotlin&#65279; (version stable)</font></b><br />
<br />
Kotlin 2.3.20 facilite la configuration de Kotlin dans les projets Maven. Kotlin prend désormais en charge la configuration automatique des répertoires racines des sources et de la bibliothèque standard de Kotlin.<br />
<br />
Grâce à cette nouvelle configuration automatique, lorsque vous créez un nouveau projet Kotlin avec le système de build Maven ou que vous intégrez Kotlin à votre projet Java Maven existant, vous n'avez plus besoin de spécifier manuellement les chemins d'accès aux sources ni d'ajouter la dépendance <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kotlin-stdlib</span> dans votre fichier de build POM.<br />
<br />
<b>Comment l'activer&#65279;</b><br />
<br />
Dans votre fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">pom.xml</span>, ajoutez <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">&lt;extensions&gt;<span style="color: #0000ff;">true</span>&lt;/extensions&gt;</span> à la section <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">&lt;build&gt;&lt;plugins&gt;</span> du plugin Kotlin Maven :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td valign="top"><pre style="margin: 0">&lt;build&gt;
    &lt;plugins&gt;
         &lt;plugin&gt;
             &lt;groupId&gt;org.jetbrains.kotlin&lt;/groupId&gt;
             &lt;artifactId&gt;kotlin-maven-plugin&lt;/artifactId&gt;
             &lt;version&gt;<span style="color: #cc66cc;">2.3</span>.<span style="color: #cc66cc;">20</span>&lt;/version&gt;
             &lt;extensions&gt;<span style="color: #0000ff;">true</span>&lt;/extensions&gt; &lt;!-- Add <span style="color: #0000ff;">this</span> extension  --&gt;
         &lt;/plugin&gt;
    &lt;/plugins&gt;
&lt;/build&gt;</pre></td></tr></table></code><hr />
</div><br />
<br />
La nouvelle extension effectue automatiquement les opérations suivantes :<br />
<br />
- Enregistre les répertoires <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">src/main/kotlin</span> et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">src/test/kotlin</span> comme racines de source s'ils existent déjà mais ne sont pas spécifiés dans la configuration du plugin.<br />
<br />
- Ajoute la dépendance <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">kotlin-stdlib</span> si elle n'est pas déjà explicitement définie.<br />
<br />
Vous pouvez également désactiver l'ajout automatique de la bibliothèque standard de Kotlin. Pour cela, ajoutez ce qui suit à la section <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">&lt;properties&gt;</span> :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&lt;project&gt;
    &lt;properties&gt;
        &lt;!-- Disable smart defaults via <span style="color: #0000ff;">property</span> --&gt;
        &lt;kotlin.smart.defaults.enabled&gt;<span style="color: #0000ff;">false</span>&lt;/kotlin.smart.defaults.enabled&gt;
    &lt;/properties&gt;
&lt;/project&gt;</pre></td></tr></table></code><hr />
</div><br />
<br />
Notez que cette propriété désactive toutes les fonctionnalités de configuration simplifiée, y compris l'enregistrement des chemins d'accès aux racines de source.<br />
<br />
<b><font size="3">Compilateur : Lombok est désormais en version Alpha&#65279; (version Alpha)</font></b><br />
<br />
Kotlin 1.5.20 a introduit le plugin de compilation Lombok expérimental, qui vous permet de générer et d'utiliser les déclarations Lombok de Java dans des modules mélangeant du code Kotlin et Java.<br />
<br />
Dans la version 2.3.20, le plugin de compilation Lombok a été promu au statut Alpha car nous prévoyons de rendre cette fonctionnalité prête pour la production, mais elle est toujours en cours de développement.<br />
<br />
<b><font size="3">Langage : Déstructuration basée sur les noms&#65279; (Expérimental)</font></b><br />
<br />
Kotlin 2.3.20 introduit les déclarations de déstructuration basées sur les noms, qui associent les variables aux noms de propriétés au lieu de s'appuyer sur les fonctions <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">componentN<span class="br0">&#40;</span><span class="br0">&#41;</span></span> basées sur la position.<br />
<br />
Auparavant, les déclarations de déstructuration utilisaient la déstructuration basée sur la position :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">data</span> <span style="color: #0000ff;">class</span> User<span class="br0">&#40;</span><span style="color: #0000ff;">val</span> username: <span style="color: #0080ff;">String</span>, <span style="color: #0000ff;">val</span> email: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>
&nbsp;
<span style="color: #0000ff;">fun</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #0000ff;">val</span> user = User<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;alice&quot;</span>, <span style="color: #FF0000;">&quot;alice@example.com&quot;</span><span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">val</span> <span class="br0">&#40;</span>email, username<span class="br0">&#41;</span> = user
&nbsp;
    println<span class="br0">&#40;</span>email<span class="br0">&#41;</span>
    <span style="color: #808080;">// alice</span>
&nbsp;
    println<span class="br0">&#40;</span>username<span class="br0">&#41;</span>
    <span style="color: #808080;">// alice@example.com</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
Dans cet exemple, comme la déstructuration repose sur l'ordre des fonctions <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">componentN<span class="br0">&#40;</span><span class="br0">&#41;</span></span>, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">email</span> reçoit la valeur de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">username</span>, et <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">username</span> reçoit la valeur de email.<br />
<br />
À partir de Kotlin 2.3.20, vous pouvez utiliser la déstructuration basée sur les noms, où chaque variable fait référence à une propriété par son nom :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">fun</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #0000ff;">val</span> user = User<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;alice&quot;</span>, <span style="color: #FF0000;">&quot;alice@example.com&quot;</span><span class="br0">&#41;</span>
&nbsp;
    <span style="color: #808080;">// Uses name-based destructuring with explicit form</span>
    <span class="br0">&#40;</span><span style="color: #0000ff;">val</span> mail = email, <span style="color: #0000ff;">val</span> name = username<span class="br0">&#41;</span> = user
&nbsp;
    println<span class="br0">&#40;</span>name<span class="br0">&#41;</span>
    <span style="color: #808080;">// alice</span>
&nbsp;
    println<span class="br0">&#40;</span>mail<span class="br0">&#41;</span>
    <span style="color: #808080;">// alice@example.com</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
La déstructuration basée sur les noms est expérimentale. Vous pouvez contrôler la manière dont le compilateur interprète les déclarations de déstructuration à l'aide de l'option de compilation <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">-Xname-based-destructuring</span>.<br />
<br />
Elle dispose des modes suivants :<br />
<br />
- <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">only-syntax</span> active la forme explicite de la déstructuration basée sur les noms sans modifier le comportement des déclarations de déstructuration existantes.<br />
<br />
- <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">name-mismatch</span> génère des avertissements lorsque la déstructuration basée sur la position dans les classes de données utilise des noms de variables qui ne correspondent pas aux noms de propriétés.<br />
<br />
- <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">complete</span> active la déstructuration basée sur les noms sous forme abrégée avec des parenthèses et continue de prendre en charge la déstructuration basée sur la position avec la syntaxe des crochets.<br />
<br />
Si vous utilisez le mode <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">complete</span>, la syntaxe de déstructuration abrégée avec des parenthèses fait correspondre les variables aux noms de propriétés au lieu de se baser sur la position :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #0000ff;">val</span> <span class="br0">&#40;</span>email, username<span class="br0">&#41;</span> = user</code><hr />
</div><br />
<br />
<b><font size="3">Bibliothèque standard : Nouvelle API pour créer des copies immuables de Map.Entry&#65279; (Expérimental)</font></b><br />
<br />
Kotlin 2.3.20 introduit la fonction d'extension <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Map.Entry.copy<span class="br0">&#40;</span><span class="br0">&#41;</span></span> permettant de créer une copie immuable d'un objet <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Map.Entry</span>. Cette fonction vous permet de réutiliser les entrées obtenues à partir de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Map.entries</span> après avoir modifié la carte, en les copiant au préalable.<br />
<br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Map.Entry.copy<span class="br0">&#40;</span><span class="br0">&#41;</span></span> est une fonctionnalité expérimentale. Pour l'activer, utilisez l'annotation <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #339933;">@</span><span style="color: #339933;">OptIn<span class="br0">&#40;</span>ExperimentalStdlibApi::<span style="color: #0000ff;">class</span><span class="br0">&#41;</span></span></span> ou l'option du compilateur :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">-opt-<span style="color: #0000ff;">in</span>=kotlin.ExperimentalStdlibApi</code><hr />
</div><br />
<br />
Voici un exemple d'utilisation de <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Map.Entry.copy<span class="br0">&#40;</span><span class="br0">&#41;</span></span> pour supprimer des entrées d'une carte mutable :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">@</span><span style="color: #339933;">OptIn<span class="br0">&#40;</span>ExperimentalStdlibApi::<span style="color: #0000ff;">class</span><span class="br0">&#41;</span></span>
<span style="color: #0000ff;">fun</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span style="color: #0000ff;">val</span> map = mutableMapOf<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span> to <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">2</span> to <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span> to <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span> to <span style="color: #cc66cc;">4</span><span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">val</span> toRemove = map.entries
        .filter <span class="br0">&#123;</span> <span style="color: #0000ff;">it</span>.key % <span style="color: #cc66cc;">2</span> == <span style="color: #cc66cc;">0</span> <span class="br0">&#125;</span>
        .map <span class="br0">&#123;</span> <span style="color: #0000ff;">it</span>.copy<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#125;</span>
&nbsp;
    map.entries.removeAll<span class="br0">&#40;</span>toRemove<span class="br0">&#41;</span>
&nbsp;
    println<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;map = <span style="color: #800000;">$map</span>&quot;</span><span class="br0">&#41;</span>
    <span style="color: #808080;">// map = {1=1, 3=3}</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
<b><font size="3">Kotlin/Native : Nouveau mode d'interopérabilité pour les bibliothèques C ou Objective-C&#65279; (Experimental)</font></b><br />
<br />
Si vous utilisez des bibliothèques C ou Objective-C dans vos bibliothèques ou applications Kotlin Multiplatform (KMP), vous êtes invités à tester le nouveau mode d'interopérabilité et à partager vos résultats.<br />
<br />
En général, Kotlin/Native permet d'importer des bibliothèques C et Objective-C dans Kotlin. Cependant, pour les bibliothèques KMP, cette fonctionnalité est actuellement affectée par des problèmes de compatibilité KMP avec les anciennes versions du compilateur.<br />
<br />
En d'autres termes, si vous publiez une bibliothèque KMP compilée avec une version de Kotlin, l'importation de bibliothèques C ou Objective-C pourrait rendre impossible l'utilisation de cette bibliothèque Kotlin dans des projets utilisant une version antérieure de Kotlin.<br />
<br />
Pour résoudre ce problème et d'autres, l'équipe Kotlin a revu le mécanisme d'interopérabilité utilisé en arrière-plan. À partir de Kotlin 2.3.20, vous pouvez essayer le nouveau mode via une option du compilateur.<br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://kotlinlang.org/docs/whatsnew2320.html#kotlin-compiler-plugins" target="_blank">Annonce de Kotlin 2.3.20</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que cette version est crédible ou pertinente ?<br />
:fleche: Quel est votre avis sur le sujet ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://kotlin.developpez.com/actu/375747/La-version-2-2-20-de-Kotlin-est-disponible-et-introduit-WebAssembly-en-version-beta-l-exportation-Swift-disponible-par-defaut-et-une-compilation-multiplateforme-stable-pour-les-bibliotheques-Kotlin/" target="_blank">La version 2.2.20 de Kotlin est disponible et introduit WebAssembly en version bêta, l'exportation Swift disponible par défaut, et une compilation multiplateforme stable pour les bibliothèques Kotlin</a><br />
<br />
:fleche: <a href="https://programmation.developpez.com/actu/362726/La-derniere-mise-a-jour-du-classement-Redmonk-suggere-que-les-langages-Kotlin-et-Scala-bases-sur-la-JVM-connaissent-un-regain-de-popularite-tandis-que-Rust-stagne-et-le-C-semble-confronte-a-des-defis/" target="_blank">La dernière mise à jour du classement Redmonk suggère que les langages Kotlin et Scala basés sur la JVM connaissent un regain de popularité, tandis que Rust stagne et le C semble confronté à des défis</a><br />
<br />
:fleche: <a href="https://kotlin.developpez.com/actu/350909/Kotlin-continue-son-ascension-dans-l-index-de-popularite-des-langages-de-programmation-de-TIOBE-le-rival-de-Java-se-hisse-a-la-15e-place-dans-le-classement-de-novembre-2023/" target="_blank">Kotlin continue son ascension dans l'index de popularité des langages de programmation de TIOBE. Le rival de Java se hisse à la 15e place dans le classement de novembre 2023</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675055d1773834385/autres-langages/autres-langages/kotlin/kotlin-2-3-20-apporte-prise-charge-gradle-9-3-0-destructuration-nom/1.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2273/autres-langages/autres-langages/kotlin/">Kotlin</category>
			<dc:creator>Alex</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182723/autres-langages/autres-langages/kotlin/kotlin-2-3-20-apporte-prise-charge-gradle-9-3-0-destructuration-nom/</guid>
		</item>
		<item>
			<title><![CDATA[Kotlin 2.2.20 introduit WebAssembly en version bêta, l'exportation Swift disponible par défaut]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179221&amp;goto=newpost</link>
			<pubDate>Fri, 12 Sep 2025 18:46:04 GMT</pubDate>
			<description>*La version 2.2.20 de Kotlin...</description>
			<content:encoded><![CDATA[<div><b><font size="4">La version 2.2.20 de Kotlin est disponible et introduit WebAssembly en version bêta, l'exportation Swift disponible par défaut, et une compilation multiplateforme stable pour les bibliothèques Kotlin</font></b><br />
<br />
<b>La version 2.2.20 de Kotlin est disponible et apporte des changements importants pour le développement web. Kotlin/Wasm est désormais en version bêta, avec des améliorations au niveau de la gestion des exceptions dans l'interopérabilité JavaScript, la gestion des dépendances npm, la prise en charge intégrée du débogage du navigateur et un nouvel ensemble de sources partagées pour les cibles js et wasmJs.</b><br />
<br />
La version 2.2.20 de Kotlin apporte des avancées substantielles pour le développement web et multiplateforme. À la tête de cette version, la prise en charge de WebAssembly (Wasm) a atteint le statut bêta, apportant une gestion améliorée des exceptions dans l'interopérabilité JavaScript, une gestion améliorée des dépendances npm, des outils de débogage intégrés au navigateur et un ensemble de sources partagé pour les cibles js et wasmJs.<br />
<br />
S'appuyant sur ces changements, Kotlin permet désormais l'exportation Swift par défaut et offre une compilation multiplateforme stable pour les bibliothèques Kotlin. Les développeurs bénéficient également d'une nouvelle approche pour déclarer les dépendances communes, ce qui facilite la gestion du code partagé entre les plateformes telles qu'iOS et Android. Dans le domaine du développement du langage de base, la résolution des surcharges a été affinée pour les scénarios où des lambdas sont passés à des surcharges avec des types de fonctions suspendues, améliorant ainsi la clarté et la maintenabilité du code.<br />
<br />
À la suite de ces mises à jour, Kotlin bénéficie d'améliorations en matière de sécurité et de performances : les binaires prennent désormais en charge les stack canaries, et les binaires de publication sont nettement plus petits, ce qui peut être avantageux pour les applications embarquées et sensibles aux performances. Kotlin peut également compiler directement les valeurs longues dans le type JavaScript BigInt, résolvant ainsi un problème majeur de compatibilité numérique dans les projets web.<br />
<br />
Afin de faciliter son adoption, le plugin Kotlin 2.2.20 est fourni avec les dernières versions d'IntelliJ IDEA et d'Android Studio, ce qui permet aux développeurs Kotlin les plus actifs d'accéder immédiatement aux nouvelles fonctionnalités.<br />
<br />
<div style="text-align: center;">
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/jne3923lWtw?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div><br />
<b><font size="3">Kotlin/Wasm&#65279;</font></b><br />
<br />
Kotlin/Wasm est désormais en version bêta et offre une plus grande stabilité ainsi que des améliorations telles que des dépendances npm séparées, une gestion affinée des exceptions pour l'interopérabilité JavaScript, une prise en charge intégrée du débogage du navigateur, et bien plus encore.<br />
<br />
<b>Dépendances npm séparées&#65279;</b><br />
<br />
Auparavant, dans vos projets Kotlin/Wasm, toutes les dépendances npm étaient installées ensemble dans le dossier de votre projet, y compris les dépendances des outils Kotlin et les vôtres. Elles étaient également enregistrées ensemble dans les fichiers de verrouillage de votre projet (<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">package</span>-lock.json</span> ou <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span>).<br />
<br />
Par conséquent, chaque fois que les dépendances des outils Kotlin étaient mises à jour, vous deviez mettre à jour vos fichiers de verrouillage, même si vous n'aviez rien ajouté ou modifié.<br />
<br />
À partir de Kotlin 2.2.20, les dépendances npm des outils Kotlin sont installées en dehors de votre projet. Désormais, les dépendances des outils et vos dépendances (utilisateur) ont des répertoires distincts :<br />
<br />
<ul><li style="">Répertoire des dépendances des outils : <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">&lt;kotlin-user-home&gt;/kotlin-npm-tooling/&lt;yarn|npm&gt;/hash/node_modules</span></li><li style="">Répertoire des dépendances utilisateur : <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">build/wasm/node_modules</span></li></ul><br />
De plus, les fichiers de verrouillage à l'intérieur du répertoire du projet ne contiennent que les dépendances définies par l'utilisateur.<br />
<br />
Cette amélioration permet à vos fichiers de verrouillage de se concentrer uniquement sur vos propres dépendances, contribue à maintenir un projet plus propre et réduit les modifications inutiles de vos fichiers.<br />
<br />
Cette modification est activée par défaut pour la cible <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">wasm-js</span>. Elle n'est pas encore implémentée pour la cible js. Bien qu'il soit prévu de l'implémenter dans les prochaines versions, le comportement des dépendances npm reste le même que précédemment pour la cible js dans Kotlin 2.2.20.<br />
<br />
<b>Amélioration de la gestion des exceptions dans l'interopérabilité Kotlin/Wasm et JavaScript</b><br />
<br />
Auparavant, Kotlin avait des difficultés à comprendre les exceptions (erreurs) levées dans JavaScript (JS) et à passer au code Kotlin/Wasm.<br />
<br />
Dans certains cas, le problème se produisait également dans le sens inverse, lorsqu'une exception était levée ou transmise par le code Wasm à JS et encapsulée dans <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">WebAssembly.Exception</span> sans aucun détail. Ces problèmes de gestion des exceptions Kotlin rendaient le débogage difficile.<br />
<br />
À partir de Kotlin 2.2.20, l'expérience des développeurs avec les exceptions s'améliore dans les deux sens :<br />
<br />
<ul><li style="">Lorsque des exceptions sont levées à partir de JS, vous pouvez voir plus d'informations du côté Kotlin. Lorsqu'une telle exception se propage via Kotlin vers JS, elle n'est plus encapsulée dans WebAssembly.<br />
<br /></li><li style="">Lorsque des exceptions sont levées depuis Kotlin, elles peuvent désormais être interceptées du côté JS en tant qu'erreurs JS.</li></ul><br />
La nouvelle gestion des exceptions fonctionne automatiquement dans les navigateurs modernes qui prennent en charge la fonctionnalité WebAssembly.JSTag :<br />
<br />
<ul><li style="">Chrome 115+<br /></li><li style="">Firefox 129+<br /></li><li style="">Safari 18.4+</li></ul><br />
Dans les navigateurs plus anciens, le comportement de gestion des exceptions reste inchangé.<br />
<br />
<b>Prise en charge du débogage dans les navigateurs sans configuration&#65279;</b><br />
<br />
Auparavant, les navigateurs ne pouvaient pas accéder automatiquement aux sources du projet Kotlin/Wasm nécessaires au débogage. Pour déboguer des applications Kotlin/Wasm dans le navigateur, vous deviez configurer manuellement votre build afin de servir ces sources en ajoutant l'extrait de code suivant à votre fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">build.gradle<span class="br0">&#40;</span>.kts<span class="br0">&#41;</span></span> :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">devServer = <span class="br0">&#40;</span>devServer ?: KotlinWebpackConfig.DevServer<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.apply <span class="br0">&#123;</span>
    static = <span class="br0">&#40;</span>static ?: mutableListOf<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.apply <span class="br0">&#123;</span>
        add<span class="br0">&#40;</span>project.rootDir.path<span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
À partir de Kotlin 2.2.20, le débogage de vos applications dans les navigateurs modernes fonctionne dès l'installation. Lorsque vous exécutez des tâches de développement Gradle (<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">*DevRun</span>), Kotlin fournit automatiquement les fichiers source au navigateur, ce qui vous permet de définir des points d'arrêt, d'inspecter des variables et de parcourir le code Kotlin sans configuration supplémentaire.<br />
<br />
Cette modification simplifie le débogage en supprimant la nécessité d'une configuration manuelle. La configuration requise est désormais incluse dans le plugin Kotlin Gradle. Si vous avez précédemment ajouté cette configuration à votre fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">build.gradle<span class="br0">&#40;</span>.kts<span class="br0">&#41;</span></span>, vous devez la supprimer pour éviter tout conflit.<br />
<br />
Le débogage dans les navigateurs est activé par défaut pour toutes les tâches Gradle <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">*DevRun</span>. Ces tâches fournissent non seulement l'application, mais aussi ses fichiers source. Utilisez-les donc uniquement pour le développement local et évitez de les exécuter dans des environnements cloud ou de production où les sources seraient exposées publiquement.<br />
<br />
<b>Gérer les rechargements répétés pendant le débogage</b><br />
<br />
La fourniture des sources par défaut peut entraîner des rechargements répétés de l'application dans le navigateur avant que la compilation et le regroupement Kotlin ne soient terminés. Pour contourner ce problème, ajustez votre configuration webpack afin d'ignorer les fichiers source Kotlin et désactivez la surveillance des fichiers statiques servis. Ajoutez un fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">.js</span> avec le contenu suivant dans le répertoire <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">webpack.config.d</span> à la racine de votre projet :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td valign="top"><pre style="margin: 0">config.watchOptions = config.watchOptions || <span class="br0">&#123;</span>
    ignored: <span class="br0">&#91;</span><span style="color: #FF0000;">&quot;**/*.kt&quot;</span>, <span style="color: #FF0000;">&quot;**/node_modules&quot;</span><span class="br0">&#93;</span>
<span class="br0">&#125;</span>
&nbsp;
<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>config.devServer<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    config.devServer.static = config.devServer.static.map<span class="br0">&#40;</span><span style="color: #0000ff;">file</span> =&gt; <span class="br0">&#123;</span>
        <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>typeof <span style="color: #0000ff;">file</span> === <span style="color: #FF0000;">&quot;string&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span style="color: #0000ff;">return</span> <span class="br0">&#123;</span> directory: <span style="color: #0000ff;">file</span>,
                 watch: <span style="color: #0000ff;">false</span>,
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span> <span style="color: #0000ff;">else</span> <span class="br0">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">file</span>
    <span class="br0">&#125;</span>
    <span class="br0">&#125;</span><span class="br0">&#41;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
<b>Suppression des fichiers <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span> vides&#65279;</b><br />
<br />
Auparavant, le plugin Kotlin Gradle (KGP) générait automatiquement un fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span> qui contenait des informations sur les paquets npm requis par la chaîne d'outils Kotlin, ainsi que toutes les dépendances npm existantes du projet ou des bibliothèques utilisées.<br />
<br />
Désormais, le KGP gère les dépendances de la chaîne d'outils séparément, et un fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span> au niveau du projet n'est plus généré, sauf si le projet comporte des dépendances npm.<br />
<br />
Le KGP crée automatiquement un fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span> lorsque des dépendances npm sont ajoutées, et supprime le fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">yarn.lock</span> lorsque les dépendances npm sont supprimées.<br />
<br />
Cette modification permet de nettoyer les structures des projets et facilite le suivi de l'introduction des dépendances npm réelles.<br />
<br />
Aucune étape supplémentaire n'est nécessaire pour configurer ce comportement. Il est appliqué par défaut dans les projets Kotlin/Wasm à partir de Kotlin 2.2.20.<br />
<br />
<b>Nouvelle erreur de compilation dans les noms de classe entièrement qualifiés&#65279;</b><br />
<br />
Sur Kotlin/Wasm, le compilateur ne stocke pas par défaut les noms entièrement qualifiés (FQN) des classes dans le binaire généré. Cette approche évite d'augmenter la taille de l'application.<br />
<br />
Par conséquent, dans les versions précédentes de Kotlin, l'appel de la propriété <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">KClass::qualifiedName</span> renvoyait une chaîne vide au lieu du nom qualifié de la classe.<br />
<br />
À partir de Kotlin 2.2.20, le compilateur signale une erreur lorsque vous utilisez la propriété <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">KClass::qualifiedName</span> dans les projets Kotlin/Wasm, sauf si vous activez explicitement la fonctionnalité des noms qualifiés.<br />
<br />
Cette modification empêche l'apparition de chaînes vides inattendues lors de l'appel de la propriété <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">qualifiedName</span> et améliore l'expérience des développeurs en détectant les problèmes au moment de la compilation.<br />
<br />
Le diagnostic est activé par défaut et les erreurs sont signalées automatiquement. Pour désactiver les diagnostics et autoriser le stockage des FQN dans Kotlin/Wasm, demandez au compilateur de stocker les noms complets de toutes les classes en ajoutant l'option suivante à votre fichier <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">build.gradle<span class="br0">&#40;</span>.kts<span class="br0">&#41;</span></span> :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">kotlin <span class="br0">&#123;</span>
    wasmJs <span class="br0">&#123;</span>
        ...
        compilerOptions <span class="br0">&#123;</span>
            freeCompilerArgs.add<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;-Xwasm-kclass-fqn&quot;</span><span class="br0">&#41;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
<br />
<b>Source</b> : <a rel="nofollow" href="https://kotlinlang.org/docs/whatsnew2220.html#improved-overload-resolution-for-lambdas-with-suspend-function-types" target="_blank">Annonce de Kotlin 2.2.20</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Pensez-vous que ces améliorations sont crédibles ou pertinentes ?<br />
:fleche: Quel est votre avis sur cette version ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://jetbrains.developpez.com/actu/373915/JetBrains-annonce-qu-IntelliJ-IDEA-son-EDI-pour-le-developpement-en-Java-et-Kotlin-passe-a-un-mode-de-distribution-unifie/" target="_blank">JetBrains annonce qu'IntelliJ IDEA, son EDI pour le développement en Java et Kotlin, passe à un mode de distribution unifié</a><br />
<br />
:fleche: <a href="https://programmation.developpez.com/actu/362726/La-derniere-mise-a-jour-du-classement-Redmonk-suggere-que-les-langages-Kotlin-et-Scala-bases-sur-la-JVM-connaissent-un-regain-de-popularite-tandis-que-Rust-stagne-et-le-C-semble-confronte-a-des-defis/" target="_blank">La dernière mise à jour du classement Redmonk suggère que les langages Kotlin et Scala basés sur la JVM connaissent un regain de popularité, tandis que Rust stagne et le C semble confronté à des défis</a><br />
<br />
:fleche: <a href="https://kotlin.developpez.com/actu/358442/Kotlin-2-0-est-disponible-avec-un-compilateur-K2-stable-plus-rapide-et-multiplateforme-des-sa-conception/" target="_blank">Kotlin 2.0 est disponible avec un compilateur K2 stable, plus rapide et multiplateforme dès sa conception</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2273/autres-langages/autres-langages/kotlin/">Kotlin</category>
			<dc:creator>Jade Emy</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179221/autres-langages/autres-langages/kotlin/kotlin-2-2-20-introduit-webassembly-version-beta-l-exportation-swift-disponible-defaut/</guid>
		</item>
	</channel>
</rss>
