Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持

近日 Meta 正式宣发加入了 Kotlin 基金会,如果你对 Meta 不熟悉,那么对于开源了 React Native 的 Facebook 应该不陌生了吧?现在它也正式加入了 Kotlin 领导者的阵营:

Kotlin 基金会 是由 Jetbrains 和 Google 共同成立的基金会,而本次 Meta 的加入则是成为了 Gold (金牌)会员,而在此之前,Gradle 也只是 Silver(银牌)会员而已。

当然你要说 Gold 和 Silver 这两者的最大区别,首先肯定就是会员费:

  • Gold 需要缴纳 15 万美金一年
  • Silver 需要缴纳 3 万美金一年

而 Gold 的好处就是在 Silver 所有权益下,还有资格担任秘书职务,并且会固定拥有基金会董事的一个席位,而基金会董事的席位一般会有:

  • 有权参与制定 Kotlin Foundation 的长期战略方向,例如 Kotlin 语言的开发重点、生态系统扩展(如 Kotlin Multiplatform)
  • 监督或参与 Operating、Ecosystem 和 Trademark 等相关工作

而 Meta 加入 Kotlin 基金会,也标志着它对 Kotlin 和更广泛的 Android 开发生态系统的持续承诺的一个重要里程碑,当然,目前还没看到 Meta 关于 KMP 和 CMP 的相关承诺,从历史过往和公告上看,Meta 对于 Kotlin 主要还是集中在 Android 领域。

例如在过去几年,Meta 工程师一直在积极地将他们庞大的 Android 代码库 (包含数千万行代码)从 Java 迁移到 Kotlin,甚至为了推进这一大规模迁移,他们还开发了一款名为 Kotlinator 的内部工具,用于自动完成大部分转换过程,同时确保生成的 Kotlin 代码符合语言习惯并与 Meta 的内部框架兼容。

Kotlinator 主要是基于 IntelliJ 的 J2K(Java-to-Kotlin)转换工具,并通过一系列定制,主要核心有:

  • Kotlinator 将 IntelliJ 的 J2K 转换工具改造成一个 headless 工具,从而支持在远程服务器上运行,而无需依赖图形化界面
  • 通过扩展 IntelliJ 的 ApplicationStarter 类,Kotlinator 直接调用 JavaToKotlinConverter,实现 Java 到 Kotlin 的自动转换

而在运行 J2K 之前,Kotlinator 会对 Java 代码进行分析和调整,例如处理空安全问题、应用已知的 J2K 转换修复(如 JUnit 框架的特殊处理),确保代码适合转换等。

而在转换后的 Kotlin 代码也会经过进一步优化,主要是调整为更符合 Kotlin 的惯用写法(idiomatic Kotlin),包括处理空安全、替换不规范的代码结构(如 isEmpty 的替换)以及修复 J2K 的潜在 bug 等,例如:

  • Kotlinator 会使用静态分析工具(如 Nullsafe 或 NullAway)检测潜在的空指针问题
  • 利用 JetBrains 的 PSI(Program Structure Interface)库进行代码分析和转换
  • 通过解析编译器的错误信息,自动识别和修复转换过程中的问题

另外 Meta 还是企业 Java-to-Kotlin 工作组的成员,这个工作组是 Google、JetBrains 和 Uber 合作,目的在于支持企业将大型 Java 代码库迁移到 Kotlin。

此外,Meta 还支持了 Kotlin 生态系统中的重要基础设施工作,包括在 Buck 中开发 Kotlin 和 Android 构建工具链 ,重点是提高构建速度和可扩展性,以及对 Kotlin 格式化程序等库的贡献,帮助团队更轻松地维护一致且惯用的 Kotlin 代码库。

所以虽然 Meta 之前在 Kotlin 领域貌似没什么"热度",但是其实在该领域的贡献和投入并不少。

而后续,作为 Kotlin 基金会的 Gold 会员,Meta 将为 Kotlin Grants 等重要举措以及 Kotlin 多平台学生竞赛等教育活动继续做出贡献。

不知道在未来 Meta 是否会在 KMP/CMP 有全新的投入支持,毕竟在已经有 React Native 持续投入的情况下,KMP 是否能成为 Meta 的新选择还未可知,不过,这对 Kotlin 来说,肯定是一件好事。

参考链接

相关推荐
小鸡吃米…2 小时前
Python 列表
开发语言·python
kaikaile19952 小时前
基于C#实现一维码和二维码打印程序
开发语言·c#
我不是程序猿儿2 小时前
【C#】画图控件的FormsPlot中的Refresh功能调用消耗时间不一致缘由
开发语言·c#
rit84324992 小时前
C# Socket 聊天室(含文件传输)
服务器·开发语言·c#
嘉琪0013 小时前
Vue3+JS 高级前端面试题
开发语言·前端·javascript
xunyan62343 小时前
面向对象(下)-接口的理解
java·开发语言
遥不可及~~斌3 小时前
Java 面试题集 -- 001
java·开发语言
村里小码农3 小时前
Android APP之间共享数据
android·contentprovider·contentresolver·android app数据共享
2501_921649493 小时前
如何获取美股实时行情:Python 量化交易指南
开发语言·后端·python·websocket·金融
Jerry3 小时前
Navigation 最佳实践
android