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...
Gespeichert in:
| Veröffentlicht in: | IEEE transactions on software engineering Jg. 48; H. 11; S. 4521 - 4534 |
|---|---|
| Hauptverfasser: | , |
| 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 |