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

参考链接

相关推荐
科技道人4 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
-SOLO-6 小时前
Android Event 日志完全指南
android
逝水无殇7 小时前
C# 异常处理详解
开发语言·后端·c#
壮哥_icon7 小时前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化
千里马学框架7 小时前
Android Framework 新手学习踩坑建议指南
android·智能手机·性能优化·framework·aaos·车载开发·系统工程师
玖玥拾8 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
铅笔侠_小龙虾9 小时前
Rust 学习目录
开发语言·学习·rust
我命由我123459 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
_瑞9 小时前
深入理解 iOS 渲染原理
前端·ios
云泽8089 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范