曾几何时,跨平台开发被认为和使用 React Native 和 Flutter 构建应用程序是同义词。业余爱好者和移动应用程序开发公司都依赖这两个框架,以更低的成本更高的效益在安卓和 iOS? 6 S E . ( 平台上发布自己a 0 6 9 [的应用。d * F s Q但是现在,Kotlin 也加入了竞争,这让每个人都想知道谁将成为跨平台市场的霸主。
作者 | Jack patel
译者 | 明明如月,责编 | 郭芮
出品B n ` ; 6 Q O | CSDN(ID:CSDNnews)
以下为译文:
在这篇文章r { u &中,我们将重点将O } m N / a Kotlin 和 Flutter 进行比较,并帮助你找到跨平台应用的程序开发的正确选择。
什么是 Kotlin Multiplatform ?
Kotlin Multiplatform,是 Kotlin 语言的一个附+ N O加特性,帮助它扩展到 Android 应用程序开发之外的领域。这意味着,它使开发人员能够跨多个平台 (如 iOS、 Web、 Linux、 MacOS、 Android 和 J4 N ; Eava 虚拟机(JVM))共享代码、数据和业务逻辑。
由于我们在这里主要关注跨平台的特性,我们需要更n , w u c + ,关注 Kotlin 的原生平台特性。
投资 Kotlin 应用程序开发以实现跨平台展示的理念在市场上还是一i w i 0 :个新概念,但令人惊讶的是,各种流行品牌都接受了这一理念。
这背后的主要原因是它K } f m s v为移动应用程序| D w ~ y F开发者带来了以下好处。
Kotlin Multiplatform 的优点
1. 它是一个 S- J T ]DK,而不是框架
选择 KotliB 2 a e b @ - t un 的最大好处是,你不必完整地迁移应用程序。你可以从单个模块或特性开始,验证其有效性,然后逐步迁7 w _ x b移其~ Y ? v & p | X他部分。
2. 易于学习
由于 Kotlin 的语法与其他高级编程语言如 Swift、 Java、 Groovy 和 Scala 的语法非常相似,所以学习这门语言并投入 Kotlin Multiplatform 开发非常容易。
使用 Kotlin Multiplatform 开发让我们更专注于创新,而不是耗费更多时间在不同平台上编写相同逻辑的代码。MPP 比我们之前的方式更好,因为它将每个平台都当做首要目标。——Ankush Gupta,4 P h K a Qulzlet 软件工程师
3. 业务逻辑的重用
Kotlin 不是第一个能够将业务逻辑和 UI 分开的工具。各种跨p w T 8 i 2 |平台框架,如 Xamarin 和 ReaE = z ct Native 已Y + h | n q ;经提供了类似的服务。
然而,它与其他的应用程序的不同之_ , ~ f处在于,它在 UI 层之下使用了共享逻辑和库。这使得移动应用程序开发人员可以与原生环境进行交互—— Swift 和 XCode 之于 iOS,JavaScript 之于 web,以及 Kotlin 和 Android Studio 之于 Android ——而不需要使用任何桥接,以更原生的方式交付代码。
4. 原生 UI 体验
Kotlin Multiplatform 并不要求开发人员遵循任何 UI 创建指令。它使 UI 开发人员能够像处理原生应用程序一样处理应用程序的外观、行为和性能。
5. 更好的表现
考虑使用 Kotlin 语言进行跨平台开发的优点之一是,跨平台编译代x } } | j f H码时采用与目标平台相同的格式。这使得它在性能方面与该平台K % ! ^ H j y . {原生语言的性能如出一辙。
6. 增强的灵活性和可扩展性
在不使用任何虚拟机的情D ~ , o G况下,只借助 Kotlin 开发者就可以扩展他们的应用程序项目。这使它成为制作i e = - n ? ; O移q 3 ! U V动应用程序的理想选择,同时又兼具灵活性和. 4 N S可伸缩性。
然而,尽管有q U ( # - 3 )明显的优势,Kotlin 语言的跨平T k ] % 7 Z , N d台扩展仍& ~ { / B b . Z 3然因为某些缺点而难以成为所有人的最爱。
Kotlin Multiplatform 的缺点
1. 仍处D C X于实验阶段
虽然a Z : $ - A在 Kotlin 1.2 版本中发布,但是 SDK 还没有真正达到稳定的 1.0 版本。它仍处于试验阶段,这就让t 9 K 3开发人员在为下一个大项目选择它时犹豫不决。
2. 可用库非常有限
目前,开发环境中只有少数几个基本库,如数据序列化库和 HTTP 客户端库。尽管随着 Kotlin 1.3.60 的下一个版本 Kotlin 1.4 的到来,预计还会有更多像 DateTime 这样的库可以使用,但是直到目前为止,很难毫不费力地使用 Kotlin 构建应用程序。
3. 需要熟悉其他技术栈
由于 Kotlin Multiplatform 并不是为了取代平台所关注的所有应用程序编程接口(API) ,因此应用程序开发公司需要对每个平台和 API 有基本的了解。这也是选择 Kotlin 而不是 Flutn _ N } j : mter 和其他跨平台开发带来的缺点。
4. 更高的开发成本
最后,Kotlin SDK 提供了一些半原生功能。因此,开发移动应用程序需要更高的成本,这最终使得它不适合开发 MVP 和应用程序原型。
在深入对比 Flutter 和Kot. 6 - o X O I i ylin Multiplatform 的优劣之前,让我们先了解一下 Flutter。
什么是 Flutter UT u b aI 框架?
Flutter 于 2015 年| c r l }推出,旨在为谷歌 Fuchsia 市场做准备,它是j A E e 7 T一个开源L L 8 Q软件开发工具包,可以使用一个代码库来制作漂亮的、原生的移动、网络和桌面。
Google 的 UI 框架旨在成W m 8 + ; F f为主流技术和迎接其他市场的挑战,提供高效的解决方案。其结果是 Flutter 成为一个理想的跨平台应用程序开发框架。不仅如此,它还进入了顶级品牌使用的技术清单中。
这使得大家更想知道 Flutter 的特点和优势,你将在下文中了解到这些内容。
Flutter 的优点
1. 开源和免费
Flutter 和s Q 9 P 2 l %它的底层编程语言 Dart 都是6 r # 0 ( C 2 3开源的,可以免费使用。这使得开发人员可以查看文档,在开放式的开发者论坛中发布d 3 r E w v 6 a ?查询,并最终学习和实现代码。
2. 热加载功能
Flutter 之所以受到移动应用程序开发机构青睐的最大原因之一是它的热加载功能。该功能使x , O @任何人都可以更容易地在后端进行任何更改,并同时在前端查看差异。通过这种方式,就可以很容易地确定更改是否与应用程序的其他元素完美结合。
3. 高度可定制
使用 Flutter 进行c E P j 8应用程序开发,开发人员可以在开发环境中使用不同的小部件。这使得他们更S $ f m 7 T ; 5容易R g N O创建移动解决方案,更快定制外观。
4.O b : ~ u Y ~ 降低开发时间和成本
Fn |lutterj p 2 & , 跨平台的好处之一是,它为使用一u x h 1 Z个代码库为 iOS 和 Android 创建原生类应用程序提供了可能。因此创建一个 Flutter 移动应用程序的成本相当低。
5. 支持 Google Firebase
通过 Firebaf a N V m B 7 :s: ] He 集成工具,开发人员能够将后端工具添加到 FluttY L @ ser 开O 0 q Q发环境中。
6. 适合创建 MVP 开发和应用程序原型
Flutter 提供了以更少的时间、成本和精力为 Android 和 iOS 平台构建应用程序的功能。这使得 Flutter 成为 MVP 开发和创建原型的完美选择,可以y | F q用来试水或集资。
使用 Flutter SDK 的缺点
1. 应用程序& @ M 3 K + c v过大
为应用程序开发计划选择 Flutter 的最F [ x S ; . ? 6 大缺点是应用程序太大了。与 React Native 和 Xamarin 相比,即使在这个框架中 Hello Worldl 8 c q x $ 的i E = 4 E ( L发布文件大小也要 6.7 MB 左右。
2. 基于 Dart
不可否认,Dart 很容易学习,而且实现起来更快。然而,它还没有像H B . H同类的 Java、 C# 、 JavaScript 和 C语言那样受欢迎。这都阻碍了开发人员报名参加 dart 最佳程序设计课程8 - i 和投入到 Flutter 怀抱。
现在,既然我们已经对这两者有了初步的了解。接下来,让我们来看看哪个更适合跨 n . k 5平台开发ーー Kotlin 还是 Flutter。
对比 Kotlin Multiplatform 和 Flutter 要考虑的因素
1. 市场人气
Kotlin 和 Flutter 都是开源的,可以免费使用的工具。正因为如此,开发人员对两者都A Q 3 a K感兴趣。
如果你查看谷歌趋势(Google Trends),Flutter 的受欢迎程T h F ` I度5 ? K与 Kotlin 相比上升幅度更大。同样的,如m Z ] a果你通过 GitHub 比较 Kotlin 和 Flutter,前者有 28300 start 和 3290 次 fork,而后者有* 69500 次 start 和 8110 次 fork*。
这表明,与 Kotlin 相比,Flutter 的人气更高。
2. 学习曲线
如果你把学习曲线作为比较 Kotlin 和 Flutter 的一个因素的话,前者无疑会赢。其背后的一个原因是 Kotlin 可以与 Java 互操作,而且谷歌几个月前提供了各种 Kotlinc ] 9 学习课程。
但是,当谈到 Kotlin Multiplats l W P E l Oform 和 Flutter 谁更有优势时,情况就有些不同了。与 Flu} W J } utn 8 ? H / n K xter 相比 Kotlin Multiplatform 是一个新的生态系统,市场上可用的资源有限。
正因为如此,Flutter 更胜一筹。
3. 性能
Flutter 让开发人员使_ x S m ~ * 2用相同的语言布局和后端需求,享受更高的动画速度,等等。
但与 Kotlin 相比,Flutter 在中国在市场上仍远远落后。其背后的主要原因是,Kotlin Multiplatform 代码的编译格式与目标平台完全相同。
因此,在跨平台性能方面 KotlinA B q d L 8 h 更胜一筹。
4. 第三方库和工具的整合
Kotlin MuD ~ 9ltiplatform 在本地平台生态系统中运行。因此,应用程序专家可以使用他们在原生开发中使用的工具和库,包括 Jetpack Compose 和 SwiftUI。这最终意味着他们不需要寻找第三方库和工d M , U P x具来连接本地环境。
但是,如果 Flutter 跨平台的 SDK 基本上是一个 UI 开发工具,因此它就需要借助第三方库或工具。
5. 后端开发的范围
当侧重后端服务开发时,Kotlin Multiplatform 比 和 Flutter 更有优势。
虽然 Flutter 可以整合 Firebase ,一个 BaaS (后端即服务)平台,整合后8 f x 2端开发。但是 Kotlin multiplatforq + 6 Bm 却直接可以让开发人员编写后端代码。
6. 关注多I ? C ~ O { / x个平台
目前,针对移动设备 (Anj D U l L x 7 W hdroid 和 iOS) 和网络0 u h ] E S H @ D设计的应用程序都属于 Flutter 使用范围。人们不能使用它在 tvOS、 Android Auto、 CarOS 和 WatchOS 上同时出现。
然而,在 Kotlin Multiplatform 的情况下,就不存在这种限制。它的目的是为移动设备和平台以外的设备开发应用程序项目。
因此,对于移动应用开发服务公司来说,选择 Kotlin Multiplatform 是一个更好的选择,因为他们可以在任何想涉足的平台b ? 2 b和设j m - 7 F备上推出他们的应用。
7. 工作和薪水范围
另一个需要考虑的重要因素n m 9 0 r是工作和薪酬范围。
根据 StackShare 社区,KZ $ O T r & J ]otlin 编程语言被l * M B 268 家公司和 210 个开发者提到,而 Flutter 只被 42 家公司和 146 个开发者列为技术栈。
现在,因为 Kj Z H u Votlin Multiplatform 不是一个独立的平g 7 F 6 Q % J } i台。这是一种原生语言基础上的试验性扩展,你可以在 Kotlin 的原生环境中使用它,这就给人留下了有更多工作机会的印象。
8. 文档和社区支持
与 Flutter 相比, Kotlin Multiplatform 仍然比较新,实际上还处于试验阶段。因此,后者的文档和社区支持在某种程度上 , x p Z :落后于前者。但是,一旦跨平台的功能稳定,文档和社区实力将得到改善,届时更多人将会选择 Kotlin 进行跨平台开发。
谁是跨平台开发大战的胜利者?
Kotlin Multiplatform 和 Flutter 都很可靠,它们的目的都是为了缩短) c Q 6 F D i 8 @在 Android 和 iOS 平台上应用开发的周期。它们都得到了 Google 的支持。它们相互之间进行着激烈的竞争,并且每次发行都变得越X 9 0 5来越有? j : X f竞争力。
在这种情况下,最明智的做法是咨询移动领域的专家@ e d H r k l H,分析你的跨平台应用的需求和优先级,以确定 Kotlin 和 Flutter 哪个更适合你。
原文:htZ | k ? p n , ] jtps://medium.com/@jackpatelsa/kotlin-vs-flutter-who-will5 H ; ( D B [ U-rule-the-cross-platform-app* } m-market-6d1d69cad894
译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。
本文为J 7 0 x CSDN 翻译,转载请注明来源出处。