10 questions que vous vous posez sur Kotlin Multiplatform (sans oser le demander)
Plus discrète que la technologie hybride Flutter très présente actuellement sur le marché, Kotlin Multiplatform commence toutefois à beaucoup faire parler d’elle, ouvrant progressivement la voie aux applications cross-plateformes. Vous envisagez de développer votre app grâce à Kotlin Multiplatform ? Voici toutes les questions que vous devriez vous poser avant.
1- Kotlin Multiplatform, c’est quoi ?
Kotlin Multiplatform (ou KMP pour les intimes) est une initiative de la société Tchèque JetBrains, qui conçoit des outils à destination des équipes de développement et est notamment à l’origine du langage de référence pour les applications natives Android, Kotlin. Technologie dite “cross-plateforme”, KMP a vocation à partager du code Kotlin sur diverses plateformes telles qu’Android, iOS, voire les différents systèmes d’exploitation de nos ordinateurs. A noter que le développement de KMP a commencé en 2017 pour atteindre sa première version stable en 2023 !
2- On dit KMP ou KMM ?
Clarifions ces fameux acronymes. On dit KMP pour “Kotlin Multiplatform” et KMM pour Kotlin Multiplatform Mobile. Mais en réalité, c’est aujourd'hui la même chose. Si initialement KMM avait été lancée en 2020 pour désigner un sous-ensemble de KMP destiné aux usages mobiles uniquement (il s’agissait dès le départ de la cible privilégiée), JetBrains a clarifié les choses et décrété que seule la terminologie KMP, plus globale, devait être utilisée.
3- Comment fonctionne KMP ?
KMP est basé sur le langage Kotlin, référence du développement Android depuis 2019. KMP est capable de générer du code spécifique à chaque plateforme à partir d’un code source unique grâce à des plugins de compilation. Ce n’est donc pas un langage hybride comme le sont Flutter ou React Native puisque le code est à chaque fois compilé nativement. Le but ? Mutualiser tout ce qui est générique entre les plateformes et notamment tous les appels aux webservices, la gestion du cache et toute la logique applicative. En d’autres termes, Kotlin Multiplatform permet de mutualiser les « couches basses » de l’application liées à la donnée et à la logique métier mais la couche qui gère l’interface reste spécifique à chaque application.

4- À quoi ressemble une application KMP ?
Une application KMP va ressembler à une application native classique puisque toute la partie graphique reste bien en natif sur chaque plateforme : pour iOS, on utilisera des composants SwiftUI, pour Android des composants Jetpack Compose (made in JetBrains là-aussi, qui s’est toutefois liée à Google pour créer ce framework). L’intérêt, c’est que l’on peut garder les spécificités propres à chaque OS et que l’on peut utiliser toutes les librairies graphiques des plateformes qui existent en natif mais pas forcément en hybride aujourd’hui.
5- Quels sont les avantages de KMP ?
Alors oui, KMP représente une mutualisation moins forte qu’un Flutter mais il présente plusieurs avantages :
Cohérence & stabilité
KMP permet aux développeurs de partager une part substantielle du code métier entre Android et iOS. Cela inclut des éléments comme les algorithmes, la logique de traitement des données, et les opérations métier. Ce partage évite de maintenir deux bases de code distinctes pour chaque plateforme, réduisant ainsi la duplication et les erreurs potentielles, surtout lorsque les fonctions métiers sont particulièrement complexes. En écrivant la logique métier une seule fois, les développeurs garantissent une plus grande cohérence et facilitent les mises à jour et les corrections de bugs. Les tests unitaires et d'intégration peuvent eux aussi être écrits une seule fois. Un bon moyen de simplifier le processus global et de réduire la charge de travail associée.
Performance
Étant donné qu’il est basé sur Kotlin, un langage reconnu pour ses performances, KMP offre lui aussi une base solide pour des applications rapides et réactives. Réutiliser du code Android pour une application iOS avec KMP permet donc de ne pas faire de concession sur ces critères et de prendre le moins de risques possible car ce sont bien des parties du code de l’application Android (sous réserve d’être correctement structurées) qui sont extraites et réutilisées pour l’application iOS. KMP compile en effet en Bytecode Java pour Android et en code Swift pour iOS, ce qui lui permet de rivaliser avec des applications 100% natives.
Flexibilité
Les développeurs peuvent personnaliser l'UI pour chaque plateforme en tirant parti des conventions et des composants spécifiques à Android et iOS. Les applications alors créées non seulement fonctionnent bien mais s’intègrent aussi très naturellement sur les deux OS.
Écosystème Kotlin
KMP bénéficie de l'écosystème Kotlin qui comprend une vaste gamme de bibliothèques, outils et ressources. Cette richesse offre un support clé pour le développement, des solutions aux problèmes courants et une base de connaissances en constante évolution. De plus, étant soutenu activement par JetBrains, KMP bénéficie de mises à jour régulières, d'améliorations et d'un support communautaire dynamique.
6- Quels sont les inconvénients de KMP pour les développeurs Android et iOS ?
Pour les développeurs Android, il n’y a pas ou en tout cas peu d’inconvénients. Il faut juste faire attention à utiliser des libs compatibles KMP dans la partie mutualisée et à ce que l’API de la lib utilise uniquement des fonctionnalités Kotlin compatibles avec iOS. Mais sinon le code est le même que dans une application Android classique.
En revanche, côté iOS, il y a un peu plus de contraintes. On peut citer notamment :
- Pour les développeurs, le code généré n’est pas optimal car ce n’est pas du code Swift mais du code Objective-C. Il est donc moins fluide à utiliser qu’un code purement natif. À noter que cela peut en partie être corrigé grâce à la lib SKIE (Swift Kotlin Interface Enhancer) qui a pour vocation de générer un code plus compatible avec du Swift, bien qu’en contrepartie la taille de la librairie augmente.
- L'auto-complétion du code peut encore être un peu capricieuse, ce qui ralentit le temps de développement et oblige à documenter un maximum l’interface proposée par KMP.
- Il faut que le développeur KMP rende accessible uniquement ce dont le développeur iOS aura besoin afin de limiter la taille de la librairie. Le poids de l’application peut sinon rapidement devenir important.
Le premier point peut être en partie corrigé grâce à la lib SKIE (Swift Kotlin Interface Enhancer) qui a justement pour vocation de générer un code plus compatible avec du Swift, mais en contrepartie la taille de la librairie augmente.
De façon générale, si l’on compare KMP avec Flutter notamment, il est évident que la nécessité de faire toute la partie graphique en double, pour iOS et Android, va impliquer un temps total de développement plus long.
7- Peut-on gérer des différences de fonctionnalités entre les plateformes malgré le code commun ?
Kotlin Multiplatform fournit des annotations permettant de spécifier un code différent pour chaque plateforme si une partie le nécessite. Si l’on prend en exemple la sauvegarde d’une donnée, chaque OS a un système en place, NSUserDefaults sur iOS et le DataStore sur Android. Il est possible dans KMP de faire une seule fois une fonction qui, selon l’OS, va soit utiliser les NSUserDefaults soit le DataStore. Cette fonction pourra ensuite être utilisée partout, sans être implémentée en dehors de la librairie KMP, dans le code de l’application.
8- Qui utilise KMP ?
Globalement, KMP s’adapte bien aux projets qui sont multiplateformes par essence, c’est-à-dire qui comportent des applications à la fois Android et iOS, principalement pour des raisons d’audience large. KMP s’adapte bien aux applications ayant des règles métiers complexes, des appels réseaux & API eux-aussi plutôt complexes et qui ne sont pas forcément pris en charge par un back-end optimisé pour le front.
Selon JetBrains, KMP a été adopté par plusieurs entreprises notables, pour des usages mobiles bien sûr. On peut citer : Netflix, McDonald’s (USA), Philips (dans un SDK), Cash App (développé par Square, Inc.), VMware ou encore Quizlet. Ces entreprises ont utilisé KMP pour divers besoins, allant de l'amélioration de la fiabilité des produits à l'accélération du développement de nouvelles fonctionnalités en passant par un souhait de gestion efficace de plateformes mobiles multi-utilisateurs.

Pour plus de détails sur ces exemples et retrouver d'autres entreprises qui ont adopté KMP, vous pouvez consulter les études de cas sur le site de JetBrains.
9- Quelle est la popularité de KMP sur le marché actuel ?
KMP est pour encore relativement confidentiel mais sa popularité croît d’année en année. En 2023, 16% des utilisateurs de Kotlin font aussi du KMP.
La réussite de Compose Multiplatform (CMP), qui va rajouter la couche graphique en Compose permettant de ne plus la coder pour chaque plateforme, pourrait aussi booster sa popularité. Cela reviendrait à faire du duo KMP/CMP une alternative plus sérieuse à Flutter.
À voir aussi si les améliorations prévues en 2024 sur KMP, et notamment l’export direct de Kotlin vers Swift pour améliorer l’utilisation de la librairie KMP sur iOS, pourraient aussi peser dans la balance.
10- Comment avoir encore plus de détails sur KMP ?
Pour en savoir plus sur Koltin Multiplatform & toutes les autres technologies de développement mobile disponibles sur le marché, téléchargez notre guide pratique gratuit ou contactez nos experts.

