谁将成为跨平台开发市场的最终统治者:Flutter VS Kot
原文; https://www.infoq.cn/article/AJUsMBfwQqTiDU7iyRt4
我们在早些时候已经对比过 Flutter 和 React Native 了,这篇文章就来对比一下 Flutter 与 Kotlin 吧。
曾经有一段时间,跨平台开发就是 " 使用 React Native 和 Flutter 构建应用 " 的代名词。个人开发者和移动应用开发公司都会依赖这两个框架,从而以更加经济和高效的方式同时在 Android 和 iOS 上推出自己的产品。
但是现在,Kotlin 也加入了这场竞赛。谷歌甚至宣布 Kotlin 现在是 Android 应用程序开发人员的首选语言。于是所有人都想知道谁将成为跨平台开发市场的最终统治者。我们在早些时候已经对比过 Flutter 和 React Native 了,这篇文章就来对比一下 Flutter 与 Kotlin 吧。
什么是 Kotlin Multiplatform?
Kotlin Multiplatform 是这种语言的一项附加功能,可帮助其扩展到 Android 应用程序开发以外的领域。这意味着,它让开发人员可以跨多个平台(例如 iOS、Web、Linux、macOS、Android 和 Java 虚拟机 JVM)共享代码、数据和业务逻辑。
我们将在这里着重介绍 Multiplatform 的功能,你还可以在《Kotlin for Android App Development – Whys and Hows and Bonus Tips》这篇博文中了解 Kotlin 的原生平台特征。
在当下的市场中,投资 Kotlin 应用开发以实现跨平台发布还是一个很新的理念,但令人惊讶的是很多受欢迎的品牌都接受了这一理念。
这种现象背后的主要原因是,Kotlin Multiplatform 为移动应用开发人员提供了以下好处。
使用 Kotlin Multiplatform 的好处
这是一个 SDK,而不是框架
选择 Kotlin 的最大好处是你无需迁移整个应用程序。你可以从单个模块或功能开始,先把这一部分跑起来,然后逐步迁移其他部分。
容易学习
由于 Kotlin 的语法与 Swift、Java、Groovy 和 Scala 等顶级编程语言非常相似,因此学习这种语言并投入 Kotlin Multiplatform 的开发工作是非常容易的事情。
重用业务逻辑
的确,它不是第一个让开发人员能够分离业务逻辑和 UI 的工具。像 Xamarin 和 React Native 那样的各种跨平台框架都已经提供了这种服务。
但让 Kotlin Multiplatfrom 与众不同的是,它在 UI 层下采用了共享的逻辑和库。这使移动应用程序开发人员可以与原生环境——包括 iOS 的 Swift 和 XCode、Web 上的 JavaScript 和 Android 的 Kotlin 和 Android Studio——来交互,而无需使用任何桥接手段,并以更加原生的方式交付代码。
原生 UI 体验
Kotlin Multiplatform 不需要开发人员遵循任何有关 UI 创建的指示。它使 UI 开发人员可以像应对原生应用一样处理应用程序的外观、行为和性能表现。
更高的性能
考虑使用 Kotlin 语言进行跨平台开发的一大优势在于, Multiplatform 会将代码编译为与目标平台完全相同的格式。这使其性能表现与原生竞品同样出色。
增强的灵活性和可扩展性
它使开发人员可以在不使用任何 VM 的情况下扩展其应用项目,并运营维护它们。这使它成为制作移动应用的理想选择,让开发人员能够同时关注灵活性和可扩展因素。
然而,尽管 Kotlin 语言的 Platform 扩展具有这么多令人印象深刻的优势,但它也有着很多缺陷,所以想要赢得所有人的喜爱还有很长的路要走。
Kotlin Multiplatform 的缺陷
仍处于实验状态
虽然这一 SDK 是在 Kotlin 1.2 中引入的,但它尚未达到稳定的 1.0 版本,仍处于实验状态。这让开发人员在考虑为下一个大型项目选择它时犹豫不决。
可用的库不够多
当前,它的开发环境中仅提供了一些基本库,例如数据序列化库和 HTTP 客户端库。尽管随着 Kotlin 1.4(即 Kotlin 1.3.60 的继任者)的到来,会有更多像 DateTime 这样的库进入市场,但直到现在,要做到无缝且毫不费力地构建应用程序依旧是很困难的事情。
需要熟悉其他技术栈
由于 Kotlin Multiplatform 的宗旨并不是要替代各个平台提供的所有应用程序编程接口(API),因此应用开发公司需要具备各个平台和相应 API 的基本知识。相比 Flutter 等其他跨平台开发选项,这又是一个选择 Kotlin 的缺陷所在。
较高的开发成本
最后一点也很重要,Kotlin SDK 提供了一些半原生功能。因而构建移动应用需要更高的成本,所以到头来它并不适合创建 MVP 和应用原型。
探讨了 Kotlin 的上述优缺点后,我们再来回顾一下 Flutter,然后进一步深入市场,探究两者之间的关系。
什么是 Flutter UI 框架?
Flutter 于 2015 年推出,是谷歌 Fuchsia 操作系统的市场开路先锋。它是一个开源 SDK,让人们可以使用单个代码库制作出设计精美,具备原生体验的移动设备、Web 和桌面应用程序。
谷歌的 UI 框架针对当前众多的技术和市场挑战,提供了行之有效的解决方案。结果是 Flutter 很快就成为了理想的跨平台应用开发框架。不仅如此,它还进入了一众顶级品牌所使用的技术列表中。
于是人们都更好奇了,想要了解 Flutter 的功能特性以及相应的优点,接下来我们逐一分析。
选择 Flutter 的好处
开源和免费使用
Flutter 及其底层编程语言 Dart 都是开源的,可以免费使用。所以开发人员可以查看它们的文档,在开放的开发论坛中发布自己的问题,最后学会并应用代码。
热重载功能
Flutter 之所以受到移动应用程序开发机构青睐,最重要的原因之一就是它提供的热重载功能。
这一功能使任何人都可以更轻松地在后端做出各种更改,并即时在前端查看更改的效果。通过这种方式,开发人员可以轻松判断更改是否与应用程序的其他元素完美地结合在一起。
高度可定制
投入 Flutter 应用程序开发后,开发人员就有能力在开发环境中使用多种小部件。这使他们更容易创建速度更快,且拥有自定义外观的移动解决方案。
缩减开发周期和成本
Flutter 的一项跨平台优势在于,它让开发人员可以使用单个代码库,同时为 iOS 和 Android 创建类似原生版本的应用程序。这大大降低了创建 Flutter 移动应用的成本。
支持 Google Firebase
借助谷歌的 Firebase 集成工具,Flutter 使开发人员得以将后端设施添加到开发环境中。
适合创建 MVP 和 App 原型
Flutter 提供的功能让开发人员可以用更少的时间、成本和精力,同时为 Android 和 iOS 平台构建应用程序。这让 Flutter 成为 MVP 开发、创建用来试水或吸引投资应用原型的理想选择。
选择 Flutter SDK 的缺陷
更大的应用体积
当你的应用程序开发计划选择 Flutter 时,面临的的最大缺陷就是应用体积太大了。与 React Native 和 Xamarin 相比,用这个框架就连发布一个“Hello World”应用的文件大小也有大约 6.7MB。
需要用 Dart 编程
无可否认,Dart 易于学习且实现速度更快。但是,它还不像 Java、C#、JavaScript 和 C 这些同行一样那么流行。于是开发人员很难去学习那些最佳 Dart 编程课程,进而踏入 Flutter 开发领域。
对比 Kotlin 与 Flutter 时的考虑因素
市场知名度
Kotlin 和 Flutter 都是开源且免费使用的工具。因此开发人员很有兴趣同时使用两种方案。
我们看一下谷歌趋势数据,与 Kotlin 相比,Flutter 的受欢迎程度正在飞速增长。同样,我们看一看 GitHub 的数据来对比 Kotlin 和 Flutter,会发现前者有 28.3K 星和 3.29K forks,而后者有 69.5K 星和 8.11K forks。
这些数据表明,在市场上 Flutter 相比 Kotlin 获得的发展动力要大得多。
学习曲线
如果你将学习曲线看作是原生 Kotlin 与 Flutter 的战争中的比较因素,那么前者无疑会是赢家。其背后的原因是它可以与 Java 互操作,并且几个月前谷歌提供了一系列 Kotlin 学习课程。
但是话题转向 Kotlin Multiplatform 和 Flutter 的比较时,情况就有所不同了。与 Flutter 相比,Kotlin Multiplatform 是一个全新的生态系统,其在市场上可用的资源是很有限的。
因此,Flutter 赢得了比赛。
性能
Flutter 让开发人员可以使用相同的语言来同时满足前端布局和后端需求,并享受更流畅的动画等众多好处。
但是与 Kotlin 相比,Flutter 在市场上仍然远远落后。其主要原因是 Kotlin Multiplatform 的代码是完全按照目标平台的格式编译的。
因此,Kotlin Multiplatform 赢得了对 Flutter 的性能之战。
第三方库和工具的集成
Kotlin Multiplatform 运行在原生平台生态系统内,而不是新建一个生态。因此,应用专家可以使用他们在原生开发工作期间一直使用那些工具和库,包括 Jetpack Compose 和 SwiftUI 等。于是乎,这意味着他们无需寻找第三方库和工具来对接原生环境。
但对于 Flutter 跨平台 SDK 来说这些工具是必需的,因为它基本上是一个 UI 开发工具。
后端开发领域
考虑 Kotlin Multiplatform 与 Flutter 之间在后端开发领域的比较时,前者又一次胜出了。
Flutter 使用的是 Firebase(这是一个高效的 BaaS——后端即服务平台),来提供出色的后端体验。而 Kotlin Multiplatform 让开发人员可以直接编写后端代码。
专注于多平台
目前,Flutter 的用例针对的是移动设备(Android 和 iOS)和 Web 端的应用程序。人们无法用它在 tvOS、Android Auto、CarOS 和 WatchOS 上展示自己的产品。
但对于 Kotlin Multiplatform 来说并没有这种限制。它的设计理念就是为移动端以外的设备和平台开发应用项目。
因此,Kotlin Multiplatform 是移动应用程序开发服务公司在你能想象的各种平台和设备上点亮应用创意的首选工具。
工作机会和薪资范围
在对比 Kotlin Multiplatform 与 Flutter 时,要考虑的另一个重要因素就是工作机会和薪资范围。
在 StackShare 社区中,有 268 家公司和 210 位开发人员在技术栈中提到了 Kotlin 编程语言,而 Flutter 被 42 家公司和 146 位开发人员纳入了技术栈。
现在,由于 Kotlin Multiplatform 还不是一个独立的平台,而是对原生语言的一种实验性扩展,可以在 Kotlin 原生环境中使用,所以看起来它在市场上有更多的工作机会。
文档和社区支持
与 Flutter 相比,Kotlin Multiplatform 仍然比较新,实际上还处于实验阶段。因此,后者的文档和社区支持在某些方面落后于前者。但是,一旦 Multiplatform 变得稳定起来,可以预期它的文档和社区实力将有所提高,从而进一步鼓励大家使用 Kotlin 进行跨平台开发。
谁会是跨平台开发大战的胜利者?
Kotlin Multiplatform 和 Flutter 都是可靠的工具,均旨在减少同时在 Android 和 iOS 平台上发布产品所需的时间,并且都得到了谷歌的支持。它们相互之间进行着激烈的竞争,并且每次更新后都变得更具竞争力。
在这种情况下,建议开发人员咨询移动专家,分析你的跨平台应用需求和优先级,来确定 Kotlin 和 Flutter 究竟哪种选择才是更合适的。