为什么 Google 同时投资 Kotlin Multiplatform 和 Flutter

基础概念

首先,我最近了解到有两个不同的概念:

  • KMP (Kotlin Multiplatform) :Kotlin 多平台
  • CMP (Compose Multiplatform) :Compose 多平台

这两个方案都提供跨平台解决方案,能够与 Flutter 竞争。

  • KMP 编译成 Objective-C(用于 iOS)或 WebAssembly(用于 Web)。
  • CMP 使用 Skia 在 Canvas 上渲染 KMP 组件,这与 Flutter 的渲染方式相同。

KMP 和 CMP 由 JetBrains 开发。尽管 Google 和 JetBrains 关系密切,但 JetBrains 是一家独立的公司,没有被 Google 收购的计划。


为什么 Google 同时押注 Kotlin 和 Flutter

Google 大力推广 Kotlin 作为 Android 的首选语言。他们与 JetBrains 合作,正式确定了其官方地位,付出了巨大的努力。

但同时,他们也投入了大量资源用于 Flutter 和 Dart 的跨平台开发。

这到底是怎么回事?

这不是一个"总体规划"

事实是------Google 并没有一个宏大、统一的战略,将所有东西像拼图一样完美地组合在一起。我知道,我们总期望科技巨头能有这种精妙的 20 年路线图,但这并不是 Google 的运作方式。

Google 内部的不同团队在解决不同的问题。

  • Android 团队需要一种比 Java 更好的语言,Kotlin 是显而易见的替代品。
  • 同时,其他团队需要跨平台解决方案,能够运行在从机顶盒到智能显示器等所有设备上。

实际上,Flutter 最初是为了解决 Google 内部一些非常具体的问题而诞生的。Google Fiber 需要一种比原生 OpenGL 更好的方案来应对低端机顶盒。Google Home Hub 团队则在努力解决 WebView 在微小设备上占用过多内存的问题。

为什么 Kotlin 对 Android 如此合理

我们必须承认------Android 曾经被 Java 困住,而 Java 的体验并不理想。但你又不能简单地扔掉数百万个现有的应用程序,对吗?

Kotlin 的巧妙之处在于它是一种"覆盖"语言。 它运行在现有的 JVM 上,因此旧的 Java 代码和新的 Kotlin 代码可以和谐共存。开发者可以逐步迁移,而不会破坏整个系统。这与切换到像 Dart 这样完全不同的技术栈相比,要温和得多。

Flutter 填补了完全不同的空白

Google 需要一种真正的跨平台解决方案------不仅是 Android 和 iOS,还包括 Web、桌面,以及各种你叫得出名字的嵌入式设备。

Flutter 的设计初衷不是取代原生 Android 开发。它的目的是让你编写一次,随处运行,包括那些没有原生 UI 框架可言的奇特设备。

大型科技公司的混乱现实

大公司的协调性并不像我们想象的那么好。Google 内部有许多团队在发布产品,并非所有事情都需要通过 Sundar Pichai(Google CEO)。没有哪一个人能把公司所做的所有事情都装在脑子里。

这很混乱吗?是的,绝对是。但也许正是这种混乱,也成就了 Google 的持续创新。团队可以独立进行实验,而无需等待十个不同委员会的批准。

Apple 的做法则有所不同------以前一切都围绕史蒂夫·乔布斯运转,你可以看到一个统一的愿景。但 Google 的方法有它自己的优势,即使从外部看起来很令人困惑。

甲骨文的诉讼案

这个问题还有一个容易被大家遗忘的部分:Google 曾因在 Android 上使用 Java 而与甲骨文(Oracle)陷入巨大的法律纠纷。那场诉讼给 Google 带来了寻找替代方案的巨大压力。

Flutter 和整个 Fuchsia OS 项目在一定程度上就是一种保险策略。 如果 Google 输了官司,他们就需要完全不依赖 Java 的平台。

但后来 Google 赢得了诉讼。突然之间,压力解除了。他们可以继续在 Android 上使用 JVM,而不用担心甲骨文在耳边抱怨。

为什么两者可能会长期并存

我认为无论是 Kotlin 还是 Flutter 都不会消失。

  • Android 拥有数百万建立在 JVM 上的应用------你不可能一夜之间抛弃这个遗产。Kotlin 在保持兼容性的同时,为开发者提供了一种现代语言。
  • Flutter,另一方面,目前是一种更简单、更先进的跨平台解决方案,拥有出色的开发者体验。

Google 在自己的应用中大量使用 Flutter:Google Pay、Google Earth、Google Ads、Google Classroom、YouTube Create、Google One、FamilyLink、Crowdsource、Google Analytics、Readalong,以及 Fitbit Ace 等等。

我见过开发者对 Google 没有选定一个方案而感到沮丧。但坦率地说,我认为为不同的工作准备多种工具是合理的。你不会批评一个木匠同时拥有锤子和螺丝刀。

这对开发者的意义

如果你正努力在 Kotlin 和 Flutter 之间做出选择,不要把它看作是一个非此即彼的决定。它们是针对不同工作的工具。

  • 如果你正在构建一个对性能要求高、需要深度平台集成的 Android 应用? Kotlin 可能是你最好的选择。
  • 如果你是一名独立开发者或小团队,需要从零开始快速发布到多个平台? Flutter 是正确的方向。
  • 如果你想为现有的 Android 应用重写 iOS 和 Web 版本? 使用 KMP 和/或 CMP 可能比用 Flutter 创建一个全新的代码库更经济。

Google 不会通过淘汰其中一个来帮你做出选择。两者都有强大的理由存在,并且都在为真正的开发者解决实际问题。

相关推荐
崔庆才丨静觅1 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅3 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊3 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax