Towards high-quality Android applications development with Kotlin

Bruno Góis Mateus · theses.fr (ABES) · 2021

Android de Google domine le marché des systèmes d’exploitation mobiles dans le monde entier. Malgré ce succès, Google continue à faire évoluer son système d’exploitation et ses kits d’outils pour faciliter le développement des applications. Kotlin est le langage de programmation officiel d'Android. Il s’exécute sur la machine virtuelle Java (JVM) et il est entièrement interopérable avec Java car les deux langages sont compilés en bytecode JVM. En raison de cette caractéristique, les développeurs Android n’ont pas besoin de migrer leurs applications existantes vers Kotlin pour commencer à l’utiliser dans ces applications. De plus, il propose une approche différente pour écrire des applications car il combine des fonctionnalités orientées objet et fonctionnelles. Par conséquent, nous émettons l’hypothèse que l’adoption de Kotlin par les développeurs Android peut affecter différents aspects du développement des applications Android. Cependant, un an après cette première annonce, il n’y avait aucune étude dans la littérature sur Kotlin. Dans cette thèse, nous avons mené une série d’études empiriques pour combler ces lacunes et développer une meilleure compréhension de la création d’applications Android de haute qualité à l’aide de Kotlin. Tout d’abord, nous avons réalisé une étude pour mesurer le degré d’adoption de Kotlin. Nos résultats ont montré que 11% des applications Android étudiées avaient adopté Kotlin. Ensuite, nous avons analysé l’impact de l’adoption de Kotlin sur la qualité des applications Android en termes de défauts de code. Nous avons constaté que l’introduction du code Kotlin dans les applications Android initialement écrites en Java produit une augmentation des scores de qualité de 50% à 80% selon les défauts de code considérés. Nous avons analysé l’évolution de l’utilisation des fonctionnalités introduites par Kotlin, telles que Smart cast, et comment la quantité de code Kotlin change au fil de l’évolution des applications. Nous avons constaté que le nombre d’instances de fonctionnalités a tendance à augmenter tout au long de l’évolution des applications. Enfin, nous nous sommes concentrés sur la migration des applications Android de Java vers Kotlin. Nous avons constaté que 25% des applications open source initialement écrites en Java ont complètement migré vers Kotlin, et pour 19%, la migration s’est faite progressivement, sur plusieurs versions, grâce à l’interopérabilité entre Java et Kotlin. Cette activité de migration est difficile car : a) chaque morceau de code migré doit être testé de manière exhaustive après la migration pour s’assurer qu’il préserve le comportement attendu; b) un projet peut être énorme, composé de plusieurs dossiers candidats à migrer. Dans cette thèse, nous présentons une approche de prise en charge de la migration, qui propose, étant donné une version d’une application écrite en Java et éventuellement, en Kotlin, les fichiers les plus pratiques à migrer. Nous avons évalué la faisabilité de notre approche en appliquant deux techniques d’apprentissage automatique différentes : la classification et l’apprentissage par rang. Nos résultats ont montré que les deux techniques surpassent légèrement les approches aléatoires. Toutefois, notre approche est la première à proposer l’utilisation du machine learning pour recommander des migrations au niveau des fichiers. Par conséquent, nos résultats définissent une base de référence pour les travaux futurs. Comme la migration de Java vers Kotlin peut avoir un impact positif sur la maintenance de l’application et que la migration est longue et difficile, les développeurs peuvent utiliser notre approche pour sélectionner les fichiers à migrer en premier. Enfin, nous discutons de plusieurs perspectives de recherche ouvertes par nos résultats qui peuvent améliorer l’expérience de création d’applications Android de haute qualité à l’aide de Kotlin.

Read the paper · More papers on PaperTik