Selon une étude de Bocasay, le développement d’applications mobiles représente 60 % des parts du marché, contre 38 % pour les applications web. Au-delà des applications web progressives (PWA), du développement no-code ou de l’intégration de l’IA, une autre tendance émerge. Les frameworks multi-plateformes se développent de plus en plus, car ils permettent de déployer l’application mobile sur Android ou iOS à partir d’un seul code. Ces solutions performantes et flexibles pourraient atteindre un chiffre d’affaires de 546,7 milliards de dollars d’ici 2033.
Chez Idéematic, nous manipulons Flutter et React Native parmi tous les outils à notre disposition. Depuis 2020, une solution innovante permet de partager la logique métier tout en conservant les performances natives. Il s’agit de Kotlin Multiplatform Mobile (KMM). Quel est cet outil ? Comment marche-t-il ?
1. Qu’est-ce que Kotlin Multiplatform Mobile (KMM) ?
Kotlin Multiplatform Mobile (KMM) est un SDK (kit de développement logiciel) qui fait partie de Kotlin Multiplatform (KMP), le framework de JetBrains. Il permet de créer des applications mobiles avec un code commun à iOS et Android.
Contrairement à Flutter ou React Native, KMM ne repose pas sur un moteur d’exécution tiers. Le langage Kotlin est compilé en code natif ou intermédiaire selon la plateforme (bytecode JVM pour Android ; code natif LLVM pour iOS). Par conséquent, les développeurs peuvent partager plusieurs paramètres de la logique métier, comme les algorithmes, les appels réseau ou les gestionnaires de données. Dans le but de créer des applications mobiles hybrides, la maîtrise de Swift est recommandée pour développer sur iOS (Inside App).
Cette interopérabilité garantit l’accès à plusieurs bibliothèques et frameworks comme SwiftUI (pour iOS), UIKit ou Jetpack Compose (pour Android). Avec un moteur JavaScript, comme Nashorn, vous pouvez travailler avec des bibliothèques JavaScript comme ReactJS (Value Coders). La relation entre les modules et les codes s’effectue dans les deux sens (Mode d’emploi Kotlin) :
- La bibliothèque Swift est intégrée dans le code Kotlin grâce à l’exportation de son API (interface de programmation d’application). Celle-ci s’effectue grâce à la commande @objc.
- Les modules Kotlin, une fois compilés en frameworks, sont intégrés dans le code Swift ou Objective-C.
2. Comment créer et lancer une application mobile avec KMM ?
L’architecture du projet mobile sur KMM
Pour passer d’un système d’exploitation mobile à l’autre, un projet sur Kotlin Multiplatform Mobile contient trois parties spécifiques (Axopen) :
- La partie Common renferme le code en Kotlin native, commun à toutes les plate-formes. Son dossier shared contient les codes de chaque système d’exploitation (androidMain et iosMain), ainsi que le code partagé (commonMain). C’est dans cette dernière partie que sont rédigés les codes basiques de l’application.
- La partie Android renferme le code source unique à ce système, sous le nom d’androidApp. La construction de l’interface utilisateur s’effectue sur l’environnement de développement intégré (IDE) Android Studio.
- La partie iOS renferme le code source des mobiles Apple, sous le nom d’iosApp. Le développeur construit l’interface utilisateur sur l’IDE Xcode. Comme la partie Android, la partie iOS est liée au module “shared” afin d’accéder au code métier partagé.
La gestion des implémentations propres à chaque plateforme s’effectue grâce aux mots-clés expect et actual. Le premier sert à déclarer une entité (fonction, classe, propriété) et définir une interface commune dans le module partagé. Le second génère l’implémentation de l’entité sur la plateforme correspondante.
// commonMain
expect fun platformName(): String
// androidMain
actual fun platformName(): String = "Android"
// iosMain
actual fun platformName(): String = "iOS"
Le développement d’une application mobile sur KMM
La première étape consiste à configurer l’environnement sur lequel vous allez développer votre application. Pour cela, assurez-vous de disposer des outils suivants (Jet Brains) :
- Android Studio ou Xcode pour créer les applications.
- Java Development Kit (JDK) pour disposer des bibliothèques logicielles selon le langage de programmation Java.
- Le plugin Kotlin Multiplatform pour travailler sur Android Studio. Sa version la plus récente, sortie le 6 décembre 2024, prend en charge le mode K2, un compilateur qui améliore l’analyse et la stabilité du code.
- L’outil KDoctor si vous travaillez sur iOS, afin d’analyser et de corriger les problèmes de développement.
Lorsque l’environnement est prêt, vous pouvez ouvrir un nouveau projet. Dans le cas d’Android Studio, vous sélectionnez le widget “KMM Application” et vous renseignez les différents champs. Une fois l’application prête, vous choisissez votre plateforme de lancement dans la liste des Run Configurations, puis vous validez avec le bouton Run. Grâce à l’architecture, vous pouvez lancer l’émulation iOS à partir d’Android Studio.
3. Quels sont les avantages de KMM ?
Grâce à son partage de code, le temps de développement d’une application sur Kotlin est plus rapide que sur Flutter, par exemple (Geeks for Geeks). La logique métier repose sur une architecture commune et elle est réutilisable sur plusieurs plateformes, de même que les algorithmes ou les modèles de données. Avec une telle réduction de délais, et donc de couts, Kotlin représente une solution de choix pour les petites entreprises ou les startups.
Avec une telle compilation du code machine, le développement nécessite moins d’efforts en termes d’apprentissage des langages de programmation. Par exemple, il n’est pas obligatoire de maitriser JavaScript ou Swift pour développer votre application, car Kotlin s’intègre déjà dans leurs frameworks.
L’interface utilisateur (UI) reste native quelle que soit la plateforme qui héberge l’application. Le rendu est plus efficace et certaines fonctionnalités natives, comme Bluetooth ou l’appareil photo du mobile, conservent leurs performances sur iOS ou Android.
Avec des performances comparables aux véritables applications natives, cela optimise l’expérience utilisateur (UX) de votre application. Par exemple, le compilateur Kotlin/Native est capable de reconstituer le framework iOS dans l’échantillon de stockage des données en 4,5 secondes (blog Jet Brain).
4. Quels sont les inconvénients de KMM ?
Kotlin Multiplatform Mobil est sorti en 2020. Malgré ses mises à jour, comme l’augmentation du nombre de bibliothèques ou de nouveaux exemples de projet, ses contenus restent restreints par rapport à Flutter. Par exemple, seules quelques librairies Java sont compatibles avec KMM. Les développeurs de Jet Brains compensent cette limite avec l’instauration du répertoire GitHub (Atipik).
Même si tout a été pensé pour gagner du temps, un projet KMM s’avère plus complexe sur iOS que sur Android. Cette complexité est liée au jonglage entre les environnements de développement et les langages de programmation (Swift et Kotlin). D’ailleurs, l’export direct entre Kotlin et Swift n’est pas toujours supporté ; cela peut compliquer le développement sur iOS.
C’est pourquoi il est important de se constituer une équipe de développeurs Android et iOS, pour mener à bien le projet sur les deux plateformes. Nous pouvons en déduire que la solution Kotlin Multiplatform n’est pas rentable pour de petites applications avec un code minimal (Ailleron).
5. Quelles sont les entreprises qui utilisent KMM pour développer leurs applications ?
Certaines entreprises ont développé leurs applications mobiles avec KMM et ont obtenu des résultats significatifs. Quizlet, Fastwork, Netflix… d’après le blog de Jet Brains, ces grandes marques ont amélioré les performances de leurs applications mobiles et, donc, leur productivité. Pour McDonalds, le partage de code complexe entre les plateformes a permis la prise en charge de 6,5 millions d’achats sur mobile (étude de cas Jet Brains). Google recommande même l’utilisation de KMP, de manière générale, pour les applications multiplateformes.
6. Conclusion
Kotlin Multiplaform Mobile est un outil prometteur pour développer des applications mobiles hybrides. Il combine les avantages du partage de code avec des performances natives, réduisant de surcroît les coûts et les délais de développement. Même si certains progrès restent encore à accomplir, notamment au niveau d’iOS, de grandes entreprises l’ont déjà adopté avec succès. Le développeur, JetBrains, propose une feuille de route efficace comme l’ajout d’un nouveau compilateur K2 ou l’amélioration de la prise en charge sur iOS.