Meta下了大决心,准备把所有Java代码转为Kotlin
文章摘要
【关 键 词】 代码转译、Kotlin、Java、自动化、null安全性
Meta公司在其官方博客中宣布,将大规模将Java代码转译为Kotlin,以提高开发效率和代码质量。自2020年起,Kotlin已成为Meta Android开发的首选语言。Meta最初采用Kotlin时,并未涉及将遗留代码转译成Kotlin,而是直接用Kotlin编写新代码,同时保留现有的Java代码。但随后,Meta认识到要充分利用Kotlin的优势,唯一的途径是进行全面的代码转译。
为了实现这一目标,Meta构建了自己的基础设施,以自动化大规模的代码转译,并投入更多资源和精力确保转型的顺利进行。Meta的工程师们决定将大约一千万行功能正常的Java代码重写为Kotlin代码。为了最大化开发者生产力和null安全性,Meta的目标是转译几乎所有正在开发的代码,以及依赖项图谱中的所有核心代码。
Meta最初通过在Intellij IDE中反复点击一个按钮,逐步进行迁移。但这种方法无法扩展至规模庞大的代码库。因此,Meta开始着手自动化转换,并尽量减少对开发人员日常工作的干扰。最后,Meta围绕J2K构建了一个名为Kotlinator的工具,包含六个阶段:深度构建、预处理、无头J2K、后处理、Linter测试和基于构建错误的修复。
Meta在转译过程中积累了丰富的实战经验。例如,创建一个无头版本的J2K,使其能够在远程机器上运行;添加自定义的转换前后步骤,以解决原生J2K生成的大多数转换差异无法构建的问题;利用构建错误进行修复,像人类一样进行修复。
Meta还强调了null安全性的重要性。为了在转译代码时避免到处都是null指针异常(NPE),首先需要确保代码是null安全的。尽管null安全并不足以完全消除NPE的可能性,但它是一个很好的起点。Kotlin的跨语言边界上存在运行时验证,这种验证是隐形的,但非常强大,因为它使得开发者能够信任他们所修改或调用的任何代码中声明的null安全注解。
未来,Meta希望通过增加和改进自定义步骤,以及为J2K贡献代码,解锁成千上万的完全自动化转换。同时,更希望通过对Kotlinator的改进顺利且安全地完成剩下的几千个半自动化转换。
原文和模型
【原文链接】 阅读原文 [ 4639字 | 19分钟 ]
【原文作者】 AI大模型实验室
【摘要模型】 moonshot-v1-32k
【摘要评分】 ★★★★★