大规模将Java转换为Kotlin

大规模将Java转换为Kotlin

💡 原文英文,约3000词,阅读约需11分钟。
📝

内容提要

Meta正在将其Android代码库从Java转换为Kotlin,已完成超过一半。尽管面临构建速度慢和代码混合的问题,Meta开发了名为Kotlinator的工具来自动化转换过程,并与JetBrains合作改进J2K工具,以提高转换的准确性和效率。

🎯

关键要点

  • Meta正在将其Android代码库从Java转换为Kotlin,已完成超过一半。
  • Meta开发了名为Kotlinator的工具来自动化转换过程,并与JetBrains合作改进J2K工具。
  • Meta选择全面转换代码,以充分利用Kotlin的价值,而不仅仅是编写新代码。
  • 转换的目标是几乎翻译所有活跃开发的代码和依赖图中的核心代码。
  • Meta面临构建速度慢和代码混合的问题,需要支持并行工具链。
  • Meta最初通过Intellij IDE的J2K工具逐步迁移,但发现这种方法无法扩展。
  • Kotlinator工具分为六个阶段,包括深度构建、预处理、无头J2K、后处理、运行linters和基于构建错误的修复。
  • Meta创建了无头版本的J2K,以便在远程机器上运行,减少对开发者本地IDE的干扰。
  • Meta添加了自定义的预处理和后处理步骤,以解决转换中出现的构建问题。
  • Kotlinator利用编译器的错误消息进行修复,减少了开发者的工作量。
  • Meta与JetBrains合作改进J2K,以解决长期存在的问题并提高转换的准确性。
  • 在转换过程中,确保代码的空安全性是关键,尽管这并不容易。
  • Meta通过创建Java编译器插件收集运行时空安全性数据,以解决Java代码中的空安全问题。
  • Meta在转换过程中面临多种风险,包括初始化与getter混淆和可空布尔值的问题。
  • Meta已翻译超过一半的Android Java代码,未来将继续改进Kotlinator工具以实现更多自动化转换。

延伸问答

Meta为什么决定将Android代码库从Java转换为Kotlin?

Meta选择全面转换代码,以充分利用Kotlin的价值,而不仅仅是编写新代码。

Kotlinator工具的主要功能是什么?

Kotlinator工具分为六个阶段,包括深度构建、预处理、无头J2K、后处理、运行linters和基于构建错误的修复。

Meta在转换过程中遇到了哪些主要挑战?

Meta面临构建速度慢和代码混合的问题,需要支持并行工具链。

Meta如何确保转换后的代码的空安全性?

Meta通过创建Java编译器插件收集运行时空安全性数据,以解决Java代码中的空安全问题。

Kotlinator工具的转换过程是如何自动化的?

Kotlinator通过创建无头版本的J2K在远程机器上运行,减少对开发者本地IDE的干扰,并自动化转换过程。

Meta与JetBrains的合作有什么重要意义?

Meta与JetBrains合作改进J2K,以解决长期存在的问题并提高转换的准确性。

➡️

继续阅读