放弃 Java,Meta 旗下 Android 应用转投 Kotlin,称比 Java 更好用!

2022 年 11 月 1 日 CSDN

整理 | 辛晓亮
出品 | CSDN(ID:CSDNnews)

根据 Meta 官网博客消息,Meta 正在将其 Android 应用的 Java 代码迁移至 Kotlin,Meta 表示,相比 Java,Kotlin 有一些关键优势。截至目前,其 Android 代码库已有超过 1000 万行 Kotlin 代码。


Android 开发首选语言:Kotlin


2011 年 7 月,JetBrains 正式推出 Kotlin 编程语言,这是一款用于现代多平台应用的静态编程语言,Kotlin可以编译成 Java 字节码,也可以编译成JavaScript,方便在没有 JVM 的设备上运行。与 Java 相比,Kotlin 的语法更简洁,同时也提供更多的特性支持,比如高阶函数、字符串模板等等。Kotlin 自发布起就一直被拿来与 Java 比较,谷歌的两次举动才彻底让 Kotlin 站稳脚跟。

在 2017 年 Google I/O 大会上,谷歌宣布在 Android Studio IDE 中支持 Kotlin,两年后的 2019 年 Google I/O 大会上,谷歌正式宣布 Kotlin 是 Android 应用程序的开发人员的首选语言。

谷歌之所以支持 Kotlin,除了 Kotlin 基础特性的优势外,其与 Oracle 的 Java 侵权案也是主要因素。

2010 年,Oracle 认为谷歌在 Android 系统上无偿使用了 37个 Java APIs,侵犯了他们的专利;在 Android 中还有 9 行代码抄袭了 Java,侵犯了他们的版权。虽然最终 Oracle 败诉,但在谷歌与 Oracle 这长达八九年的对决中,谷歌也并不是胜利者。

2017 年之后,谷歌便将希望寄托在 Kotlin 之上,先是将 Kotlin 集成到 Android Studio,而后陆续推出 Android KTX(帮助 Kotlin 代码更简洁)、Android Jetpack(全面兼容 Kotlin),最后在 2019 年宣布 Kotlin 成为 Android 开发首选语言,并鼓励安卓开发者从 Java 迁移至 Kotlin。

2019 年 I/O 大会,谷歌也宣布其 Android 团队采用了“Kotlin-first”的方法。谷歌拥有 70 多个至少部分使用 Kotlin 构建的 Android 应用,包括地图、家庭、Play 商店、云端硬盘等。谷歌表示,与 Java 相比,Kotlin 更高效,可以生成更安全的代码和更小的代码库,并且与 Java 语言 100% 可互操作,通过允许它们共存,使从 Java 代码库的转换变得更容易。


Meta Android 代码迁移进行时


Meta 同样对 Kotlin 感兴趣,Facebook 软件工程师 Omer Strulovich 称,他们已经在用 Kotlin 替换其几个流行的 Android 应用中的 Java 代码,包括 Facebook、Instagram、Messenger、Portal 和 Quest 等。截至目前,Facebook、Messenger 和 Instagram 的 Android 应用程序都有超过 100 万行的 Kotlin 代码。Meta 的 Android 代码库总共已包含有超过 1000 万行的 Kotlin 代码。

Strulovich 说到:“Kotlin 被普遍认为是比 Java 更好的语言,在每年的 Stack Overflow 开发者调查报告中,Kotlin 的好评率也高于 Java”,他表示,Kotlin 已经成为 Android 开发的流行语言,“因此,我们将 Meta 的 Android 开发转向 Kotlin 是合理的。”

尽管 Kotlin 有许多好处促使 Meta 进行迁移,但 Strulovich 也提到了一些 Kotlin 明显的缺点,这些缺点使迁移具有一定的风险,至少对于大型应用程序而言是这样。 

首先,Java 和 Kotlin 在流行度上的巨大差距导致后者使用的工具较少,而且这些工具必须考虑到 Kotlin 与 Java 的互操作性,因此非常复杂。尽管这两个语言具有 100% 的互操作性,但 Meta 发现它无法删除所有 Java 代码。 

“Kotlin 是一种流行的语言,但与 Java 相比,流行程度的差距很明显。Java 是世界上第二或第三流行的语言(取决于如何衡量这一点)。这意味着 Kotlin 可用的工具更少。更糟糕的是,所有的 Kotlin 工具需要考虑 Kotlin 和 Java 的互操作性,这使得它们的实现变得复杂”,Strulovich 指出。

但 Meta 最大的担忧还是在另一方面,相对于 Java,Kotlin 的构建时间较慢

“我们从一开始就知道 Kotlin 的构建时间会比 Java 长,Java 在优化其编译器方面领先了 20 年。由于我们拥有多个大型应用程序,更长的构建时间可能会对我们开发人员的体验产生负面影响。” 

Strulovich 举了 HTTP 客户端项目 OkHttp 在 2019 年从 Java 切换到 Kotlin 之后的编译时间对比的例子。OkHttp 很小,只有 24000 行 Kotlin。它在 Java 中的编译时间为 2.4 秒,而在 Kotlin 中为 10.2 秒,5 倍左右的差距。 

权衡利弊后,Meta 还是认为将其众多 Android 应用程序的代码库从 Java 转换为 Kotlin 并将其迁移过程及经验分享出来。 

谷歌的 Kotlin 产品经理 James Ward 对 Meta 的举动表示欢迎:“三年来,Android 一直以 Kotlin 为先,因为它为我们提供了最好的开发者体验,同时在 Java 及其生态系统的基础上进行构建并与之互操作,”他说到:“因此,我们很高兴看到 Meta 向 Kotlin 迁移,并且很高兴他们取得了成功。许多 Google 团队也经历了从 Java 到 Kotlin 的类似旅程,截至 2022 年 10 月,最终达到超过 1100 万行的 Kotlin 代码。其他大型项目进行类似的旅程再次确认了我们选择的道路。”

参考链接:

https://engineering.fb.com/2022/10/24/android/android-java-kotlin-migration

— 推荐阅读 —

  
  
    
腾讯会议部分功能开始收费;马斯克称自己将担任推特首席执行官;微软明年2月将永久禁用IE 11|极客头条
NineData,要做程序员必备的数据库产品
腾讯云发布三款云原生新品 持续加码云原生布局

登录查看更多
0

相关内容

Kotlin 是一种运行于 Java 虚拟机上的静态类型编程语言。
专知会员服务
95+阅读 · 2020年12月19日
【2020新书】Ruby 3 编程: 从小白到专家,598页pdf
专知会员服务
29+阅读 · 2020年12月17日
专知会员服务
51+阅读 · 2020年9月2日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
156+阅读 · 2020年7月24日
还在修改博士论文?这份《博士论文写作技巧》为你指南
【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
为取代 C++,Google 强势开源 Carbon 语言!
Deno 2021 回顾:优化内核、兼容 Node.js
InfoQ
0+阅读 · 2022年2月13日
使用 Kotlin 重写 AOSP 日历应用
谷歌开发者
0+阅读 · 2021年9月15日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年12月21日
Arxiv
25+阅读 · 2021年3月20日
Arxiv
13+阅读 · 2019年1月26日
Exploring Visual Relationship for Image Captioning
Arxiv
14+阅读 · 2018年9月19日
VIP会员
相关VIP内容
专知会员服务
95+阅读 · 2020年12月19日
【2020新书】Ruby 3 编程: 从小白到专家,598页pdf
专知会员服务
29+阅读 · 2020年12月17日
专知会员服务
51+阅读 · 2020年9月2日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
156+阅读 · 2020年7月24日
还在修改博士论文?这份《博士论文写作技巧》为你指南
【Manning新书】现代Java实战,592页pdf
专知会员服务
98+阅读 · 2020年5月22日
相关基金
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员