Meta abandonne Java au profit de Kotlin pour le développement sur Android

Par:
fredericmazue

ven, 28/10/2022 - 12:27

Dans un intéressant billet intitulé "De zéro à 10 millions de lignes de Kotlin", l'entreprise Meta, ex Facebook, explique désormais utiliser Kotlin au lieu de Java pour développer sur Android, et décrit la migration de son code existant.

Pour justifier son choix, Meta remarque que Kotlin est généralement considéré comme un meilleur langage que Java et dit avoir comparé la dernière version de Kotlin avec Java 11, qui est la dernière version pouvant être utilisée pour le développement Android.

Meta voit quelques avantages majeurs à Kotlin :

  • Nullability : les exceptions de pointeur Null sont un problème courant chez Meta, comme partout ailleurs. Nous sommes très bons pour les corriger avant de publier nos applications, mais traiter ces problèmes prend encore du temps. Nous utilisons des outils internes pour détecter plus tôt les problèmes de sécurité nuls, et nous annotons rigoureusement notre code dans le cadre de notre travail pour détecter ces problèmes dans Java plus tôt . Mais même avec cela, la gestion de nullabilité intégrée de Kotlin est plus robuste et plus facile à utiliser.
  • Programmation fonctionnelle : la prise en charge par Kotlin des fonctions en ligne et des expressions lambda nous permet d'utiliser un style de programmation fonctionnel sans compromettre la vitesse d'exécution. Bien que Java 8 ajoute la prise en charge des lambdas et soit disponible pour Android, cela se fait au prix d'objets plus anonymes, ce qui affecte négativement les performances sur les appareils Android bas de gamme. Le Redex maison de Meta minimise ces problèmes, mais ils existent toujours, faisant de Kotlin une meilleure alternative.
  • Code plus court : la conception moderne de Kotlin rend son code plus court. Kotlin permet de supprimer des types explicites (comme le fait Java 11), et avec la bibliothèque standard, qui est basée sur le style fonctionnel mentionné ci-dessus, il raccourcit de nombreuses boucles répétitives en instructions plus simples. Ce code plus court est également plus explicite, ce qui peut le rendre plus facile à suivre.
  • Langage spécifique au domaine (DSL) / Constructeurs de type sécurisé : Les différentes fonctionnalités de Kotlin se rejoignent et nous permettent de définir un DSL. Fondamentalement, un moyen de déplacer des définitions telles que les XML Android à implémenter directement dans le code Kotlin. Mais cet outil doit être utilisé avec précaution car la mise en œuvre de DSL dans Kotlin peut être utile ou se transformer en ingénierie excessive.

Meta énumère aussi quelques inconvénients au passage à Kotlin. Notamment le fait qu'il existe moins d'outils de développement pour Kotlin que pour Java et le fait que les temps de construction des applications sont potentiellement beaucoup plus longs.

Le reste du billet détaille comment le code a été migré de Java à Kotlin, avec des résultats satisfaisants. Meta apprécie une taille du code réduite pour des vitesses d'exécution sensiblement identiques. Les temps de construction des applications ont effectivement augmenté avec le passage à Kotlin, mais Meta traite ce problème avec certaines des fonctionnalités de son outil de construction de projets maison Buck.