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 来说,肯定是一件好事。

参考链接

相关推荐
q567315231 分钟前
R语言初学者爬虫简单模板
开发语言·爬虫·r语言·iphone
rzl021 小时前
java web5(黑马)
java·开发语言·前端
时序数据说1 小时前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
jingling5551 小时前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
m0_687399841 小时前
写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
开发语言·c++·ffmpeg
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
A~taoker2 小时前
taoker的项目维护(ng服务器)
java·开发语言
萧曵 丶2 小时前
Rust 中的返回类型
开发语言·后端·rust
还鮟2 小时前
CTF Web的数组巧用
android
hi星尘2 小时前
深度解析:Java内部类与外部类的交互机制
java·开发语言·交互