Kotlin: Le nouveau langage de référence pour le développement d’applis Android

30. août 2019 - de Yannick Pulver

Kotlin est désormais le langage de programmation de référence pour le développement d’applis natives. Avec notre projet Five up, nous avons développé pour la première fois une appli Android en nous servant uniquement de Kotlin. Nous souhaitons répondre dans ce blog à quelques questions qui surgissent régulièrement autour de ce thème.

En quoi consiste Kotlin ?

Kotlin est un langage de programmation tout comme Java, Python, C++, etc. Le code Kotlin peut être transformé en code en octets pour Java Virtual Machine (JVM), pour le code source JavaScript ou bien directement en langage machine. En d'autres termes moins techniques, cela signifie que ce langage de développement de programmes peut être utilisé pour diverses plateformes. Kotlin a été développé par JetBrains, entre autres connu pour ses environnements de développement comme IntelliJ IDEA. Comparé au langage de programmation Java, apparu en 1995, Kotlin est encore plutôt récent (paru en 2011).

Depuis l’annonce lors du Google I/O en 2017, Kotlin est officiellement soutenu pour le développement Android. Depuis cet été, Kotlin est devenu le langage préféré par Google pour le développement Android et remplace ainsi Java. Pas étonnant, car déjà à la Droidcon 2018  il n'y avait pratiquement pas de code Java sur les diapositives des intervenants. Cela montre clairement que le soutien de Kotlin est très apprécié par la communauté Android; il y est même célébré.

Comment Kotlin se distingue-t-il de Java? Quels sont les avantages et les inconvénients par rapport à Java?

Kotlin permet de présenter l'essentiel du code un peu mieux que Java. L’absence des points-virgules, des déclarations types explicites et l’ajout du mot-clé final sont trois des nombreuses différences notables. Dans les sections suivantes, quelques modifications sont présentées en détails.

La gestion des valeurs "nulles"

Quand on développe avec Java, il est possible d’attribuer à chaque variable de chaque type des valeurs "nulles". "Nul" signifie en principe "rien". À priori, cela semble pratique dans certains cas. Pour que ce comportement reste sous contrôle, il faut en partie vérifier si les variables sont nulles ou non nulles. Cela nécessite de remplir le code avec des boucles "if". Lorsque l’on renonce à ces requêtes, cela peut entraîner une erreur de type "exception de pointeur nul". (Tout développeur ou développeuse Java en a certainement déjà fait l’expérience.)

Dans Kotlin, les valeurs nulles sont en revanche contrôlées par le système de type. Cela signifie qu’une variable ne pourra généralement pas être nulle, sauf si elle est spécifiquement définie "nullable" en préfixant le nom du type avec un point d'interrogation (cf. Code Snippet). Les boucles "if" mentionnées sont alors superflues dans de nombreux scénarios. Et si une vérification devait être nécessaire, Kotlin met à disposition quelques fonctions Scope pratiques comme "let".

Bon à savoir: lors de l’attribution, une boucle "if" peut être évitée avec l’opérateur Elvis.

Les classes de données

Souvent, des classes sont établies pour ne contenir que des données. Dans des schémas d’architectures comme MVVM (Modèle-Vue-Vue Modèle) ou MVP (Modèle-Vue-Présentation), de telles classes sont étiquetées comme "modèles". Dans Java, de telles classes contiennent beaucoup de lignes de code répétitif avec ce que l’on appelle des "getters" (méthodes d’obtention) et des "setters" (méthodes d’assignation) qui servent à encapsuler les variables. Kotlin simplifie la création de tels modèles avec des classes de données. La classe de Java, considérablement plus grande, peut être remplacée à l’aide d’une seule ligne de code.

Lors de l’application de la classe, on renonce à tout ce qui est superflu. Au lieu d’utiliser des "getters", on accède directement aux noms des variables. Cela contribue grandement à améliorer la lisibilité du code.


Les fonctions d’extension

La fonctionnalité des classes peut être étendue à l’aide de fonctions d’extension. Cette extension a lieu sans modifier la classe elle-même. Cela est peu envisageable avec les classes propres, mais peut, en revanche, être bien appliqué avec des classes non influençables comme les classes Android. Nous avons, par exemple, employé ces fonctions d’extension pour améliorer la visibilité de l’assignation. Cela contribue à rendre le code fondamentalement plus lisible et à déplacer des parties répétitives et peu lisibles dans de telles fonctions d’extension.

Ces fonctions doivent cependant être utilisées avec précaution. Trop d’extensions peuvent nuire à la lisibilité du code.

L’application de ces fonctions d’extension se déroule comme suit:    

Les trois modifications décrites proposées par Kotlin ne sont que quelques exemples parmi tant d’autres. Par rapport à Java, elles rendent le langage très plaisant pour le développement de logiciels. La documentation officielle de Kotlin fourmille d’exemples d’utilisations judicieuses de ce langage: kotlinlang.org.

Pourquoi avons-nous utilisé Kotlin pour Five up?

Comme déjà mentionné brièvement: en tant que développeur de logiciels Android, il est actuellement difficile de se passer de Kotlin. Les requêtes Google ne présentent plus les exemples d’encodages Java qu’au deuxième rang, voire plus du tout. Pour les projets existants, Il ne nous semble pas judicieux de n’écrire que certaines classes avec Kotlin. C’est ainsi pour le tout nouveau développement de Five up, Kotlin nous a paru parfaitement adapté.

Le bilan six mois après le lancement: ce choix a-t-il fait ses preuves ?

Au début, beaucoup de codes furent programmés avec Kotlin, mais dans le style de Java. Toutefois, nous avons rapidement réussi à mettre en œuvre judicieusement les capacités de Kotlin. Nous avons également remarqué, au cours du projet, que des bibliothèques connues passaient de plus en plus souvent à Kotlin et utilisaient ainsi des fonctionnalités comme celles des fonctions d’extension.

L’environnement de développement Android Studio y contribue énormément, car il convertit automatiquement le code Java en Kotlin lorsque l’on copie celui-ci dans un fichier Kotlin. Ce petit jeu fonctionne aussi en sens inverse. Nous avons la possibilité de visionner le code Java du fichier Kotlin. Cela peut régulièrement aider à gagner une meilleure compréhension de Kotlin.

Nous avons également misé sur les composants de l’architecture Android pour Five up. Cette collection de bibliothèques définit l’architecture des applis Android préconisée par Google. Bien que ces bibliothèques puissent aussi être employées avec Java, la gestion est beaucoup plus intuitive avec Kotlin.

With great power comes great responsibility.

Stan Lee

Alors oui, ce choix a donc bien fait ses preuves! L’utilisation de Kotlin s’est révélée être la bonne décision. Surtout puisque Kotlin est maintenant considéré comme le langage principal pour Android. Il y a cependant, comme pour tout, des points qui jouent contre Kotlin. Certains sont résumés dans l’article suivant: Why Kotlin Sucks

En quoi la maintenance se différencie-t-elle de Java?

Le développement de Kotlin se poursuit activement. Des nouvelles fonctionnalités et améliorations apparaissent régulièrement. On peut en outre participer au développement de Kotlin en tant que contributeur Open Source.

Nous utilisons une architecture similaire à celle que nous employons aussi pour les projets Java. La maintenance des projets reste ainsi identique. L’avantage réside dans la compréhension rapide du projet par les développeurs, que ce soit avec Java ou avec Kotlin.

Comment Kotlin va-t-il s’imposer au niveau du développement d’applis Android? Ne réaliserons-nous plus que des projets avec Kotlin?

Kotlin s’est déjà imposé clairement. À long terme, revenir à Java ne semble pas judicieux. Et encore moins quand les bibliothèques Google ne seront plus mises au point qu’avec Kotlin. Il faut désormais essayer d’intégrer Kotlin le mieux possible aux projets existants et futurs.

Faut-il procéder à une migration des vieux projets sur Kotlin?

Effectuer une migration de vieux projets ne semble pas judicieux. Nous nous sommes toutefois fixé pour objectif de ne plus rédiger de nouvelles fonctions qu’avec Kotlin. Cela peut mener, au fil du temps, à la transformation complète de certains vieux projets en Kotlin. À court terme, nous ne pouvons cependant pas nous passer du développement avec Java. Comme nous connaissons néanmoins les avantages de Kotlin, nous nous efforcerons certainement de favoriser l’utilisation de Kotlin au détriment de Java.

Nous venons de remarquer que vous surfez avec Internet Explorer. Malheureusement, notre site web n'est pas aussi agréable avec ce navigateur.

Vous voulez savoir pourquoi ?
Nous avons écrit à ce sujet.

Vers le blog

Vous avez besoin d'aide pour le passage à l'euro ?
Contactez-nous. Nous serons heureux de vous aider.

Contact

Installer un nouveau navigateur ?
Il y a un choix à faire.

Browser