【外评】Flutter 是否面临死亡?

如果标题让您产生误解,首先请允许我向您道歉。我一直是谷歌产品的粉丝,尤其是他们在移动开发方面的努力。

说到 Xamarin、React Native 和 Flutter 等流行的跨平台移动开发框架,我更倾向于 Flutter。我之所以倾向于 Flutter,一方面是因为 Google 的参与,另一方面是因为 Flutter 越来越受欢迎,最近 Stack Overflow 上的问题统计就证明了这一点。

https://insights.stackoverflow.com/trends…

然而,最近发生了一件意想不到的事情:谷歌裁掉了 Flutter 和 Dart 团队的成员(消息来源)。这让我大吃一惊,并促使我思考其背后可能存在的原因。

这似乎不是一次大范围的重组,因为它似乎只影响了特定的领域。谷歌发言人亚历克斯-加西亚-库默特(Alex García-Kummert)表示:”正如我们所说,我们正在负责任地投资于公司最大的优先事项和未来的重大机遇(source)”。

经过进一步调查,我发现这并非孤立事件。去年,谷歌已经裁掉了Fuchsia团队的部分成员(资料来源),他们负责构建Flutter原生操作系统。这让我相信,这些行动是有计划战略的一部分。

鉴于最近发生的这些事件和新出现的趋势,我发现自己对 Flutter 的未来越来越不确定。请允许我分享一下我的观点,首先谈谈 Flutter 出现的原因。

1.Flutter 可能是谷歌的备用计划

2010 年,甲骨文公司因谷歌使用 Java(尤其是在 Android 中)而对其提起诉讼(source)。这场官司一拖就是数年。尽管诉讼仍在继续,但安卓系统在整个2010年代初继续蓬勃发展,至今仍是谷歌接触移动用户和扩大技术影响力的重要平台。甲骨文诉谷歌案的败诉可能会对谷歌在移动领域造成严重影响

因此,谷歌需要制定战略,减少对 Java 的依赖。其中一个重要举措就是在 2017 年将 Kotlin 作为一等公民。无论甲骨文与谷歌的诉讼结果如何,这一决定都确保了安卓开发的连续性,从而维护了谷歌在移动市场的地位。

显然,在当时的我看来,将 Kotlin 提升为一等公民的决定显得有些仓促,尤其是考虑到有证据表明其在 Android Studio 3.0 中准备不足。我在当时撰写的文章(此文)中详细强调了这些担忧。

 

仅仅依赖 Kotlin 会带来风险,因为它是由 JetBrains 而不是谷歌开发的语言。为了降低这种风险,谷歌试图在自己完全拥有的语言基础上建立另一种选择。

早在 2015 年,谷歌就制定了使用 Dart 编程语言和一个名为 Sky(源代码)的框架进行无 Java 移动开发的计划,该框架后来发展成为 Flutter。Flutter 于 2017 年正式发布(source),恰逢 Kotlin 被指定为 Android 开发的一等公民。谷歌的这一战略举措提供了一个替代解决方案,确保 Android 开发生态系统具有更大的灵活性和控制力。

从 2017 年到现在,在我看来,Kotlin 和 Flutter 都取得了巨大的成功,这让我相信,在可预见的未来,这两种技术仍将大放异彩。

然而,最近的趋势和事件表明,谷歌最终可能会优先考虑其中一个,而不是另一个,有可能会逐步淘汰次要选项。这一点从下面概述的事态发展中可见一斑。

2.Kotlin 更加成功

自从 Kotlin 被宣布为 Android 开发的 “一等公民 “以来,谷歌和 JetBrains 都在不断改进 Kotlin,使其成为 Android 开发的巅峰之作。

自 2013 年推出完全基于 IntelliJ 的 Android Studio 以来,两家公司一直保持着和谐的合作关系。事实证明,这种跨越十年的合作关系是互惠互利的。IntelliJ 将 Kotlin 扩展到了 Android 开发以外的领域,而 Google 则深化了 Kotlin 在 Android 开发中的集成。

从统计数据来看,Kotlin 明显领先于 Dart
– Kotlin 排在 19 位,Dart 排在 26 位(Tiobe 指数
– 9%的人首选 Kotlin,6%的人首选 Dart(StackOverflow 2023 调查

Jetpack Compose 和 Kotlin Gradle

在谷歌方面,随着 2019 年 Jetpack Compose(source)的推出,Kotlin 在 Android 开发中的主导地位变得更加明显。这个纯粹基于 Kotlin 的框架进一步巩固了 Kotlin 与原生 Android 开发的联系。

此外,Gradle 构建环境也从使用 Groovy 过渡到使用 Kotlin。因此,Android 开发生态系统的绝大部分现在都围绕着 Kotlin 展开,巩固了其作为 Android 开发一等公民的地位。

Kotlin 多平台(KMP)

在 JetBrains 方面,他们通过 Kotlin 多平台开发将 Kotlin 扩展到了安卓开发之外,瞄准了 iOS 和网络开发。

这一战略使 Kotlin 有别于 React Native、Xamarin 和 Flutter 等其他移动开发框架,因为它更像是一个平台而非框架。与这些框架不同的是,Kotlin Multiplatform 并不决定整个应用程序的架构,而是允许将现有的本地 iOS 和 Android 项目扩展到它。

为确保多平台框架与安卓环境更顺畅地集成,谷歌员工积极参与了该框架的开发(source)。这种合作促进了该框架与安卓操作系统的整合,简化了该平台的开发流程。

这种灵活性可根据需要在纯本地开发和多平台开发之间实现无缝转换,使开发人员能够根据不断变化的需求调整他们的项目。

我个人在前段时间对它进行了深入研究,并注意到了它的独特方法,这使它有别于其他实现跨平台开发的框架。正如本文所述,Kotlin Multiplatform 还处于起步阶段,我期待着它的潜力。

3.Kotlin 多平台(KMP)与 Flutter 的对比

如上所述,Kotlin Multiplatform 与其他移动开发框架不同,它是一个平台而非框架。

因此,鉴于 Kotlin 多平台在早期仍主要依赖于本地开发,尤其是在 iOS 和 Android UI 特定领域,这并不是真正意义上的苹果与苹果之间的比较。

Jetpack Compose + Kotlin Multiplatform

不过,近年来,JetBrain 已将 Jetpack Compose 过渡到 Kotlin Multiplatform,并将其命名为 Compose Multiplatform

这进一步实现了 iOS 和 Android 原生 UI 方面的同步开发,从平台方面向上扩展,减少了在两个平台上工作的需要。

Compose Multiplatform 是 Kotlin 多平台应用程序的一个可选层,它允许您一次构建声明式用户界面并将其用于多个目标平台。

这一进步使其成为 Flutter 本身的有力竞争者。虽然它不是由谷歌创建的,但却得到了谷歌的大力支持。

在 reddit 上还有一个讨论,展示了 KMP 在这一领域的潜力:https://www.reddit.com/r/FlutterDev/comments/1afeo2r/has_anyone_used_compose_multiplatform/

Flutter 对谷歌的价值定位是什么?

Flutter 最初是谷歌的一项战略举措,涉及多个领域,如对新兴移动开发领域的投资,以及降低甲骨文和谷歌之间 Java 诉讼的相关风险。

然而,Kotlin 的显著成功、Kotlin Multiplatform 的巨大潜力以及谷歌与 IntelliJ 的紧密合作重塑了谷歌的移动开发格局,从而削弱了 Flutter 对谷歌的原始价值主张。

Flutter 仍是谷歌的成功之举

尽管如此,Flutter 还是取得了相当大的成功,阿里巴巴、字节舞动和谷歌等主要厂商都采用了 Flutter,并推出了谷歌支付和谷歌地球等应用(资料来源)。此外,还有一个蓬勃发展的 Flutter 社区在继续倡导采用 Flutter。

虽然 Fuchsia 团队经历了一些缩减,但该项目目前仍然活跃。

我对谷歌下一步行动的预测

我预测,在可预见的未来,谷歌很可能会继续保留 Flutter。它仍然是顶级跨平台移动开发框架之一,甚至是首选。因此,我怀疑谷歌会像 Xamarin 一样突然停止对 Flutter 的支持,因为 Xamarin 已于 2024 年 5 月 1 日终止了对 Flutter 的支持(消息来源)。

更有可能的情况是,Flutter 和 Dart 团队将逐步缩编,放慢开发速度,同时谷歌将观察其在移动领域的主导地位、与 JetBrains 的合作关系、社区的参与度以及技术的发展方向。

就我个人而言,虽然我并不支持移动框架(正如我在这里的文章中所讨论的那样),但考虑到社区对 Flutter 的极大依赖,我希望谷歌不要像对其他许多框架(source1、source2)那样彻底放弃 Flutter。至少,在做出任何最终决定之前,我希望谷歌能考虑开放社区支持。

祝 Flutter 开发者同仁一切顺利!

本文文字及图片出自 Is Flutter Facing its End?

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注