Why Did Developers Migrate Android Applications From Java to Kotlin?

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, And...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:IEEE transactions on software engineering Jg. 48; H. 11; S. 4521 - 4534
Hauptverfasser: Martinez, Matias, Gois Mateus, Bruno
Format: Journal Article
Sprache:Englisch
Veröffentlicht: New York IEEE 01.11.2022
IEEE Computer Society
Institute of Electrical and Electronics Engineers
Schlagworte:
ISSN:0098-5589, 1939-3520
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Abstract 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.
AbstractList 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.
Author Martinez, Matias
Gois Mateus, Bruno
Author_xml – sequence: 1
  givenname: Matias
  orcidid: 0000-0002-2945-866X
  surname: Martinez
  fullname: Martinez, Matias
  email: matias.martinez@uphf.fr
  organization: Université Polytechnique Hauts-de-France, Valenciennes, France
– sequence: 2
  givenname: Bruno
  surname: Gois Mateus
  fullname: Gois Mateus, Bruno
  email: brunomateus@ufc.br
  organization: Federal University of Ceará - Campus of Quixad, Quixadá, Brazil
BackLink https://uphf.hal.science/hal-03396017$$DView record in HAL
BookMark eNp9kL1PwzAQxS1UJNrCjsQSiYkh5WzHcTyhqB8UKGKgiNFyEoe6SuPgpJX635OSwsDAdNLd7z29ewPUK22pEbrEMMIYxO3ydToiQPCIYgI05CeojwUVPmUEeqgPICKfsUicoUFdrwGAcc76aPK-2nsTk3kTvdOFrbSrvWfz4VSjvbjMnG1PcVUVJlWNsWXtzZzdeI9qp7zGek-2KUx5d45Oc1XU-uI4h-htNl2O5_7i5f5hHC_8lBLW-EkYCJJHmPEoYaFOBNdBAjwgnARZCoJlTOURTZIAFCaKZ5EWgUgTInLOWwc6RDed70oVsnJmo9xeWmXkPF7Iww4oFSFgvsMte92xlbOfW103cm23rmzjScIpo1y0li0VdlTqbF07ncvUNN-fNk6ZQmKQh3Zl2648tCuP7bZC-CP8yfOP5KqTGK31Ly4YD5mg9AuAWYPi
CODEN IESEDJ
CitedBy_id crossref_primary_10_1109_ACCESS_2025_3544097
crossref_primary_10_1016_j_jss_2025_112346
crossref_primary_10_1016_j_aej_2024_12_081
crossref_primary_10_1109_TSE_2025_3572027
Cites_doi 10.1109/ICSE-Companion.2019.00043
10.1109/ASEW.2008.4686319
10.1109/SANER48275.2020.9054859
10.1109/52.795108
10.1109/CSMR.2008.4493342
10.1002/smr.1660
10.1145/3382494.3410676
10.1109/ICSE43902.2021.00055
10.1109/ICSA.2019.00023
10.1109/ICPC.2019.00053
10.1145/3340496.3342759
10.1002/spe.870
10.1109/TSE.2007.256943
10.1145/3238147.3238169
10.4324/9780203224342
10.1145/2568225.2568318
10.1016/S0164-1212(00)00030-3
10.1007/978-3-642-25535-9_48
10.1016/j.infsof.2008.05.012
10.1007/s11219-016-9344-4
10.1016/j.infsof.2020.106374
10.1109/MSR.2015.20
10.1016/j.infsof.2018.09.006
10.1109/WCRE.2013.6671294
10.1145/3196398.3196460
10.1007/s10664-019-09727-4
10.1007/978-3-642-29044-2
10.1145/3267183.3267186
10.1007/s10664-017-9521-5
10.4324/9780203793206
10.1145/3196321.3196341
ContentType Journal Article
Copyright Copyright IEEE Computer Society 2022
Distributed under a Creative Commons Attribution 4.0 International License
Copyright_xml – notice: Copyright IEEE Computer Society 2022
– notice: Distributed under a Creative Commons Attribution 4.0 International License
DBID 97E
RIA
RIE
AAYXX
CITATION
JQ2
K9.
1XC
VOOES
DOI 10.1109/TSE.2021.3120367
DatabaseName IEEE All-Society Periodicals Package (ASPP) 2005-present
IEEE All-Society Periodicals Package (ASPP) 1998-Present
IEEE Electronic Library (IEL)
CrossRef
ProQuest Computer Science Collection
ProQuest Health & Medical Complete (Alumni)
Hyper Article en Ligne (HAL)
Hyper Article en Ligne (HAL) (Open Access)
DatabaseTitle CrossRef
ProQuest Health & Medical Complete (Alumni)
ProQuest Computer Science Collection
DatabaseTitleList
ProQuest Health & Medical Complete (Alumni)

Database_xml – sequence: 1
  dbid: RIE
  name: IEEE Electronic Library (IEL)
  url: https://ieeexplore.ieee.org/
  sourceTypes: Publisher
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1939-3520
EndPage 4534
ExternalDocumentID oai:HAL:hal-03396017v1
10_1109_TSE_2021_3120367
9576593
Genre orig-research
GroupedDBID --Z
-DZ
-~X
.DC
0R~
29I
4.4
5GY
6IK
85S
8R4
8R5
97E
AAJGR
AARMG
AASAJ
AAWTH
ABAZT
ABPPZ
ABQJQ
ABVLG
ACGFO
ACGOD
ACIWK
ACNCT
AENEX
AGQYO
AHBIQ
AKJIK
AKQYR
ALMA_UNASSIGNED_HOLDINGS
ASUFR
ATWAV
BEFXN
BFFAM
BGNUA
BKEBE
BKOMP
BPEOZ
CS3
DU5
EBS
EDO
EJD
HZ~
I-F
IEDLZ
IFIPE
IPLJI
JAVBF
LAI
M43
MS~
O9-
OCL
P2P
Q2X
RIA
RIE
RNS
RXW
S10
TAE
TN5
TWZ
UHB
UPT
WH7
YZZ
AAYXX
CITATION
JQ2
K9.
1XC
VOOES
ID FETCH-LOGICAL-c325t-b6492f81578b56eb97e4b0742724dc095d5af83bb40a12a7d8e949cb29f773253
IEDL.DBID RIE
ISICitedReferencesCount 10
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000881981800016&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 0098-5589
IngestDate Tue Oct 14 20:28:21 EDT 2025
Fri Oct 03 03:21:24 EDT 2025
Tue Nov 18 22:30:53 EST 2025
Sat Nov 29 03:10:26 EST 2025
Wed Aug 27 02:18:48 EDT 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue 11
Keywords Mining repositories
Java
Software evolution
Mobile development
Qualitative study
Migration
Android
Kotlin
Language English
License https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/IEEE.html
https://doi.org/10.15223/policy-029
https://doi.org/10.15223/policy-037
Distributed under a Creative Commons Attribution 4.0 International License: http://creativecommons.org/licenses/by/4.0
LinkModel DirectLink
MergedId FETCHMERGED-LOGICAL-c325t-b6492f81578b56eb97e4b0742724dc095d5af83bb40a12a7d8e949cb29f773253
Notes ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
ORCID 0000-0002-2945-866X
OpenAccessLink https://uphf.hal.science/hal-03396017
PQID 2735379732
PQPubID 21418
PageCount 14
ParticipantIDs proquest_journals_2735379732
crossref_citationtrail_10_1109_TSE_2021_3120367
hal_primary_oai_HAL_hal_03396017v1
ieee_primary_9576593
crossref_primary_10_1109_TSE_2021_3120367
PublicationCentury 2000
PublicationDate 2022-11-01
PublicationDateYYYYMMDD 2022-11-01
PublicationDate_xml – month: 11
  year: 2022
  text: 2022-11-01
  day: 01
PublicationDecade 2020
PublicationPlace New York
PublicationPlace_xml – name: New York
PublicationTitle IEEE transactions on software engineering
PublicationTitleAbbrev TSE
PublicationYear 2022
Publisher IEEE
IEEE Computer Society
Institute of Electrical and Electronics Engineers
Publisher_xml – name: IEEE
– name: IEEE Computer Society
– name: Institute of Electrical and Electronics Engineers
References kut (ref32) 2017
ref57
ref13
rattra (ref44) 2020
ref56
ref59
daga (ref23) 2018
ref58
ref53
ref11
ref54
ref17
ref16
ref19
software (ref27) 2017
ref18
caneco (ref22) 2017
brodie (ref5) 1995
ref51
silverman (ref12) 2013
trehan (ref37) 2019
butterworth (ref21) 2020
ref42
ref43
beyls (ref48) 2017
(ref1) 2017
sommerhoff (ref26) 2020
mateus (ref55) 2021
ref8
ref7
(ref30) 2020
ref4
ref3
ref6
martinez (ref10) 0
abdelaziz (ref34) 2020
baxter (ref41) 2017
ref36
ref31
fernandes (ref39) 2019
hofmann (ref45) 2017
chaidarun (ref52) 2020
courtney (ref49) 2019
atha (ref29) 2018
vvra (ref40) 2017
patton (ref14) 1990
(ref35) 2020
shafirov (ref2) 2017
heath (ref25) 2019
papadopoulos (ref46) 2018
sommerhoff (ref24) 2015
saunders (ref9) 2009
wilson (ref38) 2019
ref67
ref64
ref20
ref63
thornsby (ref28) 2019
ref66
ref65
ref60
avgeriou (ref50) 2016; 6
athaydes (ref47) 2017
ref62
ref61
gour (ref33) 2020
mateus (ref15) 0
References_xml – ident: ref11
  doi: 10.1109/ICSE-Companion.2019.00043
– year: 2017
  ident: ref2
  article-title: Kotlin on Android. Now official
  publication-title: Kotlin Blog
– year: 2017
  ident: ref1
  article-title: Smartphone OS market share
– ident: ref58
  doi: 10.1109/ASEW.2008.4686319
– ident: ref4
  doi: 10.1109/SANER48275.2020.9054859
– ident: ref6
  doi: 10.1109/52.795108
– year: 2017
  ident: ref47
  article-title: Kotlin's hidden costs - Benchmarks
– year: 1995
  ident: ref5
  publication-title: Legacy Information Systems Migration Gateways Interfaces and the Incremental Approach
– year: 2018
  ident: ref29
  article-title: Java vs Kotlin - Which should you choose for android development
– ident: ref51
  doi: 10.1109/CSMR.2008.4493342
– ident: ref62
  doi: 10.1002/smr.1660
– ident: ref31
  doi: 10.1145/3382494.3410676
– ident: ref57
  doi: 10.1109/ICSE43902.2021.00055
– year: 2018
  ident: ref23
  article-title: Java vs Kotlin: Which programming language is better for android developers?
– year: 2017
  ident: ref27
  article-title: Android development using Kotlin: Streamline the development workflow
– year: 2009
  ident: ref9
  publication-title: Research methods for business students
– ident: ref42
  doi: 10.1109/ICSA.2019.00023
– ident: ref66
  doi: 10.1109/ICPC.2019.00053
– start-page: 191
  year: 2019
  ident: ref49
  article-title: Vetting anti-patterns in Java to Kotlin translation
  publication-title: Proc 34th Int Conf Comput Appl
– year: 2017
  ident: ref22
  article-title: Migrating from Java to Kotlin: The easy way
– year: 2013
  ident: ref12
  publication-title: Doing Qualitative Research A Practical Handbook
– ident: ref3
  doi: 10.1145/3340496.3342759
– ident: ref53
  doi: 10.1002/spe.870
– ident: ref56
  doi: 10.1109/TSE.2007.256943
– ident: ref19
  doi: 10.1145/3238147.3238169
– year: 2015
  ident: ref24
  article-title: Kotlin for Java developers: 10 features you will love about Kotlin
– year: 2020
  ident: ref44
  article-title: Kotlin vs Java - Android development
– year: 2021
  ident: ref55
  article-title: An experience-based recommendation system to support migrations of android applications from Java to Kotlin
– ident: ref17
  doi: 10.4324/9780203224342
– year: 2019
  ident: ref39
– year: 2017
  ident: ref32
  article-title: Ten Kotlin features to boost android development
– year: 2017
  ident: ref41
  article-title: Lessons learned while converting to Kotlin with android studio
– ident: ref36
  doi: 10.1145/2568225.2568318
– ident: ref54
  doi: 10.1016/S0164-1212(00)00030-3
– year: 2020
  ident: ref26
  article-title: Kotlin vs. Java: 9 benefits of Kotlin for your business
– year: 2020
  ident: ref34
  article-title: Migrating Java enterprise apps to Kotlin
– year: 2020
  ident: ref30
– year: 2017
  ident: ref40
  article-title: How to remove all !! from your Kotlin code
– ident: ref59
  doi: 10.1007/978-3-642-25535-9_48
– ident: ref7
  doi: 10.1016/j.infsof.2008.05.012
– year: 2017
  ident: ref45
  article-title: Migrating an android app from Java to Kotlin
– year: 2019
  ident: ref37
  article-title: Kotlin migration @pepperfry
– ident: ref64
  doi: 10.1007/s11219-016-9344-4
– ident: ref61
  doi: 10.1016/j.infsof.2020.106374
– year: 2020
  ident: ref21
  article-title: Migrating to Kotlin-What to look out for
– ident: ref20
  doi: 10.1109/MSR.2015.20
– ident: ref43
  doi: 10.1016/j.infsof.2018.09.006
– year: 2020
  ident: ref35
  article-title: Migration of Java applications to Kotlin
– year: 2017
  ident: ref48
  article-title: Exploring Kotlin's hidden costs
– ident: ref65
  doi: 10.1109/WCRE.2013.6671294
– year: 2019
  ident: ref25
  article-title: Should android devs switch from java to Kotlin? Here's google's advice on swapping programming languages
– year: 2020
  ident: ref52
  article-title: Migrating Duolingo's android app to 100% Kotlin
– ident: ref18
  doi: 10.1145/3196398.3196460
– ident: ref8
  doi: 10.1007/s10664-019-09727-4
– year: 2020
  ident: ref33
  article-title: Why you must switch from Java to Kotlin for android development?
– year: 0
  ident: ref10
  article-title: Miga tool.
– ident: ref13
  doi: 10.1007/978-3-642-29044-2
– ident: ref60
  doi: 10.1145/3267183.3267186
– ident: ref63
  doi: 10.1007/s10664-017-9521-5
– ident: ref16
  doi: 10.4324/9780203793206
– year: 2019
  ident: ref28
  article-title: Kotlin vs Java for android: Key differences
– volume: 6
  start-page: 110
  year: 2016
  ident: ref50
  article-title: Managing technical debt in software engineering (Dagstuhl Seminar 16162)
  publication-title: Dagstuhl Rep
– ident: ref67
  doi: 10.1145/3196321.3196341
– year: 1990
  ident: ref14
  publication-title: Qualitative Evaluation and Research Methods
– year: 2019
  ident: ref38
  article-title: Metrics for Okhttp's Kotlin upgrade
– year: 2018
  ident: ref46
  article-title: Effective migration to Kotlin on Android
– year: 0
  ident: ref15
  article-title: Appendix.
SSID ssj0005775
ssib053395008
Score 2.4713774
Snippet Currently, the majority of apps running on mobile devices are Android apps developed in Java. However, developers can now write Android applications using a...
SourceID hal
proquest
crossref
ieee
SourceType Open Access Repository
Aggregation Database
Enrichment Source
Index Database
Publisher
StartPage 4521
SubjectTerms android
Applications programs
Codes
Computer languages
Computer Science
Electronic devices
Internet
Interviews
Java
Kotlin
Migration
mining repositories
mobile development
Open source software
Programming languages
qualitative study
software evolution
Title Why Did Developers Migrate Android Applications From Java to Kotlin?
URI https://ieeexplore.ieee.org/document/9576593
https://www.proquest.com/docview/2735379732
https://uphf.hal.science/hal-03396017
Volume 48
WOSCitedRecordID wos000881981800016&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVIEE
  databaseName: IEEE Electronic Library (IEL)
  customDbUrl:
  eissn: 1939-3520
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0005775
  issn: 0098-5589
  databaseCode: RIE
  dateStart: 19750101
  isFulltext: true
  titleUrlDefault: https://ieeexplore.ieee.org/
  providerName: IEEE
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8QwEB5c8eDFt7i-COJFsG6bNJ3mJIu6iC8EFb2V5lFc0K2sdcF_b5JtV0URvJTSTkrp1zTfdGa-AdhlOleyoCwopN04jh7IOMfASbFhqp28jNeZvcCrq_ThQVxPwf6kFsYY45PPzIHb9bF8Xao396usIyw55oK1oIWYjGu1PtM5EHmjj8l5KpqQZCg6tzcn1hGkkfVPXdgNvy1BrUeXAOk7q_z4HPs1pjf_v7tbgLmaS5LuGPxFmDKDJZhv-jSQetouw_H94zs57mtSZwhZxkcu-14kgriExtKe6n4JZJPesHwmZ_koJ1VJzsvKUtHDFbjrndwenQZ194RAMcqrQCaxoEUa2SkpeWKkQBNL5wkjjbWyzErzvEiZlHGYRzRHnRoRCyWpKBDtFdgqTA_KgVkDohOTGC0MqlzERYgSMbTIp5wzGVEVt6HTPNBM1dLirsPFU-ZdjFBkFoLMQZDVELRhbzLiZSyr8YftjsVoYub0sE-7F5k7FjJmPbAIR1Eblh0iE6sajDZsNpBm9eR8zSxj4wydTNH676M2YJa6KgdfcrgJ09XwzWzBjBpV_dfhtn_vPgBk_tIh
linkProvider IEEE
linkToHtml http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1La9tAEB6StNBckrZpqPNol5BLoaqlfXi0p2KaGLdxTKEuzW3RPkQMjRUcxZB_n9215LYkBHoRQpoVQp9W-41m5huAY2YLo0vKklL7TeDoieYFJkGKDXMb5GWizuwIx-P84kJ-X4OPq1oY51xMPnOfwm6M5dvK3IZfZV3pybGQbB2eCc5puqzW-pPQgShahUwhctkGJVPZnfw49a4gzbyHGgJv-M8itH4ZUiBjb5UHH-S4ygy2_-_-XsJWwyZJfwn_K1hzs9ew3XZqIM3E3YGTX5d35GRqSZMj5DkfOZ9GmQgSUhorf6r_VyibDObVFflWLApSV-Ssqj0Z_fwGfg5OJ1-GSdM_ITGMijrRPS5pmWd-UmrRc1qi4zr4wki5NZ5bWVGUOdOap0VGC7S5k1waTWWJ6K_AdmFjVs3cWyC253rOSoemkLxMUSOmHvtcCKYzangHuu0DVaYRFw89Ln6r6GSkUnkIVIBANRB04MNqxPVSWOMJ2yOP0cosKGIP-yMVjqWMeR8sw0XWgZ2AyMqqAaMDBy2kqpmeN8pzNsEwCBXtPT7qPbwYTs5HavR1fLYPmzTUPMQCxAPYqOe37hCem0U9vZm_i-_gPX6V1Wg
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Why+Did+Developers+Migrate+Android+Applications+From+Java+to+Kotlin%3F&rft.jtitle=IEEE+transactions+on+software+engineering&rft.au=Martinez%2C+Matias&rft.au=Gois+Mateus%2C+Bruno&rft.date=2022-11-01&rft.issn=0098-5589&rft.eissn=1939-3520&rft.volume=48&rft.issue=11&rft.spage=4521&rft.epage=4534&rft_id=info:doi/10.1109%2FTSE.2021.3120367&rft.externalDBID=n%2Fa&rft.externalDocID=10_1109_TSE_2021_3120367
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0098-5589&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0098-5589&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0098-5589&client=summon