On the adoption, usage and evolution of Kotlin features in Android development ESEM ’20, October 8–9, 2020, Bari, Italy
REFERENCES
[1]
2016. Comparison to Java Programming Language. https://kotlinlang.org/docs/
reference/comparison-to-java.html Online; accessed 01-July-2019.
[2]
2016. Inline Classes. https://kotlinlang.org/docs/reference/functions.html#tail-
recursive-functions Online; accessed 01-July-2019.
[3]
2016. Inline Functions. https://kotlinlang.org/docs/reference/inline-functions.
html Online; accessed 01-July-2019.
[4]
2017. Will "It" variable stay or go? https://discuss.kotlinlang.org/t/will-it-
variable-stay-or-go/522/19 Online; accessed 01-July-2019.
[5]
2018. Inline Classes. https://kotlinlang.org/docs/reference/inline-classes.html
Online; accessed 01-July-2019.
[6]
Kevin Allix, Tegawendé F. Bissyandé, Jacques Klein, and Yves Le Traon. 2016. An-
droZoo: Collecting Millions of Android Apps for the Research Community Kevin.
Proceedings of the 13th International Workshop on Mining Software Repositories -
MSR ’16 (2016), 468–471. https://doi.org/10.1145/2901739.2903508
[7]
Paolo Calciati and Alessandra Gorla. 2017. How Do Apps Evolve in Their Per-
mission Requests?: A Preliminary Study. In Proceedings of the 14th International
Conference on Mining Software Repositories (Buenos Aires, Argentina) (MSR ’17).
IEEE Press, Piscataway, NJ, USA, 37–41. https://doi.org/10.1109/MSR.2017.64
[8]
Paolo Calciati, Konstantin Kuznetsov, Xue Bai, and Alessandra Gorla. 2018. What
Did Really Change with the New Release of the App?. In Proceedings of the 15th
International Conference on Mining Software Repositories (Gothenburg, Sweden)
(MSR ’18). ACM, New York, NY, USA, 142–152. https://doi.org/10.1145/3196398.
3196449
[9]
Carl Chapman and Kathryn T. Stolee. 2016. Exploring Regular Expression Usage
and Context in Python. In Proceedings of the 25th International Symposium on
Software Testing and Analysis (Saarbrücken, Germany) (ISSTA 2016). ACM, New
York, NY, USA, 282–293. https://doi.org/10.1145/2931037.2931073
[10]
Roberta Coelho, Lucas Almeida, Georgios Gousios, and Arie van Deursen. 2015.
Unveiling Exception Handling Bug Hazards in Android Based on GitHub and
Google Code Issues. In Proceedings of the 12th Working Conference on Mining
Software Repositories (Florence, Italy) (MSR ’15). IEEE Press, 134–145.
[11]
Android Developers. [n.d.]. Use common Kotlin patterns with Android. https:
//developer.android.com/kotlin/common-patterns#delegate Online; accessed
01-July-2019.
[12]
Android Developers. 2017. Use Java 8 language features. https://developer.
android.com/studio/write/java8-support Online; accessed 01-July-2019.
[13]
Android Developers. 2019. AsyncTask API Reference. https://developer.android.
com/reference/android/os/AsyncTask/ [Online; accessed 3-December-2019].
[14]
Robert Dyer. 2013. A Large-scale Empirical Study of Java Language Feature Usage.
Technical Report. Iowa State University.
[15]
Robert Dyer, Hridesh Rajan, Hoan Anh Nguyen, and Tien N. Nguyen. 2014.
Mining Billions of AST Nodes to Study Actual and Potential Usage of Java
Language Features. In Proceedings of the 36th International Conference on Software
Engineering (Hyderabad, India) (ICSE 2014). ACM, New York, NY, USA, 779–790.
https://doi.org/10.1145/2568225.2568295
[16]
Martin Fowler. 2018. Refactoring: improving the design of existing code. Addison-
Wesley Professional.
[17]
Keheliya Gallaba, Quinn Hanam, Ali Mesbah, and Ivan Beschastnikh. 2017. Refac-
toring asynchrony in JavaScript. In 2017 IEEE International Conference on Software
Maintenance and Evolution (ICSME). IEEE, IEEE, 353–363.
[18]
Franz-Xaver Geiger, Ivano Malavolta, Luca Pascarella, Fabio Palomba, Dario
Di Nucci, and Alberto Bacchelli. 2018. A Graph-based Dataset of Commit History
of Real-world Android Apps. In Proceedings of the 15th International Conference
on Mining Software Repositories (Gothenburg, Sweden) (MSR ’18). ACM, New
York, NY, USA, 30–33. https://doi.org/10.1145/3196398.3196460
[19]
Bruno Góis Mateus and Matias Martinez. 2019. An empirical study on quality of
Android applications written in Kotlin language. Empirical Software Engineering
24, 6 (01 Dec 2019), 3356–3393. https://doi.org/10.1007/s10664-019-09727-4
[20]
Chet Haase. 2019. Google I/O 2019: Empowering developers to
build the best experiences on Android Play. https://android-
developers.googleblog.com/2019/05/google-io-2019-empowering-developers-
to-build-experiences-on-Android-Play.html Online; accessed 21-April-2020.
[21]
Sarra Habchi, Romain Rouvoy, and Naouel Moha. 2019. On the Survival of
Android Code Smells in the Wild. In Proceedings of the 6th International Confer-
ence on Mobile Software Engineering and Systems (Montreal, Quebec, Canada)
(MOBILESoft ’19). IEEE Press, 87–98.
[22]
Georey Hecht, Omar Benomar, Romain Rouvoy, Naouel Moha, and Laurence
Duchien. 2015. Tracking the Software Quality of Android Applications Along
Their Evolution. In Proceedings of the 2015 30th IEEE/ACM International Conference
on Automated Software Engineering (ASE) (ASE ’15). IEEE Computer Society,
Washington, DC, USA, 236–247. https://doi.org/10.1109/ASE.2015.46
[23]
JetBrains. 2019. Kotlin Coding Conventions.
https://kotlinlang.org/docs/reference/coding-conventions.html.
[24]
JetBrains. 2019. Kotlin Language Documentation.
https://kotlinlang.org/docs/kotlin-docs.pdf.
[25]
Eric Jones, Travis Oliphant, Pearu Peterson, et al
.
2001–. SciPy: Open source
scientic tools for Python. http://www.scipy.org/ [Online; accessed 21-April-
2020].
[26]
I. Malavolta, R. Verdecchia, B. Filipovic, M. Bruntink, and P. Lago. 2018. How
Maintainability Issues of Android Apps Evolve. In 2018 IEEE International
Conference on Software Maintenance and Evolution (ICSME). 334–344. https:
//doi.org/10.1109/ICSME.2018.00042
[27]
B. A. Malloy and J. F. Power. 2017. Quantifying the Transition from Python 2 to
3: An Empirical Study of Python Applications. In 2017 ACM/IEEE International
Symposium on Empirical Software Engineering and Measurement (ESEM). 314–323.
https://doi.org/10.1109/ESEM.2017.45
[28]
Brian A. Malloy and James F. Power. 2019. An empirical analysis of the transition
from Python 2 to Python 3. Empirical Software Engineering 24, 2 (01 Apr 2019),
751–778. https://doi.org/10.1007/s10664-018-9637-2
[29]
Matias Martinez and Bruno Gois Mateus. 2020. How and Why did developers
migrate Android Applications from Java to Kotlin? A study based on code analysis
and interviews with developers. https://arxiv.org/pdf/2003.12730.pdf. (2020).
arXiv:2003.12730
[30]
Matias Martinez and Martin Monperrus. 2019. Coming: A Tool for Mining Change
Pattern Instances from Git Commits. In Proceedings of the 41st International
Conference on Software Engineering: Companion Proceedings (Montreal, Quebec,
Canada) (ICSE ’19). IEEE Press, 79–82. https://doi.org/10.1109/ICSE-Companion.
2019.00043
[31]
Davood Mazinanian, Ameya Ketkar, Nikolaos Tsantalis, and Danny Dig. 2017.
Understanding the Use of Lambda Expressions in Java. Proc. ACM Program. Lang.
1, OOPSLA, Article 85 (Oct. 2017), 31 pages. https://doi.org/10.1145/3133909
[32]
Roberto Minelli and Michele Lanza. 2013. Software analytics for mobile ap-
plications - Insights & lessons learned. Proceedings of the European Confer-
ence on Software Maintenance and Reengineering, CSMR (2013), 144–153. https:
//doi.org/10.1109/CSMR.2013.24
[33]
V. Oliveira, L. Teixeira, and F. Ebert. 2020. On the Adoption of Kotlin on Android
Development: A Triangulation Study. In 2020 IEEE 27th International Conference
on Software Analysis, Evolution and Reengineering (SANER). IEEE, 206–216.
[34]
H. Osman, A. Chis, C. Corrodi, M. Ghafari, and O. Nierstrasz. 2017. Exception
Evolution in Long-Lived Java Systems. In 2017 IEEE/ACM 14th International
Conference on Mining Software Repositories (MSR). 302–311. https://doi.org/10.
1109/MSR.2017.21
[35]
H. Osman, A. Chiş, J. Schaerer, M. Ghafari, and O. Nierstrasz. 2017. On the
evolution of exception usage in Java projects. In 2017 IEEE 24th International
Conference on Software Analysis, Evolution and Reengine ering (SANER). IEEE,
422–426. https://doi.org/10.1109/SANER.2017.7884646
[36]
Chris Parnin, Christian Bird, and Emerson Murphy-Hill. 2011. Java
Generics Adoption: How New Features are Introduced, Champi-
oned, or Ignored. In Proceedings of the International Working Con-
ference on Mining Software Repositories (proceedings of the interna-
tional working conference on mining software repositories ed.). ACM.
https://www.microsoft.com/en-us/research/publication/java-generics-
adoption-how-new-features-are-introduced-championed-or-ignored/
[37]
Chris Parnin, Christian Bird, and Emerson Murphy-Hill. 2013. Adoption and use
of Java generics. Empirical Software Engineering 18, 6 (01 Dec 2013), 1047–1089.
https://doi.org/10.1007/s10664-012-9236-6
[38]
G. Pinto, K. Liu, F. Castor, and Y. D. Liu. 2016. A Comprehensive Study on the
Energy Eciency of Java’s Thread-Safe Collections. In 2016 IEEE International
Conference on Software Maintenance and Evolution (ICSME). 20–31. https://doi.
org/10.1109/ICSME.2016.34
[39]
Gustavo Pinto, Weslley Torres, Benito Fernandes, Fernando Castor, and
Roberto S.M. Barros. 2015. A Large-scale Study on the Usage of Java’s Con-
current Programming Constructs. J. Syst. Softw. 106, C (Aug. 2015), 59–81.
https://doi.org/10.1016/j.jss.2015.04.064
[40]
Leonardo Humberto Silva, Miguel Ramos, Marco Tulio Valente, Alexandre Bergel,
and Nicolas Anquetil. 2015. Does JavaScript software embrace classes?. In 2015
IEEE 22nd International Conference on Software Analysis, Evolution, and Reengi-
neering (SANER). IEEE, 73–82.
[41]
Andrew Sutton, Ryan Holeman, and Jonathan I. Maletic. 2010. Identication
of Idiom Usage in C++ Generic Libraries. In Proceedings of the 2010 IEEE 18th
International Conference on Program Comprehension (ICPC ’10). IEEE Computer
Society, USA, 160–169. https://doi.org/10.1109/ICPC.2010.37
[42]
Michele Tufano, Fabio Palomba, Gabriele Bavota, Rocco Olivetox, Massimiliano Di
Penta, Andrea De Lucia, and Denys Poshyvanyk. 2015. When and why your code
starts to smell bad. Icse 1 (2015), 403–414. https://doi.org/10.1109/ICSE.2015.59
[43]
Phillip Merlin Uesbeck, Andreas Stek, Stefan Hanenberg, Jan Pedersen, and
Patrick Daleiden. 2016. An Empirical Study on the Impact of C++ Lambdas
and Programmer Experience. In Proceedings of the 38th International Conference
on Software Engineering (Austin, Texas) (ICSE ’16). ACM, New York, NY, USA,
760–771. https://doi.org/10.1145/2884781.2884849
[44]
Di Wu, Lin Chen, Yuming Zhou, and Baowen Xu. 2016. An Extensive Empirical
Study on C++ Concurrency Constructs. Inf. Softw. Technol. 76, C (Aug. 2016),
1–18. https://doi.org/10.1016/j.infsof.2016.04.004