Facebook母公司Meta的工程师们,对多年以来将众多Android应用代码库从Java转换成Kotlin的体会做了一番认真总结。
对于Meta这样一家坐拥成千上万开发人员和多款大型Android应用程序(包括Facebook、Instagram、Messenger、Portal以及Quest VR头显)的企业来说,这无疑是一项艰巨的任务。
Facebook公司软件工程师Omer Strulovich指出:“把这些用Java开发的Android应用全面转换为Kotlin,确实不是件容易的事。”
但向Kotlin的迁移仍在进行当中,目前Meta公司的Android应用repo中已经包含上千万行Kotlin代码。
Strulovich解释称:“如今,我们的Facebook、Messenger以及Instagram等Android应用各自拥有超过100万行Kotlin代码,而且转换率仍在不断提升。我们Android代码库中的Kotlin代码总规模已经超过1000万行。”
Java是当前世界三大编程语言之一,在企业级应用程序领域处于主导地位;相比之下,Kotlin的人气显然无法与之相比,但也稳居榜单前二十。鉴于Meta自身的业务规模与极具份量的应用程序组合,这波从Java到Kotlin的Android应用转型不啻为一个里程碑。
尽管迁往Kotlin有种种好处,但Strulovich也列举了此番计划的一些显著缺点,至少对大型应用程序来讲确实存在不少风险。
首先,Java和Kotlin之间的人气水平仍有巨大差距,导致后者生态中的可用工具较少。另外,这些工具还必须考虑到Kotlin与Java之间的互操作性,这就让情况变得更为复杂。尽管两种语言间号称有100%的互操作性,但Meta还是发现自己不得不继续保留部分Java代码。
Strulovich指出:“Kotlin也是种流行语言,但跟Java相比,其流行度还远达不到同样的量级。Java是目前全球第二或第三大流行语言(具体取决于衡量标准),所以Kotlin的可用工具数量根本不可能与Java相提并论。更糟糕的是,所有Kotlin工具还要保证能跟Java实现互操作,这就让整个实现过程变得更加复杂。”
Meta还有另一个大问题需要关注:相较于Java,Kotlin的构建速度要慢得多。
“我们从一开始就知道Kotlin的构建速度不及Java。这不光是因为Kotlin及其生态系统更加复杂,还因为Java在编译器优化方面领先了20年。由于我们拥有多个大型应用程序,所以更慢的构建速度肯定会对我们的开发者体验产生负面影响。”
最后还有一点,Strulovich称HTTP客户端项目OkHttp在2019年完成了从Java到Kotlin的迁移。这是个体量很小的项目,只有24000行Kotlin代码。但即使如此,它的Java版本编译时长仅为2.4秒,而Kotlin版本则需要10.2秒。
Meta工程师决定将几乎所有代码全部转换为Kotlin,而没有选择保留大部分Java代码,只是用Kotlin编写新增代码。顺带一提,Linux内核项目和Android开源项目倒是选择了通过增量形式引入Rust代码的方式。
但Meta已经在GitHub上发布了好几款内部Kotlin转换工具,可供其他人直接使用,或者至少能激励大家积极寻求自己的自动化转换方案。这对整个Kotlin生态系统的健康发展和吸引力肯定不是坏事。
Facebook工程师们去年曾介绍称,虽然Kotlin并不难上手,但大规模采用也绝非易事。Facebook拥有自己的Buck构建系统,IntelliJ/Android Studio IDE使用的则是Gradle。
Strulovich还具体介绍了Meta贡献的几款开源Kotlin工具,例如能够让Kotlin获得“与Java对等开发体验”的Pygments库。Meta还开发了Ktfmt,一款面向IntelliJ和Android Studio的插件,能提供“符合google-java-format代码理念的决定性Kotlin格式化程序”。
Strulovich指出,截至目前,Meta的代码库体积平均缩小了11%。Google Home团队则报告称,在将新功能开发迁移至Kotlin之后,其应用程序的代码库也成功瘦身了33%。
Strulovich提到,“我们从网上看到的数字还要更高,但估计不同项目对应的具体瘦身比例可能有很大差异。但无论如何,我们对这个数字感到满意,因为里面删除的行通常是样板代码,Kotlin在这部分代码上确实比Java更优。”
Kotlin最初由JetBrains负责开发,即IntelliJ等开发者工具/IDE的开发商。自2017年以来,Google就一直使用Kotlin构建Android应用程序,并从2018年起联合JetBrains建立起了Kotlin基金会。
2019年,Google Android团队开始采用“Kotlin优先”方法。Google目前拥有70多个部分或全部由Kotlin构建的Android应用,包括Google Maps、Google Home、Google Play、Google Drive以及Google Messages。相较于Java,Google称Kotlin的效率更高、代码安全性更强、代码库体量更小,而且能跟Java实现100%互操作——这大大降低了两种代码的共存难度与旧代码转换门槛。
Google Kotlin产品经理James Ward对Meta的决定表示欢迎,“三年以来,Android一直是Kotlin开发的先行者,也带来了最出色的开发者体验,同时牢牢植根于Java及其生态的互操作性之上。所以,我们很高兴看到Meta能够迁移至Kotlin,并获得初步成功。不少Google团队也经历过类似的从Java到Kotlin的迁移之旅,涵盖Android到服务器端等领域,最终积累起超1100万行Kotlin代码(截至2022年10月)。Meta的案例,再次证明我们选择的这条从Java到Kotlin的迁移道路是正确的。”
好文章,需要你的鼓励
国际能源署发布的2025年世界能源展望报告显示,全球AI竞赛推动创纪录的石油、天然气、煤炭和核能消耗,加剧地缘政治紧张局势和气候危机。数据中心用电量预计到2035年将增长三倍,全球数据中心投资预计2025年达5800亿美元,超过全球石油供应投资的5400亿美元。报告呼吁采取新方法实现2050年净零排放目标。
阿布扎比科技创新研究院团队首次发现大语言模型生成的JavaScript代码具有独特"指纹"特征,开发出能够准确识别代码AI来源的系统。研究创建了包含25万代码样本的大规模数据集,涵盖20个不同AI模型,识别准确率在5类任务中达到95.8%,即使代码经过混淆处理仍保持85%以上准确率,为网络安全、教育评估和软件取证提供重要技术支持。
AMD首席执行官苏姿丰在纽约金融分析师日活动中表示,公司已准备好迎接AI浪潮并获得传统企业计算市场更多份额。AMD预计未来3-5年数据中心AI收入复合年增长率将超过80%,服务器CPU收入份额超过50%。公司2025年预期收入约340亿美元,其中数据中心业务160亿美元。MI400系列GPU采用2纳米工艺,Helios机架系统将提供强劲算力支持。
斯坦福大学研究团队首次系统比较了人类与AI在文本理解任务中的表现。通过HUME评估框架测试16个任务发现:人类平均77.6%,最佳AI为80.1%,排名第4。人类在非英语文化理解任务中显著优于AI,而AI在信息处理任务中更出色。研究揭示了当前AI评估体系的缺陷,指出AI的高分往往出现在任务标准模糊的情况下。