Kotlin
A concise multiplatform language developed by JetBrains
Kotlin 1.4 est disponible et met l’accent sur la qualité et la performance
Aujourd’hui, nous publions Kotlin 1.4.0 ! Au cours des dernières années, nous nous sommes investis pour faire de Kotlin un langage de programmation agréable à utiliser et productif. Toujours dans cet objectif, nous avons consacré beaucoup d’énergie et d’efforts à améliorer les performances et la qualité de Kotlin et de ses outils pour cette nouvelle version. Par ailleurs, nous avons le plaisir d’annoncer la prise en charge de plusieurs nouvelles fonctionnalités de langage, notamment les tant attendues conversions SAM pour les interfaces Kotlin.
Pour en savoir plus et tirer le meilleur parti des nouveautés et améliorations de Kotlin 1.4, nous vous invitons à participer à notre événement virtuel gratuit Kotlin 1.4 Online Event – quatre jours de conférence avec, entre autres, des présentations, des discussions et des sessions de Questions/Réponses animées par l’équipe Kotlin.
Communauté et écosystème
Plus de 5,8 millions de personnes ont édité du code Kotlin au cours des 12 derniers mois et ces chiffres sont en constante augmentation :
Nous sommes ravis de la popularité croissante de Kotlin ! Le nombre d’utilisateurs actifs (nous reviendrons plus en détail sur les spécificités de cette mesure dans un prochain article de blog) est particulièrement encourageant. Il a été multiplié par 1,5 par rapport à l’année précédente.
Selon l’enquête StackOverflow Developer Survey 2020, Kotlin s’est hissé à la 13ème place parmi les langages de programmation les plus populaires auprès des développeurs professionnels, et nous sommes ravis de voir que Kotlin est l’un des 5 langages les plus appréciés.
De nombreuses entreprises ont choisi Kotlin comme principal langage et l’utilisent avec succès sur toutes les plateformes. Nous nous en réjouissons et sommes très reconnaissants envers ces entreprises d’avoir mis des études de cas à disposition afin que toute la communauté puisse en bénéficier. Voici une petite sélection de logiciels récemment développés en Kotlin :
- Côté serveur : Atlassian, Adobe, ING Bank ;
- Android : Google Home, Duolingo, Zomato;
- Mobile multiplateforme : VMware, PlanGrid et CashApp, Trikot par Mirego ;
- Web : Space par JetBrains, Karhoo, VisionForge par the MIPT Nuclear physics methods laboratory.
Nos communautés Kotlin connaissent également une croissance rapide. Plus de 30 000 développeurs Kotlin échangent désormais leurs connaissances et s’entraident sur Slack et Reddit et plus de 90 000 personnes suivent notre compte Twitter officiel pour bénéficier de conseils, d’astuces et suivre notre actualité. Avec plus de 200 groupes d’utilisateurs dans le monde, la communauté Kotlin est florissante et en pleine croissance. Nous vous remercions d’avoir contribué au bouche à oreille, de partager vos connaissances et de soutenir les autres développeurs Kotlin. L’atmosphère chaleureuse et accueillante que vous créez est ce qui fait de l’exploration collective de Kotlin une expérience aussi agréable. Cela ne serait pas pareil sans vous.
Événement en ligne Kotlin 1.4
Nous tenons à ce votre expérience d’utilisation de Kotlin 1.4 soit la meilleure possible et souhaitons vous informer de nos projets pour le langage. C’est pourquoi nous vous invitons à nous rejoindre à l’occasion de notre événement en ligne Kotlin 1.4 !
Ces quatre jours seront riches en partage de connaissances sur Kotlin et d’informations l’avenir du langage et de son écosystème. Nous parlerons des nouveautés et des améliorations que nous avons apportés à Kotlin 1.4, et vous ferons part de nos projets pour le langage. Les membres de l’équipe Kotlin animeront des sessions de questions/réponses quotidiennes. Envoyez vos questions à l’avance en les tweetant avec le hashtag #kotlin14ask ou via ce formulaire.
L’événement en ligne Kotlin 1.4 aura lieu du 12 au 15 octobre et vous pouvez vous y inscrire gratuitement ici :
Inscrivez-vous à l’événement en ligne Kotlin 1.4
Nous avons hâte de vous y retrouver !
L’accent sur la qualité
Notre principal objectif pour cette version était d’améliorer l’expérience de développement globale avec Kotlin, notamment avec l’amélioration des performances et de la stabilité de l’EDI. Notre objectif est d’optimiser autant que possible la productivité des utilisateurs de Kotlin et nous nous sommes concentrés sur l’amélioration des points les plus importants pour eux, afin de procurer encore plus de satisfaction !
Nous avons examiné et corrigé plus de 60 problèmes de performance, dont beaucoup provoquaient des blocages de l’EDI ou des fuites de mémoire. Au cours de la phase EAP de Kotlin 1.4.0, nous avons recueilli de nombreux retours positifs indiquant que l’expérience globale était devenue beaucoup plus agréable !
Lorsque vous travaillez avec un projet et que vous ouvrez un gros fichier Kotlin pour la première fois, son contenu avec mise en évidence de la syntaxe s’affiche maintenant beaucoup plus vite. Dans la plupart des cas, la mise en évidence syntaxique est 1,5 à 4 fois plus rapide :
Nous avons aussi considérablement réduit le temps nécessaire à l’affichage des suggestions de saisie semi-automatique. Vous pouvez avoir un aperçu du temps de réponse moyen de la saisie semi-automatique pour les utilisateurs de Kotlin dans le graphique qui suit. Le nombre de cas dans lesquels la saisie semi-automatique prend plus de 500 ms a quasiment été réduit de moitié :
Veuillez noter que ces nouveautés, y compris l’accélération de la mise en évidence syntaxique, requièrent IntelliJ IDEA 2020.1+ et Android Studio 4.1+.
L’accroissement des performances est un processus continu et de nombreuses autres améliorations sont prévues, notamment en ce qui concerne la suppression des blocages et à la fluidifications de la saisie. Nous avons déjà commence l’intégration du nouveau compiler frontend expérimental Kotlin, qui rendra l’EDI beaucoup plus rapide. C’est une tâche de grande ampleur qui implique de réécrire de nombreuses parties du plugin, mais elle améliorera les performances dans de nombreux domaines de l’EDI, notamment pour la saisie semi-automatique du code, la mise en évidence syntaxique et le rapport d’erreurs du compilateur.
Nouvelle fonctionnalité de l’EDI
La mission de JetBrains est de faire du développement logiciel une expérience plus productive et agréable, il va donc de soi que nous souhaitions faciliter la programmation en Kotlin et fournir les meilleurs outils possibles.
Pour simplifier votre travail avec les coroutines, et plus particulièrement pour localiser avec précision les bugs dans vos applications en cours, nous inaugurons le Coroutine Debugger. Nous allons développer son ensemble de fonctionnalités initial afin de fournir les fonctionnalités les plus attendues par la communauté, alors n’hésitez pas à nous faire part de vos commentaires en utilisant l’un de nos canaux ou la section commentaires ci-dessous.
Nous proposons également un nouvel Assistant de projet Kotlin flexible. Cet assistant fournit un emplacement unique pour créer et configurer des projets Kotlin de différents types, ce qui facilite le démarrage même avec des structures complexes telles que des projets multiplateformes.
Plus de 40 nouveaux correctifs rapides, intentions et inspections ont été ajoutés avec Kotlin 1.4.0 et seront disponibles exactement quand vous en aurez besoin : lorsque vous modifiez votre code et que vous appuyez sur Alt+Entrée pour voir ce qui est disponible dans votre contexte spécifique.
Nouveau compilateur
Cela fait un certain temps que nous travaillons sur un nouveau compilateur Kotlin qui permettent une évolution significative de Kotlin en termes de performance et d’extensibilité. Outre l’accroissement de la rapidité, nos principaux objectifs sont d’unifier toutes les plateformes prises en charge par Kotlin et de fournir une API pour les extensions du compilateur. Nous ajoutons de nouveaux éléments au fur et à mesure, pour que les utilisateurs y aient accès le plus rapidement possible. Dans Kotlin 1.4.0, nous mettons à disposition plusieurs parties de ce travail de longue haleine :
- Le nouvel algorithme d’inférence de type plus puissant est activé par défaut. Il déduit automatiquement les types dans davantage de cas d’utilisation, prend en charge des conversions intelligentes même dans des scénarios complexes, améliore l’inférence pour les propriétés déléguées, etc.
- Les nouveaux backends JVM et JS IR sont disponibles en mode Alpha. Une fois stabilisés, ils seront activés par défaut.
Nous travaillons activement sur une nouvelle implémentation frontend, qui fournira la plus importante augmentation des performances dans le pipeline du compilateur. Ce frontend est la partie du compilateur qui analyse le code et effectue des vérifications de type, il a donc un impact sur les performances de l’EDI. Une preview sera disponible dans une prochaine version, tenez-vous informé !
Caractéristiques du langage
Kotlin 1.4 apporte de nombreuses nouvelles fonctionnalités :
- Conversions SAM pour les interfaces Kotlin
- Mode d’API explicite pour les auteurs de bibliothèques
- Mélange d’arguments nommés et positionnels
- Virgule de fin
- Améliorations des références appelables
- Utilisation de
break
etcontinue
à l’intérieur dewhen
dans les boucles
Améliorations de la bibliothèque
Notre priorité pour la bibliothèque standard est d’en améliorer la cohérence, à la fois entre les différentes plateformes et entre les opérations elles-mêmes. Dans cette version, la bibliothèque standard de Kotlin reçoit de nouveaux opérateurs de collection, des améliorations des propriétés déléguées, l’implémentation des files d’attente à double extrémité ArrayDeque
, et bien plus encore.
Vous pouvez utiliser la bibliothèque standard dans le code "commun", c’est-à-dire le code partagé entre différentes plateformes, qu’il s’agisse d’Android et iOS ou de JVM et JS. Nous étendons progressivement la bibliothèque commune et y ajoutons des fonctionnalités.
Par ailleurs, il n’est plus nécessaire de déclarer une dépendance à stdlib
dans un projet Gradle Kotlin, que vous cibliez une seule plateforme ou que vous travailliez dans un projet multiplateforme. À partir de Kotlin 1.4.0, cette dépendance est ajoutée par défaut.
Nous travaillons sur d’autres parties de l’écosystème Kotlin :
- Nous faisons évoluer progressivement kotlinx.coroutines en fonction de vos retours.
- La bibliothèque de sérialisation se rapproche de la maturité. Nous publions la version 1.0.0-RC de kotlinx.serialization aujourd’hui !
- Nous avons déjà publié la preview de l’API DateTime, la bibliothèque kotlinx-datetime à l’état expérimental.
Kotlin/JVM
Nous vous invitons à essayer le nouveau backend Alpha Kotlin/JVM pour vos projets et à nous faire part de vos commentaires ! En plus d’unifier les pipelines du compilateur, ce travail nous aidera à proposer des extensions de compilateur telles que Jetpack Compose plus rapidement à la communauté Kotlin.
Fonctionnalités du langage spécifiques à Kotlin/JVM :
- Nous avons ajouté de nouveaux moyens expérimentaux pour générer des méthodes par défaut dans les interfaces du bytecode (pour la cible Java 8).
- Nous avons ajouté des types d’exception unifiés pour la vérification des valeurs null.
- Kotlin peut désormais générer des annotations de type dans le bytecode de la JVM afin qu’elles soient disponibles dans la réflexion Java lors de l’exécution. Cela fonctionne pour versions de cible 8 et ultérieures et a été lancé en mode expérimental.
Kotlin/JS
Kotlin 1.4.0 intègre un nouveau Gradle DSL et une version Alpha du nouveau backend du compilateur d’IR Kotlin/JS, entre autres fonctionnalités.
- Le nouveau Gradle DSL ajoute la prise en charge de la configuration des chargeurs de style et CSS à partir du langage DSL. Il comprend plusieurs améliorations liées à la gestion des dépendances npm et améliore le contrôle de l’intégration Dukat.
- Le nouveau backend du compilateur Kotlin/JS donne un aperçu de ce que sera Kotlin/JS à l’avenir. Il propose des optimisations et des fonctionnalités telles que la génération automatique de définitions TypeScript à partir du code Kotlin, des binaires et bundles plus petits, un moyen modernisé d’exposer les fonctionnalités de Kotlin à JavaScript, etc.
Kotlin/Native
Kotlin/Native a reçu un grand nombre de nouvelles fonctionnalités et améliorations, notamment :
- Améliorations des performances globales de la compilation et de l’exécution Kotlin/Native.
- Amélioration de l’interopérabilité entre Kotlin/Native et Swift/Obj-C.
- Gestion simplifiée des dépendances CocoaPods.
L’implémentation actuelle de la gestion automatique de la mémoire dans Kotlin/Native est limitée en matière de concurrence et nous travaillons sur une solution de remplacement.
Kotlin/Native se fixe un objectif de fluidité pour Kotlin Multiplatform Mobile, mais cela ne se limite pas à cela.
Kotlin multiplateforme
Faire de Kotlin une excellente solution multiplateforme est l’une de nos principales priorités. Nous avions promis des améliorations importantes lors de la KotlinConf, et nous avons maintenant le plaisir de vous présenter ce que nous avons produit :
- Grâce à la structure de projet hiérarchique, vous pouvez désormais partager du code entre un sous-ensemble spécifique de cibles, par exemple la cible des appareils iOS ARM64 similaires et la cible du simulateur x64.
- Vous pouvez utiliser des bibliothèques dépendant de la plateforme à partir d’un code commun partagé entre plusieurs cibles natives.
- Vous pouvez spécifier une dépendance une seule fois dans l’ensemble de sources partagé au lieu de spécifier les dépendances sur plusieurs variantes de la même bibliothèque dans des ensembles de sources partagés et spécifiques à la plateforme.
- Nous continuons à travailler sur le format de bibliothèque Kotlin, Klib, qui est utilisé en coulisses pour partager les bibliothèques multiplateformes.
Nous mettons au point un plugin Android Studio pour exécuter, tester et déboguer le code Kotlin sur les appareils et simulateurs iOS. La première preview publique sortira très prochainement, alors restez à l’affût.
Nous allons prochainement publier un grand nombre de documents créés avec l’aide de membres de la communauté Kotlin; expliauanr comment utiliser la technologie Kotlin Multiplatform Mobile (KMM) pour cibler spécifiquement les cas d’utilisation mobiles dans lesquels le code est partagé entre Android et iOS.
Bien que notre attention se porte désormais principalement sur les cibles mobiles, la cible Web de Kotlin Multiplatform est déjà activement utilisée par JetBrains pour construire et livrer JetBrains Space. La cible Web reste un investissement stratégique important pour Kotlin.
Plus d’informations
Vous pouvez trouver des descriptions détaillées des nouvelles fonctionnalités sur la page Nouveautés et documentation de Kotlin 1.4 et en apprendre davantage sur la migration vers Kotlin 1.4.
Comme pour toutes les versions majeures, certains cycles d’obsolescence de modifications précédemment annoncées arrivent à leur terme avec Kotlin 1.4. Tous ces cas ont été soigneusement examinés par le comité du langage et sont répertoriés dans le Guide de compatibilité pour Kotlin 1.4.
Comment nous aider à améliorer Kotlin
Le plugin Kotlin dans IntelliJ IDEA et Android Studio peut collecter des statistiques anonymisées sur votre utilisation de ses fonctionnalités. Nous nous permettons de vous demander de donner votre accord au recueil de ces statistiques !
Ces données anonymes nous aident à mieux comprendre nos utilisateurs et à voir ce qui fonctionne, ce qui cause des problèmes et sur quels points nous devons nous concentrer. Pour activer les statistiques, accédez aux Preferences, ouvrez Appearance & Behaviour | System Settings | Data Sharing et cochez la case Send usage statistics.
Principaux créateurs de tickets depuis Kotlin 1.3
Nous tenons à remercier tous les membres de la communauté qui nous ont aidés à améliorer cette version en signalant les problèmes sur YouTrack ! Nous avons établi une liste des 20 meilleurs contributeurs, que nous tenons tout particulièrement à remercier :
Igor Wojda (145 tickets) ; Louis CAD (87 tickets) ; Marc Knaup (86 tickets) ; AndroidDeveloperLB (83 tickets) ; Robert Stoll (68 tickets) ; Morgan Bartholomew (62 tickets) ; Victor Turansky (54 tickets) ; Guan Tianyi (51 tickets) ; Scott Pierce (38 tickets) ; Andreas Malik (37tickets) ; Steven Schäfer (37 tickets) ; Björn Kautler (36 tickets) ; Róbert Papp (34 tickets) ; Toshiaki Kameyama (30 tickets) ; Nicholas Bilyk (29 tickets) ; Michael Bailey (26 tickets) ; Jake Wharton (25 tickets) ; Lamberto Basti (24 tickets) ; Serge Pro (23 tickets) ; Egor Andreevici (21 tickets).
Commencez à utiliser Kotlin 1.4 dès maintenant
Comme toujours, vous pouvez essayer Kotlin en ligne sur play.kotl.in.
Dans Gradle et Maven, utilisez 1.4.0 comme version du compilateur. Consultez la documentation pour Gradle et Maven.
IntelliJ IDEA et Android Studio vous demandent automatiquement de mettre jour le plugin Kotlin vers la version 1.4.0. Vous pouvez également ouvrir Preferences | Plugins et mettre à jour le plugin Kotlin manuellement.
Le compilateur de ligne de commande peut être téléchargé à partir de la page GitHub de la version.
Vous pouvez utiliser les versions suivantes des bibliothèques publiées avec cette version du langage :
- Version de kotlinx.coroutines :
1.3.9
- Version de kotlinx.serialization :
1.0.0-RC
- Version de ktor :
1.4.0
- Version de kotlinx.atomicfu :
0.14.4
- Version de kotlinx.html :
0.7.2
- Version de kotlinx-nodejs :
0.0.6
Les versions des bibliothèques de kotlin-wrappers
(kotlin-react
etc.) se trouvent dans le référentiel correspondant.
Les dernières améliorations des performances de l’EDI, y compris l’accélération de la mise en évidence syntaxique, requièrent IntelliJ IDEA 2020.1+ et Android Studio 4.1+.
Si vous rencontrez des problèmes avec la nouvelle version, vous pouvez trouver de l’aide sur Slack (obtenez une invitation ici) et les signaler via YouTrack.
Merci !
Nous sommes reconnaissants à toutes les personnes qui ont essayé les versions EAP et les fonctionnalités expérimentales de Kotlin et qui nous ont fait part de leurs commentaires. Nous développons le langage Kotlin avec vous et de nombreuses décisions sont prises en fonction de vos précieuses contributions. Maintenir la réactivité et l’efficacité de cette boucle de rétroaction avec la communauté est vraiment important pour continuer à améliorer Kotlin !
Un grand merci à tous nos contributeurs externes dont les requêtes pull ont été incluses dans cette version. Vous nous avez aidés à réaliser cette version !
Nous sommes reconnaissants envers tous les membres de notre communauté qui créent tant de choses incroyables avec Kotlin. Kotlin 1.4 : un pour tous !