Kotlin Multiplatform - KMP et le développement natif mutualisé

Kotlin Multiplatform - KMP et le développement natif mutualisé

Explorez KMP, permettant un développement natif mutualisé, décrypté par nos experts.

Kotlin Multiplatform - KMP et le développement natif mutualisé

Depuis quelque temps, KMP s’impose dans le paysage du développement applicatif comme un élément incontournable. Quelles sont les raisons qui propulsent Kotlin Multiplatform sur le devant de la scène et pourquoi les raisons de l’utiliser sont nombreuses ? Nous décryptons pour vous l’univers du développement natif mutualisé au travers de cette techno.

Distinction entre le langage Kotlin et KMP

Kotlin est un langage de programmation qui est, depuis 2019, reconnu par Google comme le langage référence pour les développements d’application Android. Kotlin est interprétable par la même machine virtuelle que Java, le langage originel des applications Android. C’est en 2011, que Kotlin fut développé par Jetbrains, un éditeur de logiciels. 2017 fut un tournant pour ce langage puisqu'il s’agit de l’année où Kotlin est officiellement soutenu par Android, avant d’être aujourd’hui la référence pour cet OS.

KMP ne doit pas être confondu avec le langage Kotlin. Kotlin Multiplateform est un moteur spécifique qui va utiliser le langage Kotlin en permettant de compiler un ensemble de code sous forme de librairie pouvant être utilisée sur différentes plateformes (serveur, site web, application mobile, Kotlin/JVM, Kotlin/JS, Kotlin/Native…).

KMP & KMM : quelle différence entre ces deux acronymes ?

Lorsque KMP s’est démocratisé dans la communauté de développeurs, très vite les équipes de Jetbrain se sont aperçues que ce système était utilisé principalement pour développer sous iOS et Android. C’est ainsi qu’ils ont décidé de créer KMM, acronyme de Kotlin Multiplateform Mobile, un sous-ensemble de KMP facilitant l'utilisation de cette technologie pour le développement mobile sur les deux OS.

Pour des raisons de simplicité, nous parlerons indistinctement de KMP et KMM.

À ne pas confondre avec un langage hybride

Avec l’apparition ces dernières années des technologies hybrides dont on peut citer les plus répandues comme React Native, Xamarin ou encore Flutter, la confusion est souvent faite avec Kotlin Multiplateform. Le fait de pouvoir développer pour iOS et Android avec une base commune peut induire en erreur les personnes qui ne sont pas des spécialistes en technique.

Les technologies hybrides sont apparues avec la promesse de gagner un temps considérable en développant une application intégralement sous un même langage et qui est ensuite compilée à la fois pour iOS et pour Android. Elles permettent donc un gain de temps dans la phase de développement et donc un coût budgétaire bien inférieur au développement natif, où les développements sont effectués deux fois. En contrepartie, et pour pouvoir mutualiser complètement les développements, la navigation est généralement identique sur les deux plateformes, souvent en dehors des guidelines de chaque OS.

Dans le cas de Kotlin Multiplateform, il s’agit d’une mutualisation offrant la possibilité de partager une partie du code entre plusieurs plateformes. Ainsi, cela évite de devoir définir ce code pour chacune d’elles. La logique métier par exemple est un aspect qui peut souvent être commun à une application peu importe qu’elle soit déployée sur iOS e t Android. C’est donc sur cette base que la mutualisation aura lieu tandis que les aspects vue/navigation et fonctionnalités spécifiques sont développés en natif (swift pour iOS et Kotlin pour Android).

Pour bien comprendre la différence entre hybride et code mutualisé nous vous conseillons de consulter notre article dédié. Dans cet article nous précisons :

"Kotlin Multiplatform propose de développer chaque plateforme dans son langage natif et de ne mutualiser que ce qui est générique entre elles."

Entre performance et flexibilité technique

Alors entre le natif et l’hybride quelles sont les raisons qui ont fait de KMP une alternative plus que crédible au point de devenir l’une des techno les plus prometteuses dans le paysage actuel ?

Tout d'abord, évoquons la performance des applications. Les technologies hybrides ne permettent pas d’égaler les performances du développement natif (Swift pour iOS, Java pour Android). L’avantage d’utiliser Kotlin Multiplatform est de bénéficier de la performance du langage natif iOS et Android. Mais alors pourquoi ne pas simplement coder en natif ? C’est là que KMP prend tout son sens. Avec la logique de mutualisation, vous obtenez un gain de temps dans la phase de développement mais également durant la maintenance puisque tout ce qui peut être mutualisable ne sera codé qu’une seule fois. La part de code commun est donc plus faible que pour une application hybride mais tout en pouvant bénéficier de la performance du natif.

La flexibilité technique offerte par la puissance du développement natif est un point non négligeable à prendre en compte. En restant sur un développement natif grâce à KMP, vous bénéficiez des librairies natives de chaque OS qui ne sont évidemment pas toutes disponibles en hybride. Nous pouvons prendre l’exemple des librairies dédiées à la publicité mobile. Cet aspect est primordial notamment dans le cadre de la monétisation de votre app.

Entre les performances du natif et la stabilité provoquée par Kotlin, la qualité du développement de votre application mobile est renforcée.

Enfin dernier point et qui passe souvent au second plan dans les phases de réflexion en amont des projets concerne la maintenance. Or, ce point est à prendre en compte dès le départ dans le choix de sa technologie. Le cycle de vie des applications hybride est plus faible qu’en natif car la maintenance préventive et évolutive est plus complexe sur la durée. Intervenir sur votre application compilée pour iOS impacte votre application compilée pour Android puisqu’elles ont le même code commun. L’avantage de KMP est l’indépendance entre les deux malgré la partie mutualisée. La maintenance de ce qui est spécifique à chaque OS comme la montée de version se fait indépendamment tandis que la maintenance de ce qui est propre à l'application comme des évolutions fonctionnelles peut être mutualisée.

KMP se positionne comme une alternative crédible et pertinente pour vos applications mobiles puisque cela vous permet de bénéficier de l’avantage du natif tout en gagnant en souplesse et en rapidité d’exécution mais avec des performances identiques et donc bien supérieures aux technologies hybrides.

Découvrez le retour d’expérience sur KMP de l’un de nos développeurs chez Beapp ! Quentin se confie sur cette technologie et nous fait part de son avis.

À retenir

  • Kotlin Multiplateform est un moteur technique qui se base sur le langage Kotlin pour le compiler pour Android et iOS.
  • KMP n’est pas une solution technique hybride puisqu’elle se base sur les spécificités du développement natif de chaque OS
  • Permet de mutualiser les logiques communes
  • Gain de temps de développement par rapport au natif sans réduction de la performance

Si le sujet KMP vous intéresse, nous vous recommandons l'interview vidéo de Quentin, expert Android chez Beapp, qui revient pour vous sur son expérience de Kotlin Multiplatform !