  Currently, the majority of apps running on mobile devices are Android apps
developed in Java. However, developers can now write Android applications using
a new programming language: Kotlin, which Google adopted in 2017 as an official
programming language for developing Android apps. Since then, Android
developers have been able to: a) start writing Android applications from
scratch using Kotlin, b) evolve their existing Android applications written in
Java by adding Kotlin code (possible thanks to the interoperability between the
two languages), or c) migrate their Android apps from Java to Kotlin. This
paper aims to study this last case. We conducted a qualitative study to find
out why Android developers have migrated Java code to Kotlin and to bring
together their experiences about the process, in order to identify the main
difficulties they have faced. To execute the study, we first identified commits
from open-source Android projects that have migrated Java code to Kotlin. Then,
we emailed the developers that wrote those migrations. We thus obtained
information from 98 developers who had migrated code from Java to Kotlin. This
paper presents the main reasons identified by the study for performing the
migration. We found that developers migrated Java code to Kotlin in order to
access programming language features (e.g., extension functions, lambdas, smart
casts) that are not available with Java for Android development, and to obtain
safer code (i.e., avoid null-pointer exceptions). We also identified research
directions that the research community could focus on in order to help
developers to improve the experience of migrating their Java applications to
Kotlin.
