Quantifying the adoption of Kotlin on Android stores: Insight from the bytecode

Android apps have been traditionally built using Java since the inception of Android. However, Google announced Kotlin as an official supported language for the Android platform in May 2017. Since then, the popularity of Kotlin for Android projects has steadily increased, to the point that Google announced in 2019 that "Android development will be Kotlin-first" with nearly 60% of the top 1,000 Android apps containing Kotlin code. Yet, the transition from Java to Kotlin seems gradual and most applications still partially use Java. Outside open-source apps, little is known about the real proportion of code written in Kotlin inside apps. This paper supports a better understanding of the adoption of Kotlin in the Android ecosystem. We propose an approach to identify the language, Java or Kotlin, in which a class bytecode of an Android Package Kit (APK) originate from. We applied our model on more than 200k closed-source APKs from app stores and found that (i) most of the apps classes are still written in Java, indicating a mitigated adoption of Kotlin in less popular apps, (ii) the penetration of Kotlin is steadily increasing since 2017. We believe our insights are valuable to assess the adoption of Kotlin at large.

[1]  Matias Martinez,et al.  An empirical study on quality of Android applications written in Kotlin language , 2018, Empirical Software Engineering.

[2]  Luca Ardito,et al.  Characterizing the transition to Kotlin of Android apps: a study on F-Droid, Play Store, and GitHub , 2019, WAMA@ESEC/SIGSOFT FSE.

[3]  Patrick Traynor,et al.  A Large Scale Investigation of Obfuscation Use in Google Play , 2018, ACSAC.

[4]  Andreas Zeller,et al.  Guiding App Testing with Mined Interaction Models , 2018, 2018 IEEE/ACM 5th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[5]  Nenad Medvidovic,et al.  Leveraging Program Analysis to Reduce User-Perceived Latency in Mobile Applications , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[6]  Jacques Klein,et al.  AndroZoo: Collecting Millions of Android Apps for the Research Community , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[7]  Felipe Ebert,et al.  On the Adoption of Kotlin on Android Development: A Triangulation Study , 2020, 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[8]  Jue Wang,et al.  ComboDroid: Generating High-Quality Test Inputs for Android Apps via Use Case Combinations , 2020, 2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE).

[9]  Foutse Khomh,et al.  Studying Android App Popularity by Cross-Linking GitHub and Google Play Store , 2019, 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[10]  Romain Rouvoy,et al.  The Rise of Android Code Smells: Who is to Blame? , 2019, 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR).

[11]  Yan Wang,et al.  Who Changed You? Obfuscator Identification for Android , 2017, 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[12]  Li Li,et al.  AndroZooOpen: Collecting Large-scale Open Source Android Apps for the Research Community , 2020, 2020 IEEE/ACM 17th International Conference on Mining Software Repositories (MSR).

[13]  Robin Nunkesser,et al.  Beyond Web/Native/Hybrid: A New Taxonomy for Mobile App Development , 2018, 2018 IEEE/ACM 5th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[14]  Alexandre Bergel,et al.  Vision: alleviating Android developer burden on obfuscation , 2020, MOBILESoft@ICSE.