Accueil > Kotlin : le nouveau Java ?
Grégory Delaunay
7 avril 2022
Read this post in English

Kotlin : le nouveau Java ?

Kotlin le nouveau Java

Kotlin est un langage de programmation orienté objet et fonctionnel principalement développé par JetBrains. Conçu pour pouvoir être compilé pour la machine virtuelle Java entre autres, ses applications sont multiples. Cependant, après avoir été annoncé comme langage supporté pour le développement d’applications natives Android par Google, Kotlin est maintenant le langage officiel recommandé à la place de Java. C’est principalement dans ce cadre que nous allons en parler dans le cadre de cet article.

 

Quels sont les avantages de Kotlin ?

 

Le langage de programmation Kotlin suscite chez les développeurs un véritable enthousiasme. En effet, ses nombreux avantages en font un outil particulièrement pratique pour gagner en temps et en efficacité.

 

Un langage explicite

Kotlin est un langage explicite : tout ce qui n’est pas explicitement écrit dans le code est donc interdit (inférence de type, héritage, nullabilité…). En utilisant ce langage, on a la certitude que le code utilisé ira dans le sens que l’on a choisi et pas autrement. C’est notamment le cas pour les classes. Avec Kotlin, les classes sont finales par défaut (non héritables) : il est donc nécessaire d’explicitement marquer une classe comme ouverte pour permettre à une autre classe d’en hériter. Il en va de même pour les types. Globalement, l’explicité de Kotlin permet plus de contrôle sur le code fourni, que ce soit pour le développeur lui-même ou dans le cadre d’un partage avec une équipe de plusieurs développeurs.

 

Un langage sécurisé

Parmi ses nombreux avantages, Kotlin permet d’éviter l’erreur la plus courante dans Java : le NullPointerException. Toutes les propriétés doivent être définies soit comme « nullables » soit comme ne l’étant pas, et sont gérées avec le contrôle du code. Il ne s’agit pas d’une option mais bien d’une obligation. En évitant le NullPointerException, Kotlin permet donc de réduire un risque d’erreur très fréquent en Java au moment du runtime ou de la compilation, ce qui augmente fortement la productivité des développeurs ainsi que la résilience du code produit.

 

Un typage statique

Dans un souci d’avoir un code propre, contrôlé par le langage et non par le développeur, le typage de Kotlin est statique. Cela signifie que le type de chaque variable est connu au moment de la compilation. Le langage va déduire ses propres types au moment de compiler le code et non à l’exécution de l’application : il n’y aura donc pas d’erreur au runtime remontant que la variable traitée comme étant de tel type est erronée.

Notons que le développeur ne doit pas nécessairement préciser le type qu’il veut : c’est le langage, à la compilation, qui va déterminer de quel type il s’agit.

 

Un langage concis et proche de la syntaxe récente

Par rapport à Java, Kotlin est un langage moins «verbeux » : concrètement, il nécessite moins de lignes de code pour obtenir un même résultat qu’avec Java. Avec un nombre de lignes réduit, le temps d’écriture est diminué, assurant ainsi un vrai gain de temps et d’efficacité pour le développeur. Par ailleurs, ce langage étant proche d’autres langages récents (Swift, etc.), il permet de passer facilement de l’un à l’autre.

 

100% compatible avec Java

Grâce à une compatibilité complète entre les deux langages, Kotlin et Java peuvent être utilisés sans difficulté dans un même projet. Cela permet donc notamment l’adoption de Kotlin dans des projets en Java existants, notamment sous Android. Ainsi, dans le cas d’une application qui tournerait en composants Java, il est possible de développer de nouvelles fonctionnalités en Kotlin. Les deux langages se comprennent parfaitement et il n’est pas nécessaire de recréer des applications depuis le début si on fait le choix de passer en Kotlin.

 

Existence de librairies Kotlin

La documentation autour de Kotlin est particulièrement riche : il existe un large ensemble de librairies Kotlin pensées pour réduire les lignes de code, faciliter la tâche des développeurs et aller plus vite sur ce langage. Sur mobile, Kotlin est le langage plébiscité par Google pour les applications natives : la création de nouvelles applications natives Android sur Kotlin est simplifiée et enrichie grâce à l’utilisation de ces assets.

 

Un langage open-source et gratuit

Kotlin n’est pas un langage propriétaire. Le langage, mais également ses bibliothèques et tous les outils, sont entièrement gratuits et accessibles à tous sur GitHub. Il présente donc tous les avantages de l’open-source : accessibilité, adaptabilité aux besoins, prix, évolutivité, outils…

 

Un usage au-delà du mobile

Chez Cellenza, nous recommandons l’utilisation de Kotlin sur des applications natives Android. Mais n’oublions pas que la principale raison d’être de Kotlin est de remplacer Java : ce langage peut donc être utilisé pour des applications back-end, autres que le mobile. Ce langage tend à s’étendre de plus en plus car les développeurs qui travaillent sur Kotlin créent de plus en plus d’interopérabilité.

 

Les inconvénients de Kotlin

 

Kotlin a été développé pour pallier certains inconvénients de Java : une importante réflexion a été menée en amont pour corriger ce qui pouvait l’être par rapport à Java. Les faiblesses de cette solution sont donc peu nombreuses. Nous pouvons toutefois en relever deux :

  • Une compilation moins propre : si Kotlin est plus rapide pendant le cycle de développement de l’application, l’exécutable est un peu plus gros qu’en Java. D’un point de vue optimisation pure, un projet Android en Java sera plus léger que sur Kotlin (en raison notamment de résidus de code), mais cette différence de poids reste mineure.
  • Absence de namespace : en termes de code pur, Kotlin n’a pas de namespace. Il n’est donc pas possible de ranger les classes en sous-groupes : toutes les classes sont au même niveau et ne peuvent donc pas être triées. Il n’est pas non plus possible d’avoir deux classes avec le même nom. Cette fonctionnalité manquante n’est toutefois pas gênante dans une architecture propre.

 

 

Recommandations de Cellenza sur l’utilisation de Kotlin

 

En tant qu’experts des solutions mobiles, nous conseillons avant tout l’utilisation de Kotlin pour tout nouveau projet natif Android. En effet, les très nombreux avantages de ce langage en font une solution parfaitement adaptée aux besoins des développeurs web : un développement facilité à la fois plus rapide et plus sûr, la certitude que l’application restera supportée dans le temps grâce aux dernières mises à jour, un temps de débuggage réduit… Pour les nouveaux projets, nous recommandons donc d’utiliser Kotlin plutôt que Java, aussi bien sur le plan technique et fonctionnel.

Nous préconisons également l’utilisation de Kotlin sur le développement de nouveaux modules et de nouvelles fonctionnalités. Grâce à sa comptabilité à 100% avec Java sans perte de performance, rien n’empêche de passer sur Kotlin pour ces nouvelles features sur une application initialement développée en Java. Apportons toutefois une nuance : certains paramètres tels que l’équipe projet ou la taille de l’application (y compris les librairies) doivent être pris en compte avant de décider d’aller sur Kotlin.

 

Cas pratique d’utilisation de Kotlin

 

Abordons maintenant un cas concret d’utilisation du Kotlin pour la réalisation d’une application mobile native Android.

Dans le cadre d’un projet interne chez Cellenza, j’ai été amené à concevoir une application Android POC (Proof of Concept) permettant de gérer des parties de jeux de sociétés entre amis. Ayant déjà des expériences de développement Android avec Java, j’ai saisi l’opportunité de travailler cette fois avec Kotlin afin de me rendre compte des possibilités du langage.

Parmi les fonctionnalités implémentées, nous retrouvons:

  • Consultation des dernières parties effectuées ;
  • Consultation du détail d’une partie avec les résultats ;
  • Prise de photos d’une partie ;
  • Notification de partie terminée lorsque l’on est participant.

 

Côté technique, l’application a été développée en suivant le pattern MVVM (Model, View, ViewModel) et les fonctionnalités présentées induisent la gestion des points suivants :

  • Récupération des données via API REST (utilisation de la librairie Retrofit
    et des Coroutines;
  • Gestion du cache pour accéder aux données en mode offline (utilisation de la librairie Room) ;
  • Navigation entre plusieurs vues (utilisation de Jetpack Navigation)
  • Gestion du cycle de vie des activités (utilisation des LiveData)
  • Développement d’interfaces
  • Gestion de l’appareil photo, des permissions associées et du stockage de la photo prise ;
  • Utilisation du service de notification push.

 

Comme vous pouvez le constater, Android met à disposition un ensemble d’outils permettant de réaliser des applications de manière rapide, efficace et respectant les critères de qualité.  Voici les éléments qui ont particulièrement retenu mon attention :

  • Les coroutines : une fonctionnalités venant directement du langage Kotlin permettant de simplifier la gestion des appels asynchrones, leurs résultats, et de réagir de manière fluide et sécurisée.
  • Les LiveData : une fonctionnalité d’Android mais pleinement exploitable en Kotlin. Certaines librairies AndroidX fournies par Google permettent d’en faciliter grandement l’usage. Il s’agit, pour résumer, d’objets qui observent les changements d’état du cycle de vie de notre application et qui y réagissent afin de s’assurer de la validité des données qu’ils contiennent : cela permet d’éviter de nombreuses erreurs lorsque l’on revient sur un écran, qu’on le fait pivoter, ou bien quand l’utilisateur avait mis son application en background et revient dessus.
  • La simplicité d’intégration : venant du développement Java pour le développement natif, j’étais curieux de la façon dont on allait pouvoir utiliser toutes les composantes d’Android en Kotlin. Je suis agréablement surpris de la simplicité, de la rapidité et de l’efficacité de l’implémentation en Kotlin

Tous ces éléments ainsi que les avantages du langage expliqués ci-dessus ont contribué à renforcer nos convictions sur l’utilisation du Kotlin pour le développement des applications natives Android.

Vous souhaitez en savoir plus sur les différentes technologies existantes pour créer des applications mobiles ? Découvrez dès à présent tous les articles de cette série :

 

Formation Microsoft AZ204

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.