Kotlin 1.5.0 disponible
Découvrez les nouveautés et améliorations de la première version majeure du langage en 2021

Kotlin 1.5.0 est disponible et apporte de nouvelles fonctionnalités de langage. Cette version offre des fonctionnalités de langage stables, parmi lesquelles les enregistrements de la JVM, les interfaces scellées, les classes inline, et inclut le nouveau compilateur IR de la JVM par défaut.

Notons que plus de 25 000 développeurs ont déjà essayé le nouveau compilateur JVM IR dans IntelliJ IDEA. Vous en constaterez les avantages au fil du temps. Le nouveau compilateur partage une logique métier et un pipeline unifiés avec les compilateurs IR Kotlin/Native et Kotlin/JS, ce qui permet à JetBrains d’implémenter la plupart des fonctionnalités, optimisations et corrections de bugs pour toutes les plateformes simultanément. Cela vous permet également d’ajouter des processus personnalisés et des transformations qui fonctionneront automatiquement sur toutes les plateformes.

Dans cet article, vous trouverez une présentation des points suivants :

  • Les fonctionnalités stables du langage : enregistrements de la JVM, interfaces scellées et classes inline.
  • Les améliorations de la bibliothèque standard et de la bibliothèque de tests, avec notamment les types d’entiers non signés stables, les extensions pour java.nio.file.Path et les améliorations des API String, Char et Duration.
  • Les améliorations de Kotlin/JVM, notamment le nouveau compilateur IR par défaut de la JVM.
  • Les améliorations de Kotlin/Native, comme l’accélération de la compilation du débogage pour les applications Linux et iOS.
  • Les améliorations de Kotlin/JS, notamment la migration d’autres bibliothèques JS vers le nouveau compilateur IR Kotlin/JS.

Fonctionnalités de langage stables

Kotlin 1.5.0 fournit des versions stables des nouvelles fonctionnalités de langage présentées en avant-première dans la version 1.4.30 :

  • Prise en charge des enregistrements de la JVM pour maintenir l’interopérabilité avec les dernières fonctionnalités de Java : les classes d’enregistrement. Pour utiliser une classe Kotlin en tant qu’enregistrement dans le code Java, faites-en une classe data et signalez-la par l’annotation @JvmRecord :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
@JvmRecord
data class User(val name: String, val age: Int)

  • Interfaces scellées. Le modificateur sealed fonctionne de la même manière sur les interfaces et sur les classes : toutes les implémentations d’une interface scellée sont connues au moment de la compilation.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
sealed interface Polygon

  • Améliorations des classes scellées. Auparavant, toutes les sous-classes devaient se trouver dans le même fichier que les classes scellées. Désormais elles peuvent se trouver dans tous les fichiers de la même unité de compilation et du même paquet.

  • Les classes inline sont un sous-ensemble de classes basées sur des valeurs qui ne contiennent que des valeurs. Vous pouvez les utiliser comme des wrappers pour une valeur d’un certain type sans la surcharge supplémentaire due aux allocations de mémoire. Utilisez le modificateur value pour la déclaration.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
@JvmInline //required for the JVM backend
value class Password(val s: String)

Améliorations des bibliothèques standard et de tests

Les nouvelles API stables pour les types d’entiers non signés sont les améliorations de la bibliothèque Kotlin 1.5.0 les plus attendues d’après les retours de la communauté. La bibliothèque standard offre de nombreuses fonctionnalités utiles, notamment :

  • Les nouvelles API stables pour les types d’entiers non signés, ainsi que pour les plages, les progressions et les fonctions associées.

  • Fonctions d’extension pour java.nio.file.Path afin d’utiliser les dernières entrées-sorties Java non bloquantes dans le style idiomatique de Kotlin.

  • Améliorations des API String et Char, avec notamment la nouvelle API indépendante des paramètres régionaux pour modifier la casse des chaînes et des caractères, un ensemble de nouvelles fonctions pour la conversion entre les caractères et leurs codes entiers et valeurs numériques, et la prise en charge multiplateforme d’un plus grand nombre de fonctions Char.

  • Modifications de l’API Duration, notamment l’utilisation d’une valeur Long pour la représentation interne et l’arrivée de nouvelles propriétés pour la récupération d’une durée en tant que valeur Long.

La bibliothèque de test a également fait l’objet de plusieurs améliorations importantes :

  • Dépendance kotlin-test unique dans l’ensemble de sources commun des projets multiplateformes.
  • Choix automatique d’un framework de test pour les ensembles de sources Kotlin/JVM lorsque vous spécifiez la seule dépendance kotlin-test.
  • Plusieurs mises à jour des fonctions d’assertion.

Kotlin/JVM

Kotlin 1.5.0 apporte les nouveautés suivantes :

  • Le nouveau compilateur JVM IR, annoncé dans Kotlin 1.4.0, est maintenant Stable et utilisé par défaut.
  • Compilation des adaptateurs SAM et des lambdas en appels dynamiques (invokedynamic), bénéficiant des dernières fonctionnalités de la JVM. La compilation des lambdas simples Kotlin est expérimentale.
  • Nouvelle cible JVM par défaut : 1.8. La cible 1.6 est obsolète.
  • Amélioration de la gestion des informations sur la nullité des types de Java.
  • Modes @JvmDefault et Xjvm-default obsolètes.

Kotlin/Native

Kotlin 1.5.0 offre :

  • La prise en charge des caches du compilateur en mode débogage pour les cibles linuxX64 et iosArm64. Grâce à l’activation des caches du compilateur, la plupart des compilations de débogage prennent beaucoup moins de temps, à part la première. Les mesures effectuées par JetBrains ont montré une accélération d’environ 200 % sur des projets de tests.

  • Désactivation de la vérification intégrée des fuites de mémoire afin d’éviter des problèmes susceptibles d’entraîner des blocages des applications. Vous pouvez activer la vérification de fuites de mémoire si vous en avez besoin.

Kotlin/JS

Pour Kotlin/JS, le passage du nouveau compilateur IR Koltin/JS en phase Bêta est en cours. De nombreux frameworks et bibliothèques bien connus sont déjà disponibles pour le compilateur IR : KVision, fritz2, doodle, etc.

Si vous créez des bibliothèques, vous pouvez y ajouter la vôtre en effectuant une migration grâce à la compatibilité descendante.

Autre amélioration : la création de bundles JS en utilisant webpack 5 au lieu de webpack 4.

Comment installer Kotlin 1.5.0

Si vous utilisez IntelliJ IDEA ou Android Studio, il vous sera suggéré de faire la mise à jour vers Kotlin 1.5.0 automatiquement. Vous pouvez également faire la mise à jour manuellement en suivant certaines instructions sur le site officiel de Kotlin. Veuillez noter que Kotlin 1.5.0 est pris en charge par Android Studio 4.2.0, Arctic Fox Canary 15 et les versions ultérieures seulement.

Vous pouvez toujours télécharger les dernières versions des EDI suivants pour bénéficier d’une prise en charge étendue pour Kotlin :

  • IntelliJ IDEA pour développer des applications Kotlin pour différentes plateformes.
  • Android Studio pour le développement d’applications mobiles Android et multiplateformes.

Assurez-vous aussi de mettre à jour les bibliothèques kotlinx vers des versions compatibles et de spécifier la version 1.5.0 de Kotlin dans les scripts de build de vos projets existants.

Si vous avez besoin du compilateur en ligne de commande, vous pouvez le télécharger depuis la page Github de la version.

Événement en ligne Kotlin 1.5

JetBrains organise un évènement en ligne sur Kotlin 1.5 le 25 mai. L’équipe Kotlin y répondra à toutes vos questions sur la dernière version. Vous pourrez poser des questions sur tout ce que vous voulez savoir, ou simplement écouter les échanges, ce qui pourra certainement vous permettre d'apprendre beaucoup sur cette version. L'évènement durera 1h30.

Nouveautés dans Kotlin 1.5.0
Téléchargez la dernière version d'IntelliJ IDEA fournie avec Kotlin 1.5.0
S'inscrire à l'évènement Kotlin 1.5.0