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 nomsLa 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.
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.
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.
Voici les mises à jour de Kotlin 2.3.20 :
Maven : Configuration simplifiée pour les projets Kotlin (version stable)
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.
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 kotlin-stdlib dans votre fichier de build POM.
Comment l'activer
Dans votre fichier pom.xml, ajoutez <extensions>true</extensions> à la section <build><plugins> du plugin Kotlin Maven :
| Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | <build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>2.3.20</version>
<extensions>true</extensions> <!-- Add this extension -->
</plugin>
</plugins>
</build> |
La nouvelle extension effectue automatiquement les opérations suivantes :
- Enregistre les répertoires src/main/kotlin et src/test/kotlin comme racines de source s'ils existent déjà mais ne sont pas spécifiés dans la configuration du plugin.
- Ajoute la dépendance kotlin-stdlib si elle n'est pas déjà explicitement définie.
Vous pouvez également désactiver l'ajout automatique de la bibliothèque standard de Kotlin. Pour cela, ajoutez ce qui suit à la section <properties> :
| Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 | <project>
<properties>
<!-- Disable smart defaults via property -->
<kotlin.smart.defaults.enabled>false</kotlin.smart.defaults.enabled>
</properties>
</project> |
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.
Compilateur : Lombok est désormais en version Alpha (version Alpha)
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.
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.
Langage : Déstructuration basée sur les noms (Expérimental)
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 componentN() basées sur la position.
Auparavant, les déclarations de déstructuration utilisaient la déstructuration basée sur la position :
| Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | data class User(val username: String, val email: String) fun main() { val user = User("alice", "alice@example.com") val (email, username) = user println(email) // alice println(username) // alice@example.com } |
Dans cet exemple, comme la déstructuration repose sur l'ordre des fonctions componentN(), email reçoit la valeur de username, et username reçoit la valeur de email.
À 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 :
| Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | fun main() { val user = User("alice", "alice@example.com") // Uses name-based destructuring with explicit form (val mail = email, val name = username) = user println(name) // alice println(mail) // alice@example.com } |
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 -Xname-based-destructuring.
Elle dispose des modes suivants :
- only-syntax active la forme explicite de la déstructuration basée sur les noms sans modifier le comportement des déclarations de déstructuration existantes.
- name-mismatch 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.
- complete 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.
Si vous utilisez le mode complete, 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 :
| Code Kotlin : | Sélectionner tout |
val (email, username) = user
Bibliothèque standard : Nouvelle API pour créer des copies immuables de Map.Entry (Expérimental)
Kotlin 2.3.20 introduit la fonction d'extension Map.Entry.copy() permettant de créer une copie immuable d'un objet Map.Entry. Cette fonction vous permet de réutiliser les entrées obtenues à partir de Map.entries après avoir modifié la carte, en les copiant au préalable.
Map.Entry.copy() est une fonctionnalité expérimentale. Pour l'activer, utilisez l'annotation @OptIn(ExperimentalStdlibApi::class) ou l'option du compilateur :
| Code Kotlin : | Sélectionner tout |
-opt-in=kotlin.ExperimentalStdlibApiVoici un exemple d'utilisation de Map.Entry.copy() pour supprimer des entrées d'une carte mutable :
| Code Kotlin : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | @OptIn(ExperimentalStdlibApi::class)
fun main() {
val map = mutableMapOf(1 to 1, 2 to 2, 3 to 3, 4 to 4)
val toRemove = map.entries
.filter { it.key % 2 == 0 }
.map { it.copy() }
map.entries.removeAll(toRemove)
println("map = $map")
// map = {1=1, 3=3}
} |
Kotlin/Native : Nouveau mode d'interopérabilité pour les bibliothèques C ou Objective-C (Experimental)
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.
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.
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.
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.
Source : Annonce de Kotlin 2.3.20
Et vous ?
Pensez-vous que cette version est crédible ou pertinente ?
Quel est votre avis sur le sujet ?Voir aussi :
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
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
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
Vous avez lu gratuitement 6 016 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.