An experience-based recommendation system to support migrations of Android applications from Java to Kotlin. Article Swipe
In 2017, Google announced Kotlin as an official Android programming language, and more recently, as the preferred programming language to build applications. These facts motivated developers to migrate their applications, which is challenging because each migrated piece of code must be tested after the migration to ensure it preserves the expected behavior. Due to the interoperability between Java and Kotlin, most developers decided to migrate their applications gradually. Thus, developers have to decide which file(s) to migrate first on each migration step. However, there are no tools available to help developers make these choices. This paper presents an approach to support a gradual migration of Android applications that given a version of an application written in Java and eventually, in Kotlin, it suggests the most convenient files to migrate. To this end, we built a large-scale corpus of open-source projects that migrated Java files to Kotlin. Then, we trained a learning to rank model using the information extracted from these projects. To validate our model, we verify whether these recommendations made by them correspond to real migrations. The results showed our approach modestly outperforms random approaches. Since most Android applications are written in Java, we conclude that our approach may significantly impact Android applications' development. Therefore, we consider this result is the first step into long-term research towards a model capable of predicting precisely file-level migration, establishing the initial baseline on file migrations.
Related Topics
- Type
- preprint
- Language
- en
- Landing Page
- http://export.arxiv.org/pdf/2103.09728
- OA Status
- green
- Cited By
- 2
- References
- 70
- Related Works
- 20
- OpenAlex ID
- https://openalex.org/W3136025527
Raw OpenAlex JSON
- OpenAlex ID
-
https://openalex.org/W3136025527Canonical identifier for this work in OpenAlex
- Title
-
An experience-based recommendation system to support migrations of Android applications from Java to Kotlin.Work title
- Type
-
preprintOpenAlex work type
- Language
-
enPrimary language
- Publication year
-
2021Year of publication
- Publication date
-
2021-03-17Full publication date if available
- Authors
-
Bruno Góis Mateus, Matías Martínez, Christophe KolskiList of authors in order
- Landing page
-
https://export.arxiv.org/pdf/2103.09728Publisher landing page
- Open access
-
YesWhether a free full text is available
- OA status
-
greenOpen access status per OpenAlex
- OA URL
-
https://export.arxiv.org/pdf/2103.09728Direct OA link when available
- Concepts
-
Java, Android (operating system), Computer science, Interoperability, World Wide Web, Programming language, Operating systemTop concepts (fields/topics) attached by OpenAlex
- Cited by
-
2Total citation count in OpenAlex
- Citations by year (recent)
-
2021: 2Per-year citation counts (last 5 years)
- References (count)
-
70Number of works referenced by this work
- Related works (count)
-
20Other works algorithmically related by OpenAlex
Full payload
| id | https://openalex.org/W3136025527 |
|---|---|
| doi | |
| ids.mag | 3136025527 |
| ids.openalex | https://openalex.org/W3136025527 |
| fwci | |
| type | preprint |
| title | An experience-based recommendation system to support migrations of Android applications from Java to Kotlin. |
| biblio.issue | |
| biblio.volume | |
| biblio.last_page | |
| biblio.first_page | |
| topics[0].id | https://openalex.org/T10260 |
| topics[0].field.id | https://openalex.org/fields/17 |
| topics[0].field.display_name | Computer Science |
| topics[0].score | 0.9995999932289124 |
| topics[0].domain.id | https://openalex.org/domains/3 |
| topics[0].domain.display_name | Physical Sciences |
| topics[0].subfield.id | https://openalex.org/subfields/1710 |
| topics[0].subfield.display_name | Information Systems |
| topics[0].display_name | Software Engineering Research |
| topics[1].id | https://openalex.org/T11241 |
| topics[1].field.id | https://openalex.org/fields/17 |
| topics[1].field.display_name | Computer Science |
| topics[1].score | 0.9968000054359436 |
| topics[1].domain.id | https://openalex.org/domains/3 |
| topics[1].domain.display_name | Physical Sciences |
| topics[1].subfield.id | https://openalex.org/subfields/1711 |
| topics[1].subfield.display_name | Signal Processing |
| topics[1].display_name | Advanced Malware Detection Techniques |
| topics[2].id | https://openalex.org/T12127 |
| topics[2].field.id | https://openalex.org/fields/17 |
| topics[2].field.display_name | Computer Science |
| topics[2].score | 0.9932000041007996 |
| topics[2].domain.id | https://openalex.org/domains/3 |
| topics[2].domain.display_name | Physical Sciences |
| topics[2].subfield.id | https://openalex.org/subfields/1705 |
| topics[2].subfield.display_name | Computer Networks and Communications |
| topics[2].display_name | Software System Performance and Reliability |
| is_xpac | False |
| apc_list | |
| apc_paid | |
| concepts[0].id | https://openalex.org/C548217200 |
| concepts[0].level | 2 |
| concepts[0].score | 0.8567550182342529 |
| concepts[0].wikidata | https://www.wikidata.org/wiki/Q251 |
| concepts[0].display_name | Java |
| concepts[1].id | https://openalex.org/C557433098 |
| concepts[1].level | 2 |
| concepts[1].score | 0.8442238569259644 |
| concepts[1].wikidata | https://www.wikidata.org/wiki/Q94 |
| concepts[1].display_name | Android (operating system) |
| concepts[2].id | https://openalex.org/C41008148 |
| concepts[2].level | 0 |
| concepts[2].score | 0.8222139477729797 |
| concepts[2].wikidata | https://www.wikidata.org/wiki/Q21198 |
| concepts[2].display_name | Computer science |
| concepts[3].id | https://openalex.org/C20136886 |
| concepts[3].level | 2 |
| concepts[3].score | 0.592021107673645 |
| concepts[3].wikidata | https://www.wikidata.org/wiki/Q749647 |
| concepts[3].display_name | Interoperability |
| concepts[4].id | https://openalex.org/C136764020 |
| concepts[4].level | 1 |
| concepts[4].score | 0.42223498225212097 |
| concepts[4].wikidata | https://www.wikidata.org/wiki/Q466 |
| concepts[4].display_name | World Wide Web |
| concepts[5].id | https://openalex.org/C199360897 |
| concepts[5].level | 1 |
| concepts[5].score | 0.39552903175354004 |
| concepts[5].wikidata | https://www.wikidata.org/wiki/Q9143 |
| concepts[5].display_name | Programming language |
| concepts[6].id | https://openalex.org/C111919701 |
| concepts[6].level | 1 |
| concepts[6].score | 0.3482402563095093 |
| concepts[6].wikidata | https://www.wikidata.org/wiki/Q9135 |
| concepts[6].display_name | Operating system |
| keywords[0].id | https://openalex.org/keywords/java |
| keywords[0].score | 0.8567550182342529 |
| keywords[0].display_name | Java |
| keywords[1].id | https://openalex.org/keywords/android |
| keywords[1].score | 0.8442238569259644 |
| keywords[1].display_name | Android (operating system) |
| keywords[2].id | https://openalex.org/keywords/computer-science |
| keywords[2].score | 0.8222139477729797 |
| keywords[2].display_name | Computer science |
| keywords[3].id | https://openalex.org/keywords/interoperability |
| keywords[3].score | 0.592021107673645 |
| keywords[3].display_name | Interoperability |
| keywords[4].id | https://openalex.org/keywords/world-wide-web |
| keywords[4].score | 0.42223498225212097 |
| keywords[4].display_name | World Wide Web |
| keywords[5].id | https://openalex.org/keywords/programming-language |
| keywords[5].score | 0.39552903175354004 |
| keywords[5].display_name | Programming language |
| keywords[6].id | https://openalex.org/keywords/operating-system |
| keywords[6].score | 0.3482402563095093 |
| keywords[6].display_name | Operating system |
| language | en |
| locations[0].id | mag:3136025527 |
| locations[0].is_oa | True |
| locations[0].source.id | https://openalex.org/S4306400194 |
| locations[0].source.issn | |
| locations[0].source.type | repository |
| locations[0].source.is_oa | True |
| locations[0].source.issn_l | |
| locations[0].source.is_core | False |
| locations[0].source.is_in_doaj | False |
| locations[0].source.display_name | arXiv (Cornell University) |
| locations[0].source.host_organization | https://openalex.org/I205783295 |
| locations[0].source.host_organization_name | Cornell University |
| locations[0].source.host_organization_lineage | https://openalex.org/I205783295 |
| locations[0].license | |
| locations[0].pdf_url | |
| locations[0].version | submittedVersion |
| locations[0].raw_type | |
| locations[0].license_id | |
| locations[0].is_accepted | False |
| locations[0].is_published | False |
| locations[0].raw_source_name | arXiv (Cornell University) |
| locations[0].landing_page_url | http://export.arxiv.org/pdf/2103.09728 |
| authorships[0].author.id | https://openalex.org/A5012645646 |
| authorships[0].author.orcid | https://orcid.org/0000-0003-0597-3584 |
| authorships[0].author.display_name | Bruno Góis Mateus |
| authorships[0].author_position | first |
| authorships[0].raw_author_name | Bruno Gois Mateus |
| authorships[0].is_corresponding | False |
| authorships[1].author.id | https://openalex.org/A5100762798 |
| authorships[1].author.orcid | https://orcid.org/0000-0002-2945-866X |
| authorships[1].author.display_name | Matías Martínez |
| authorships[1].author_position | middle |
| authorships[1].raw_author_name | Matias Martinez |
| authorships[1].is_corresponding | False |
| authorships[2].author.id | https://openalex.org/A5018230304 |
| authorships[2].author.orcid | https://orcid.org/0000-0002-7881-6435 |
| authorships[2].author.display_name | Christophe Kolski |
| authorships[2].author_position | last |
| authorships[2].raw_author_name | Christophe Kolski |
| authorships[2].is_corresponding | False |
| has_content.pdf | False |
| has_content.grobid_xml | False |
| is_paratext | False |
| open_access.is_oa | True |
| open_access.oa_url | http://export.arxiv.org/pdf/2103.09728 |
| open_access.oa_status | green |
| open_access.any_repository_has_fulltext | False |
| created_date | 2025-10-10T00:00:00 |
| display_name | An experience-based recommendation system to support migrations of Android applications from Java to Kotlin. |
| has_fulltext | False |
| is_retracted | False |
| updated_date | 2025-10-10T17:16:08.811792 |
| primary_topic.id | https://openalex.org/T10260 |
| primary_topic.field.id | https://openalex.org/fields/17 |
| primary_topic.field.display_name | Computer Science |
| primary_topic.score | 0.9995999932289124 |
| primary_topic.domain.id | https://openalex.org/domains/3 |
| primary_topic.domain.display_name | Physical Sciences |
| primary_topic.subfield.id | https://openalex.org/subfields/1710 |
| primary_topic.subfield.display_name | Information Systems |
| primary_topic.display_name | Software Engineering Research |
| related_works | https://openalex.org/W3168622176, https://openalex.org/W3205661636, https://openalex.org/W3013866748, https://openalex.org/W3128741130, https://openalex.org/W2913041534, https://openalex.org/W2081725185, https://openalex.org/W2076663662, https://openalex.org/W644323654, https://openalex.org/W2077337386, https://openalex.org/W2233841994, https://openalex.org/W3203997215, https://openalex.org/W2966152734, https://openalex.org/W2187998471, https://openalex.org/W2035038509, https://openalex.org/W2325800886, https://openalex.org/W2553027870, https://openalex.org/W2109732527, https://openalex.org/W1989078417, https://openalex.org/W2944544429, https://openalex.org/W2188351605 |
| cited_by_count | 2 |
| counts_by_year[0].year | 2021 |
| counts_by_year[0].cited_by_count | 2 |
| locations_count | 1 |
| best_oa_location.id | mag:3136025527 |
| best_oa_location.is_oa | True |
| best_oa_location.source.id | https://openalex.org/S4306400194 |
| best_oa_location.source.issn | |
| best_oa_location.source.type | repository |
| best_oa_location.source.is_oa | True |
| best_oa_location.source.issn_l | |
| best_oa_location.source.is_core | False |
| best_oa_location.source.is_in_doaj | False |
| best_oa_location.source.display_name | arXiv (Cornell University) |
| best_oa_location.source.host_organization | https://openalex.org/I205783295 |
| best_oa_location.source.host_organization_name | Cornell University |
| best_oa_location.source.host_organization_lineage | https://openalex.org/I205783295 |
| best_oa_location.license | |
| best_oa_location.pdf_url | |
| best_oa_location.version | submittedVersion |
| best_oa_location.raw_type | |
| best_oa_location.license_id | |
| best_oa_location.is_accepted | False |
| best_oa_location.is_published | False |
| best_oa_location.raw_source_name | arXiv (Cornell University) |
| best_oa_location.landing_page_url | http://export.arxiv.org/pdf/2103.09728 |
| primary_location.id | mag:3136025527 |
| primary_location.is_oa | True |
| primary_location.source.id | https://openalex.org/S4306400194 |
| primary_location.source.issn | |
| primary_location.source.type | repository |
| primary_location.source.is_oa | True |
| primary_location.source.issn_l | |
| primary_location.source.is_core | False |
| primary_location.source.is_in_doaj | False |
| primary_location.source.display_name | arXiv (Cornell University) |
| primary_location.source.host_organization | https://openalex.org/I205783295 |
| primary_location.source.host_organization_name | Cornell University |
| primary_location.source.host_organization_lineage | https://openalex.org/I205783295 |
| primary_location.license | |
| primary_location.pdf_url | |
| primary_location.version | submittedVersion |
| primary_location.raw_type | |
| primary_location.license_id | |
| primary_location.is_accepted | False |
| primary_location.is_published | False |
| primary_location.raw_source_name | arXiv (Cornell University) |
| primary_location.landing_page_url | http://export.arxiv.org/pdf/2103.09728 |
| publication_date | 2021-03-17 |
| publication_year | 2021 |
| referenced_works | https://openalex.org/W1973435495, https://openalex.org/W3102476541, https://openalex.org/W2099919734, https://openalex.org/W2298285108, https://openalex.org/W2061873620, https://openalex.org/W2054855378, https://openalex.org/W2885579409, https://openalex.org/W3086960748, https://openalex.org/W3022795095, https://openalex.org/W2159739762, https://openalex.org/W2142074714, https://openalex.org/W2921567420, https://openalex.org/W2064299570, https://openalex.org/W2114754963, https://openalex.org/W2909303912, https://openalex.org/W2120457925, https://openalex.org/W2946009226, https://openalex.org/W2896983448, https://openalex.org/W1670217665, https://openalex.org/W2737319015, https://openalex.org/W2145574830, https://openalex.org/W2058230372, https://openalex.org/W3035156651, https://openalex.org/W2336438358, https://openalex.org/W2921494100, https://openalex.org/W3013866748, https://openalex.org/W2033644368, https://openalex.org/W2945845082, https://openalex.org/W2098277963, https://openalex.org/W2101626488, https://openalex.org/W2467081328, https://openalex.org/W2774266864, https://openalex.org/W2136293793, https://openalex.org/W2094145178, https://openalex.org/W2955991060, https://openalex.org/W2027386866, https://openalex.org/W1962482270, https://openalex.org/W2115584760, https://openalex.org/W2169264274, https://openalex.org/W2047338137, https://openalex.org/W2967619981, https://openalex.org/W2163837601, https://openalex.org/W2982689561, https://openalex.org/W2158864412, https://openalex.org/W1994493193, https://openalex.org/W3094052853, https://openalex.org/W2889391561, https://openalex.org/W2151666086, https://openalex.org/W1660390307, https://openalex.org/W2407313496, https://openalex.org/W2090878800, https://openalex.org/W2809807015, https://openalex.org/W3014542421, https://openalex.org/W2789425691, https://openalex.org/W2736091366, https://openalex.org/W2753715782, https://openalex.org/W2169974813, https://openalex.org/W2465098971, https://openalex.org/W2797862469, https://openalex.org/W2979367728, https://openalex.org/W2962894772, https://openalex.org/W3083752221, https://openalex.org/W2915249090, https://openalex.org/W2889951619, https://openalex.org/W2963457411, https://openalex.org/W2031838112, https://openalex.org/W3039507068, https://openalex.org/W649920412, https://openalex.org/W1485955713, https://openalex.org/W2550405634 |
| referenced_works_count | 70 |
| abstract_inverted_index.a | 101, 109, 134, 149, 218 |
| abstract_inverted_index.In | 0 |
| abstract_inverted_index.To | 129, 161 |
| abstract_inverted_index.an | 6, 97, 112 |
| abstract_inverted_index.as | 5, 14 |
| abstract_inverted_index.be | 40 |
| abstract_inverted_index.by | 171 |
| abstract_inverted_index.in | 115, 119, 192 |
| abstract_inverted_index.is | 31, 210 |
| abstract_inverted_index.it | 47, 121 |
| abstract_inverted_index.no | 85 |
| abstract_inverted_index.of | 37, 104, 111, 137, 221 |
| abstract_inverted_index.on | 78, 230 |
| abstract_inverted_index.to | 19, 26, 45, 53, 63, 71, 75, 88, 99, 127, 144, 151, 174 |
| abstract_inverted_index.we | 132, 147, 165, 194, 206 |
| abstract_inverted_index.Due | 52 |
| abstract_inverted_index.The | 177 |
| abstract_inverted_index.and | 11, 58, 117 |
| abstract_inverted_index.are | 84, 190 |
| abstract_inverted_index.may | 199 |
| abstract_inverted_index.our | 163, 180, 197 |
| abstract_inverted_index.the | 15, 43, 49, 54, 123, 155, 211, 227 |
| abstract_inverted_index.Java | 57, 116, 142 |
| abstract_inverted_index.This | 94 |
| abstract_inverted_index.code | 38 |
| abstract_inverted_index.each | 34, 79 |
| abstract_inverted_index.end, | 131 |
| abstract_inverted_index.file | 231 |
| abstract_inverted_index.from | 158 |
| abstract_inverted_index.have | 70 |
| abstract_inverted_index.help | 89 |
| abstract_inverted_index.into | 214 |
| abstract_inverted_index.made | 170 |
| abstract_inverted_index.make | 91 |
| abstract_inverted_index.more | 12 |
| abstract_inverted_index.most | 60, 124, 187 |
| abstract_inverted_index.must | 39 |
| abstract_inverted_index.rank | 152 |
| abstract_inverted_index.real | 175 |
| abstract_inverted_index.step | 213 |
| abstract_inverted_index.that | 107, 140, 196 |
| abstract_inverted_index.them | 172 |
| abstract_inverted_index.this | 130, 208 |
| abstract_inverted_index.2017, | 1 |
| abstract_inverted_index.Java, | 193 |
| abstract_inverted_index.Since | 186 |
| abstract_inverted_index.Then, | 146 |
| abstract_inverted_index.These | 22 |
| abstract_inverted_index.Thus, | 68 |
| abstract_inverted_index.after | 42 |
| abstract_inverted_index.build | 20 |
| abstract_inverted_index.built | 133 |
| abstract_inverted_index.facts | 23 |
| abstract_inverted_index.files | 126, 143 |
| abstract_inverted_index.first | 77, 212 |
| abstract_inverted_index.given | 108 |
| abstract_inverted_index.model | 153, 219 |
| abstract_inverted_index.paper | 95 |
| abstract_inverted_index.piece | 36 |
| abstract_inverted_index.step. | 81 |
| abstract_inverted_index.their | 28, 65 |
| abstract_inverted_index.there | 83 |
| abstract_inverted_index.these | 92, 159, 168 |
| abstract_inverted_index.tools | 86 |
| abstract_inverted_index.using | 154 |
| abstract_inverted_index.which | 30, 73 |
| abstract_inverted_index.Google | 2 |
| abstract_inverted_index.Kotlin | 4 |
| abstract_inverted_index.corpus | 136 |
| abstract_inverted_index.decide | 72 |
| abstract_inverted_index.ensure | 46 |
| abstract_inverted_index.impact | 201 |
| abstract_inverted_index.model, | 164 |
| abstract_inverted_index.random | 184 |
| abstract_inverted_index.result | 209 |
| abstract_inverted_index.showed | 179 |
| abstract_inverted_index.tested | 41 |
| abstract_inverted_index.verify | 166 |
| abstract_inverted_index.Android | 8, 105, 188, 202 |
| abstract_inverted_index.Kotlin, | 59, 120 |
| abstract_inverted_index.Kotlin. | 145 |
| abstract_inverted_index.because | 33 |
| abstract_inverted_index.between | 56 |
| abstract_inverted_index.capable | 220 |
| abstract_inverted_index.decided | 62 |
| abstract_inverted_index.file(s) | 74 |
| abstract_inverted_index.gradual | 102 |
| abstract_inverted_index.initial | 228 |
| abstract_inverted_index.migrate | 27, 64, 76 |
| abstract_inverted_index.results | 178 |
| abstract_inverted_index.support | 100 |
| abstract_inverted_index.towards | 217 |
| abstract_inverted_index.trained | 148 |
| abstract_inverted_index.version | 110 |
| abstract_inverted_index.whether | 167 |
| abstract_inverted_index.written | 114, 191 |
| abstract_inverted_index.However, | 82 |
| abstract_inverted_index.approach | 98, 181, 198 |
| abstract_inverted_index.baseline | 229 |
| abstract_inverted_index.choices. | 93 |
| abstract_inverted_index.conclude | 195 |
| abstract_inverted_index.consider | 207 |
| abstract_inverted_index.expected | 50 |
| abstract_inverted_index.language | 18 |
| abstract_inverted_index.learning | 150 |
| abstract_inverted_index.migrate. | 128 |
| abstract_inverted_index.migrated | 35, 141 |
| abstract_inverted_index.modestly | 182 |
| abstract_inverted_index.official | 7 |
| abstract_inverted_index.presents | 96 |
| abstract_inverted_index.projects | 139 |
| abstract_inverted_index.research | 216 |
| abstract_inverted_index.suggests | 122 |
| abstract_inverted_index.validate | 162 |
| abstract_inverted_index.announced | 3 |
| abstract_inverted_index.available | 87 |
| abstract_inverted_index.behavior. | 51 |
| abstract_inverted_index.extracted | 157 |
| abstract_inverted_index.language, | 10 |
| abstract_inverted_index.long-term | 215 |
| abstract_inverted_index.migration | 44, 80, 103 |
| abstract_inverted_index.motivated | 24 |
| abstract_inverted_index.precisely | 223 |
| abstract_inverted_index.preferred | 16 |
| abstract_inverted_index.preserves | 48 |
| abstract_inverted_index.projects. | 160 |
| abstract_inverted_index.recently, | 13 |
| abstract_inverted_index.Therefore, | 205 |
| abstract_inverted_index.convenient | 125 |
| abstract_inverted_index.correspond | 173 |
| abstract_inverted_index.developers | 25, 61, 69, 90 |
| abstract_inverted_index.file-level | 224 |
| abstract_inverted_index.gradually. | 67 |
| abstract_inverted_index.migration, | 225 |
| abstract_inverted_index.predicting | 222 |
| abstract_inverted_index.application | 113 |
| abstract_inverted_index.approaches. | 185 |
| abstract_inverted_index.challenging | 32 |
| abstract_inverted_index.eventually, | 118 |
| abstract_inverted_index.information | 156 |
| abstract_inverted_index.large-scale | 135 |
| abstract_inverted_index.migrations. | 176, 232 |
| abstract_inverted_index.open-source | 138 |
| abstract_inverted_index.outperforms | 183 |
| abstract_inverted_index.programming | 9, 17 |
| abstract_inverted_index.applications | 66, 106, 189 |
| abstract_inverted_index.development. | 204 |
| abstract_inverted_index.establishing | 226 |
| abstract_inverted_index.applications' | 203 |
| abstract_inverted_index.applications, | 29 |
| abstract_inverted_index.applications. | 21 |
| abstract_inverted_index.significantly | 200 |
| abstract_inverted_index.recommendations | 169 |
| abstract_inverted_index.interoperability | 55 |
| cited_by_percentile_year | |
| countries_distinct_count | 0 |
| institutions_distinct_count | 3 |
| sustainable_development_goals[0].id | https://metadata.un.org/sdg/10 |
| sustainable_development_goals[0].score | 0.75 |
| sustainable_development_goals[0].display_name | Reduced inequalities |
| citation_normalized_percentile |