17611538698
webmaster@21cto.com

​Meta将自家移动端Java转到Kotlin

资讯 0 817 2022-10-27 03:25:49

图片

Facebook 母公司 Meta 正在将其 Android 应用 Java 代码迁移到 Kotlin,这是一种更年轻的编程语言,但也依赖于 Java 虚拟机或 JVM。

Kotlin 由软件工具制造商 JetBrains 创建,于 2011 年首次发布,到 2016 年已发布 1.0 版本。次年它被谷歌采用为 Android 开发的首选(支持)语言,并由其自己的基金会管理,该基金会由 JetBrains 和谷歌提供资助。

在之前,大多数 Android 应用程序都是用 Java 编写的。2019 年 5 月,在其开发者大会上,谷歌开始鼓励 Android 开发者使用 Kotlin 而不是 Java。到今年年底,这家搜索巨头表示,前 1000 个 Android 应用程序中有 60% 包含 Kotlin 代码。

Google 使用 Kotlin 的理由是它更简洁、安全,支持结构化并发以更轻松地编写异步代码,并且可以与 Java 互操作。这也可能与 Java 的所有者甲骨文有关,甲骨文花了十多年的时间追究(但最终败诉)针对谷歌在 Android 中使用 Java API 的侵权索赔。

如 Facebook 软件工程师 Omer Strulovich 所说的,该公司已经在其几个流行的 Android 应用程序中替换了 Java 的源代码——Facebook、Instagram、Messenger、Portal 和Quest ,它们均转向使用 Kotlin。

Strulovich 说:“Kotlin 通常被认为是比 Java 更好的语言。在本年度Stack Overflow 开发人员调查中,其受欢迎程度高于 Java,”他指出Kotlin 已成为 Android 开发的流行语言,所以我们将 Meta 的 Android 开发均转移到 Kotlin……”

但是,Kotlin在 Android 生态系统中的受欢迎程度仍然有限。Strulovich 承认它在更广泛的开发市场中不及 Java,后者巍峨在前三名的编程语言中的某个位置。

Kotlin 还是有一些实际的优势,其中包括:可空性,通过支持不能具有空值的类型来帮助避免空引用错误;通过内联函数和 lambda 表达式支持函数式编程;更简洁的代码;支持领域特定语言(DSL),特定任务有限范围的编程语言。

Kotlin 也有缺点,混合代码库可能难以维护,而且 Kotlin 的存在时间比 Java 还短,它的工具集也不太成熟。以前 Facebook 的 Android 字节码优化器Redex需要更新,语法管理器 Pygments也是如此。此外一些用于在编译期间优化字节码的内部库并不适用于 Kotlin,必须更新。

Meta 本来可以决定只想用 Kotlin 编写新软件,但它却选择转换升迁所有的 Android 应用程序。

“今天,我们用于 Facebook、Messenger 和 Instagram 的 Android 应用程序每个都有超过 100 万行 Kotlin 代码,并且转换率正在提高,”Strulovich 这样说。“总的来说,我们的 Android 代码库有超过 1000 万行 Kotlin 代码。”

Strulovich 没有透露 Meta 何时开始这种转换的,该公司开发人员在去年的一次会议上讨论了Kotlin 的大规模使用——或者其 Android 应用程序代码的转换百分比。

千万行 Kotlin 进入这个过渡期,Meta 已经得到了一些好处。

“平均而言,我们发现这次迁移的代码行数减少了 11%,”Strulovich 说。

代码减少的部分原因是许多正在翻译的应用程序代码由用户界面定义组成,无论它们是使用 Java 还是 Kotlin 都保持不变。

Strulovich 还表示没有速度的倒退,因此至少转换后的应用程序保持了它们的性能。注入 Kotlin 的应用程序的构建大小也没有被证明是一个问题,尽管构建时间确实受到影响。

Strulovich 说,Meta 的迁移正在进行并且正在加速。与此同时,Java 的受欢迎程度在过去五年中至少下降了4.7%。

“Kotlin 仍然缺少一些我们已经习惯于使用 Java 的优化工具,”Strulovich 说。“但我们正在努力缩小这些差距。随着我们取得新进展,以及这些工具和库的成熟,我们还将努力将它们发布和回馈给社区。”

各位怎么看,欢迎留言~

作者:场长

评论