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.


翻译:2017年,谷歌宣布Kotlin为官方Android编程语言,最近,谷歌宣布Kotlin为建立应用程序的首选编程语言。这些事实激励开发者将应用程序迁移,这具有挑战性,因为每次迁移的代码必须在迁移后测试,以确保保持预期的行为。由于爪哇和科特林之间的互操作性,大多数开发者决定逐步迁移应用程序。因此,开发者必须决定在每次迁移步骤中首先迁移哪个文件。然而,没有工具可以帮助开发者做出这些选择。本文展示了一种支持安特异应用程序逐步迁移的方法,在爪哇和最终在科特林的应用程序版本中,它提出了最方便迁移的文件。为此,我们建立了一个大型的开放源项目集,将爪哇和科特林的档案迁移到科特林。随后,我们用从这些项目中提取的信息培训了一种排序模型。为了验证我们的模型,我们核查它们提出的这些建议是否与真正的迁移相吻合。结果显示我们的方法略地超越了随机方法。由于大多数安达尔文件应用程序都是在爪哇,我们最初的档案中写成的,因此,我们可以进行长期的预测。

1
下载
关闭预览

相关内容

Kotlin 是一种运行于 Java 虚拟机上的静态类型编程语言。
【2020新书】Web应用安全,331页pdf
专知会员服务
23+阅读 · 2020年10月24日
专知会员服务
17+阅读 · 2020年9月6日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
【新书】Python编程基础,669页pdf
专知会员服务
193+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
39+阅读 · 2019年10月9日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
谷歌足球游戏环境使用介绍
CreateAMind
33+阅读 · 2019年6月27日
LibRec 精选:位置感知的长序列会话推荐
LibRec智能推荐
3+阅读 · 2019年5月17日
计算机 | CCF推荐期刊专刊信息5条
Call4Papers
3+阅读 · 2019年4月10日
软件推荐 | Flutter 开发的精美时间轴应用
开源中国
6+阅读 · 2019年1月4日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【推荐】自然语言处理(NLP)指南
机器学习研究会
35+阅读 · 2017年11月17日
【推荐】用Python/OpenCV实现增强现实
机器学习研究会
15+阅读 · 2017年11月16日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【推荐】用Tensorflow理解LSTM
机器学习研究会
36+阅读 · 2017年9月11日
Arxiv
0+阅读 · 2021年5月6日
Arxiv
92+阅读 · 2020年2月28日
VIP会员
相关VIP内容
【2020新书】Web应用安全,331页pdf
专知会员服务
23+阅读 · 2020年10月24日
专知会员服务
17+阅读 · 2020年9月6日
开源书:PyTorch深度学习起步
专知会员服务
50+阅读 · 2019年10月11日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
【新书】Python编程基础,669页pdf
专知会员服务
193+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
39+阅读 · 2019年10月9日
相关资讯
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
谷歌足球游戏环境使用介绍
CreateAMind
33+阅读 · 2019年6月27日
LibRec 精选:位置感知的长序列会话推荐
LibRec智能推荐
3+阅读 · 2019年5月17日
计算机 | CCF推荐期刊专刊信息5条
Call4Papers
3+阅读 · 2019年4月10日
软件推荐 | Flutter 开发的精美时间轴应用
开源中国
6+阅读 · 2019年1月4日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【推荐】自然语言处理(NLP)指南
机器学习研究会
35+阅读 · 2017年11月17日
【推荐】用Python/OpenCV实现增强现实
机器学习研究会
15+阅读 · 2017年11月16日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【推荐】用Tensorflow理解LSTM
机器学习研究会
36+阅读 · 2017年9月11日
Top
微信扫码咨询专知VIP会员