Kotlin, est un langage de programmation qui a conquis le cœur des développeurs Android avec le soutien officiel de l’équipe Google. Il est désormais présent dans 95% des 1000 applications Android les plus populaires. Kotlin s’est également imposé comme un acteur majeur côté serveur où il a été adopté par des géants comme AWS, Adobe, Atlassian et Google. La présentation de Kotlin 2.0 a été le point d’orgue de la KotlinConf’2024. Cette nouvelle version marque une étape majeure dans l’évolution de ce langage de programmation moderne et polyvalent. Forte d’un tout nouveau compilateur plus rapide et plus intuitif, Kotlin 2.0 s’affirme comme un langage incontournable pour les développeurs qui aspirent à créer des applications multiplateformes. Les nombreuses améliorations qu’il propose facilitent la prise en main et accélèrent le développement.

Désormais stable, le compilateur K2 propose une vitesse de compilation jusqu’à deux fois plus rapide que son prédécesseur grâce à sa nouvelle architecture.

Le compilateur K2 représente une avancée majeure dans l’évolution de Kotlin. Fort d’une toute nouvelle architecture, il marque une rupture significative par rapport à son prédécesseur dont la dette technique devenait insurmontable. Il a donc été entièrement repensé pour offrir de meilleures performances, une plus grande extensibilité et une base solide pour les futures évolutions du langage. Si la vitesse de compilation peut naturellement varier selon les projets, JetBrains constate néanmoins une accélération significative des temps de compilation par rapport aux versions précédentes de Kotlin. Elle peut en effet être jusqu’à deux fois plus rapide. À noter que K2 offre également une meilleure complétion semi-automatique. Pensée pour le multiplateforme, elle unifie l’ensemble des plateformes que Kotlin prend en charge. K2 est stable depuis la parution l’été dernier de Kotlin en version 2.0 20.

Il faut également souligner que la partie du compilateur K2 qui analyse le code Kotlin en continu au sein d’IntelliJIDEA, (l’environnement de développement) passe au stade bêta. Il signale désormais les problèmes de code et suggère les améliorations possibles 1,5 à 2 fois plus vite. Jusqu’à présent optionnel, le mode K2 devrait être activé par défaut d’ici la fin d’année.

À noter : contrairement aux systèmes plus fragmentés, la base de code commune qui caractérise K2 permet désormais à JetBrains de diffuser les correctifs et évolutions de manière plus rapide et plus coordonnée.

Schéma présentant la nouvelle architecture du compilateur K2.

Multiplatform-by-design, Kotlin 2.0 fait un grand pas en avant vers le développement d’applications multiplateforme.

Imaginez pouvoir écrire le cœur de votre application une seule fois puis le déployer sur de multiples plateformes – Android, iOS, web voire desktop – sans sacrifier la qualité de l’expérience utilisateur. C’est l’objectif que poursuit le développement multiplateforme, et Kotlin 2.0 marque une avancée significative dans cette quête avec KMP (Kotlin Multiplatform).

La bataille du multiplateforme se concentre sur trois axes : la productivité, les performances et l’expérience utilisateur. Kotlin 2.0 propose de répondre à ces enjeux en intégrant nativement le support de Compose Multiplatform. Cette intégration simplifie et accélère considérablement le développement d’interfaces utilisateur multiplateformes tout en offrant de précieux gain de temps et de ressources.

Les nouveautés clefs de Kotlin 2.0 pour le multiplateforme :

  • Intégration de Jetpack Compose : le compilateur Jetpack Compose est désormais fourni avec Kotlin, ce qui facilite l’utilisation de cette boîte à outils d’UI moderne et déclarative ;
  • Support natif de Swift Export : en proposant la génération de code Swift, Kotlin 2.1.0 s’inscrit pleinement dans l’écosystème moderne du développement iOS. Cette nouvelle fonctionnalité permet de s’affranchir des contraintes d’Objective-C et d’optimiser l’intégration avec les outils et les frameworks les plus récents. ;
  • Mise à jour du plugin Gradle Compose : cette mise à jour simplifie la configuration et l’utilisation de Compose Multiplatform, rendant le développement encore plus fluide.

Kotlin 2.0, avec son support natif de Compose Multiplatform et ses améliorations pour le développement iOS, offre aux développeurs un écosystème de plus en plus abouti et performant pour créer des applications multiplateformes de premier plan. Les entreprises peuvent ainsi réduire leurs coûts de développement, accélérer la mise sur le marché de leurs produits et offrir une expérience utilisateur cohérente sur tous les appareils.

Qui emploie déjà Kotlin KMP ?

Kotlin Multiplatform (KMP) a d’ores et déjà été adopté par des entreprises reconnues, parmi lesquelles Forbes, Philips, Square et McDonald’s. Google utilise également KMP pour développer ses propres applications Workspace.

Schéma présentant l'architecture multi-plateforme de Kotlin.

Les autres améliorations notables apportées par Kotlin 2

L’interopérabilité avec Java est améliorée grâce à la stabilisation de la bibliothèque kotlinx-metadata-jvm qui simplifie la gestion des métadonnées et améliore la compatibilité avec le code Java existant. Les développeurs peuvent donc plus facilement intégrer leurs projets Kotlin avec des bases de code Java existantes.

Les performances sont également optimisées grâce à l’introduction de la génération de fonctions lambda à l’aide d’invokedynamic. Cette fonctionnalité permet d’exploiter au mieux les capacités des machines virtuelles modernes, offrant ainsi des gains de performance notables et accélérant l’exécution du code.

Kotlin/Wasm, le compilateur ciblant le WebAssembly, bénéficie de nouvelles fonctionnalités qui étendent ses capacités. Le support des exportations nommées et des types primitifs non signés dans les fonctions @JsExport ouvre de nouvelles possibilités pour l’interopérabilité avec le JavaScript. De plus, les builds de production sont optimisés par défaut grâce à Binaryen, un compilateur WebAssembly performant, ce qui améliore significativement les performances des applications web développées avec Kotlin.

Enfin, Kotlin/Native, qui permet de compiler du code Kotlin en code natif pour différentes plateformes, offre désormais une meilleure visibilité sur les performances de l’application et permet de résoudre plus aisément les conflits fréquents avec les méthodes Objective-C (merci beaucoup @Maxime). La possibilité de surveiller le garbage collector sur les plateformes Apple permet d’identifier les goulots d’étranglement et d’optimiser l’allocation de mémoire, ce qui contribue à améliorer la réactivité et la stabilité des applications.

Kotlin 2.0 représente une avancée importante dans le domaine des langages de programmation. En proposant un compilateur performant, une intégration native de Compose Multiplatform et une prise en charge accrue du développement multiplateforme, Kotlin pourrait s’imposer comme une solution de choix pour les projets ambitieux. Les améliorations apportées à Kotlin/Native et Kotlin/Wasm ouvrent également de nouvelles perspectives pour le développement d’applications mobiles et web.

Sources :

“What’s new in Kotlin 2.1.0-Beta2” in Kotlinlang.org [dernière version du 14/10/24] (XX/10/24). [https://kotlinlang.org/docs/whatsnew-eap.html].

“What’s new in Kotlin 2.0.0” in Kotlinlang.org [dernière version du 08/10/24] (XX/10/24). [https://kotlinlang.org/docs/whatsnew20.html].

Paul JANSEN “Tiobe Index for October 2024” in Tiobe index [dernière version d’octobre 2024] (21/10/24). [https://www.tiobe.com/tiobe-index/].

Delphine MASSENHOVE, “Découvrez Kotlin 2.0 : rapide, intelligent et multiplateforme” in JetBrains blog [31/05/24] (XX/10/24). [https://blog.jetbrains.com/fr/kotlin/2024/05/decouvrez-kotlin-2-0-rapide-intelligent-et-multiplateforme/].

Michael GUILLOUT, “Kotlin 2.0 est disponible avec un compilateur K2 stable, plus rapide et multiplateforme dès sa conception” in Developpez.com [24/05/24] (XX/10/24). [https://kotlin.developpez.com/actu/358442/Kotlin-2-0-est-disponible-avec-un-compilateur-K2-stable-plus-rapide-et-multiplateforme-des-sa-conception/].

Sergei PECHERKIN, “The first public release of Swift Export” in YouTrack [24/05/24] (XX/10/24). [https://youtrack.jetbrains.com/issue/KT-64572].

“KotlinConf’24 – Keynote”, **in youtube.com/@Kotlin [23/05/24] (XX/10/24). [https://youtu.be/Ar73Axsz2YA].

Maru Ahues BOUZA et Jeffrey VAN GOGH, “Android Support for Kotlin Multiplatform (KMP) to Share Business Logic Across Mobile, Web, Server, and Desktop” in Android Developers Blog [14/05/24] (XX/10/24). [https://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html].

Sarah HAGGARTY, “K2 Compiler Performance Benchmarks and How to Measure Them on Your Projects” in JetBrains blog [25/04/24] (XX/10/24). [https://blog.jetbrains.com/kotlin/2024/04/k2-compiler-performance-benchmarks-and-how-to-measure-them-on-your-projects/].

Delphine MASSENHOVE, “Le Compilateur K2 sera stable dans Kotlin 2.0” in JetBrains blog [16/02/23] (XX/10/24). [https://blog.jetbrains.com/fr/kotlin/2023/02/le-compilateur-k2-sera-stable-dans-kotlin-2-0/].

Pierre-Yves AILLET, “Vous adorez Kotlin ? Utilisez le partout avec KotlinNative !” in Blog Zenika [13/02/18] (XX/10/24). [https://blog.zenika.com/2018/02/13/vous-adorez-kotlin-utilisez-le-partout-avec-kotlinnative/].