曾几何时,跨平台开发被认为和使用 React Native 和 Flutter 构建应用程序是同义词。业余爱好者和移动应用程序开发公司都依赖这两个框架,以更低的成本更高的效益在安卓和 iOS 平台上发布自己的应用。但是现在,Kotlin 也加入了竞争,这让每个人都想知道谁将成为跨平台市场的霸主。
以下为译文:
在这篇文章中,我们将重点将 Kotlin 和 Flutter 进行比较,并帮助你找到跨平台应用的程序开发的正确选择。
什么是 Kotlin Multiplatform ?Kotlin Multiplatform,是 Kotlin 语言的一个附加特性,帮助它扩展到 Android 应用程序开发之外的领域。这意味着,它使开发人员能够跨多个平台 (如 iOS、 Web、 Linux、 MacOS、 Android 和 Java 虚拟机(JVM))共享代码、数据和业务逻辑。由于我们在这里主要关注跨平台的特性,我们需要更关注 Kotlin 的原生平台特性。投资 Kotlin 应用程序开发以实现跨平台展示的理念在市场上还是一个新概念,但令人惊讶的是,各种流行品牌都接受了这一理念。这背后的主要原因是它为移动应用程序开发者带来了以下好处。
选择 Kotlin 的最大好处是,你不必完整地迁移应用程序。你可以从单个模块或特性开始,验证其有效性,然后逐步迁移其他部分。由于 Kotlin 的语法与其他高级编程语言如 Swift、 Java、 Groovy 和 Scala 的语法非常相似,所以学习这门语言并投入 Kotlin Multiplatform 开发非常容易。使用 Kotlin Multiplatform 开发让我们更专注于创新,而不是耗费更多时间在不同平台上编写相同逻辑的代码。MPP 比我们之前的方式更好,因为它将每个平台都当做首要目标。——Ankush Gupta, Qulzlet 软件工程师
Kotlin 不是第一个能够将业务逻辑和 UI 分开的工具。各种跨平台框架,如 Xamarin 和 React Native 已经提供了类似的服务。然而,它与其他的应用程序的不同之处在于,它在 UI 层之下使用了共享逻辑和库。这使得移动应用程序开发人员可以与原生环境进行交互—— Swift 和 XCode 之于 iOS,JavaScript 之于 web,以及 Kotlin 和 Android Studio 之于 Android ——而不需要使用任何桥接,以更原生的方式交付代码。Kotlin Multiplatform 并不要求开发人员遵循任何 UI 创建指令。它使 UI 开发人员能够像处理原生应用程序一样处理应用程序的外观、行为和性能。考虑使用 Kotlin 语言进行跨平台开发的优点之一是,跨平台编译代码时采用与目标平台相同的格式。这使得它在性能方面与该平台原生语言的性能如出一辙。在不使用任何虚拟机的情况下,只借助 Kotlin 开发者就可以扩展他们的应用程序项目。这使它成为制作移动应用程序的理想选择,同时又兼具灵活性和可伸缩性。然而,尽管有明显的优势,Kotlin 语言的跨平台扩展仍然因为某些缺点而难以成为所有人的最爱。
虽然在 Kotlin 1.2 版本中发布,但是 SDK 还没有真正达到稳定的 1.0 版本。它仍处于试验阶段,这就让开发人员在为下一个大项目选择它时犹豫不决。目前,开发环境中只有少数几个基本库,如数据序列化库和 HTTP 客户端库。尽管随着 Kotlin 1.3.60 的下一个版本 Kotlin 1.4 的到来,预计还会有更多像 DateTime 这样的库可以使用,但是直到目前为止,很难毫不费力地使用 Kotlin 构建应用程序。由于 Kotlin Multiplatform 并不是为了取代平台所关注的所有应用程序编程接口(API) ,因此应用程序开发公司需要对每个平台和 API 有基本的了解。这也是选择 Kotlin 而不是 Flutter 和其他跨平台开发带来的缺点。最后,Kotlin SDK 提供了一些半原生功能。因此,开发移动应用程序需要更高的成本,这最终使得它不适合开发 MVP 和应用程序原型。在深入对比 Flutter 和Kotlin Multiplatform 的优劣之前,让我们先了解一下 Flutter。
Flutter 于 2015 年推出,旨在为谷歌 Fuchsia 市场做准备,它是一个开源软件开发工具包,可以使用一个代码库来制作漂亮的、原生的移动、网络和桌面。Google 的 UI 框架旨在成为主流技术和迎接其他市场的挑战,提供高效的解决方案。其结果是 Flutter 成为一个理想的跨平台应用程序开发框架。不仅如此,它还进入了顶级品牌使用的技术清单中。这使得大家更想知道 Flutter 的特点和优势,你将在下文中了解到这些内容。
Flutter 和它的底层编程语言 Dart 都是开源的,可以免费使用。这使得开发人员可以查看文档,在开放式的开发者论坛中发布查询,并最终学习和实现代码。Flutter 之所以受到移动应用程序开发机构青睐的最大原因之一是它的热加载功能。该功能使任何人都可以更容易地在后端进行任何更改,并同时在前端查看差异。通过这种方式,就可以很容易地确定更改是否与应用程序的其他元素完美结合。使用 Flutter 进行应用程序开发,开发人员可以在开发环境中使用不同的小部件。这使得他们更容易创建移动解决方案,更快定制外观。Flutter 跨平台的好处之一是,它为使用一个代码库为 iOS 和 Android 创建原生类应用程序提供了可能。因此创建一个 Flutter 移动应用程序的成本相当低。通过 Firebase 集成工具,开发人员能够将后端工具添加到 Flutter 开发环境中。Flutter 提供了以更少的时间、成本和精力为 Android 和 iOS 平台构建应用程序的功能。这使得 Flutter 成为 MVP 开发和创建原型的完美选择,可以用来试水或集资。
为应用程序开发计划选择 Flutter 的最大缺点是应用程序太大了。与 React Native 和 Xamarin 相比,即使在这个框架中 Hello World 的发布文件大小也要 6.7 MB 左右。不可否认,Dart 很容易学习,而且实现起来更快。然而,它还没有像同类的 Java、 C# 、 JavaScript 和 C语言那样受欢迎。这都阻碍了开发人员报名参加 dart 最佳程序设计课程 和投入到 Flutter 怀抱。现在,既然我们已经对这两者有了初步的了解。接下来,让我们来看看哪个更适合跨平台开发ーー Kotlin 还是 Flutter。
对比 Kotlin Multiplatform 和 Flutter 要考虑的因素Kotlin 和 Flutter 都是开源的,可以免费使用的工具。正因为如此,开发人员对两者都感兴趣。如果你查看谷歌趋势(Google Trends),Flutter 的受欢迎程度与 Kotlin 相比上升幅度更大。同样的,如果你通过 GitHub 比较 Kotlin 和 Flutter,前者有 28300 start 和 3290 次 fork,而后者有* 69500 次 start 和 8110 次 fork*。这表明,与 Kotlin 相比,Flutter 的人气更高。如果你把学习曲线作为比较 Kotlin 和 Flutter 的一个因素的话,前者无疑会赢。其背后的一个原因是 Kotlin 可以与 Java 互操作,而且谷歌几个月前提供了各种 Kotlin 学习课程。但是,当谈到 Kotlin Multiplatform 和 Flutter 谁更有优势时,情况就有些不同了。与 Flutter 相比 Kotlin Multiplatform 是一个新的生态系统,市场上可用的资源有限。Flutter 让开发人员使用相同的语言布局和后端需求,享受更高的动画速度,等等。但与 Kotlin 相比,Flutter 在中国在市场上仍远远落后。其背后的主要原因是,Kotlin Multiplatform 代码的编译格式与目标平台完全相同。Kotlin Multiplatform 在本地平台生态系统中运行。因此,应用程序专家可以使用他们在原生开发中使用的工具和库,包括 Jetpack Compose 和 SwiftUI。这最终意味着他们不需要寻找第三方库和工具来连接本地环境。但是,如果 Flutter 跨平台的 SDK 基本上是一个 UI 开发工具,因此它就需要借助第三方库或工具。当侧重后端服务开发时,Kotlin Multiplatform 比 和 Flutter 更有优势。虽然 Flutter 可以整合 Firebase ,一个 BaaS (后端即服务)平台,整合后端开发。但是 Kotlin multiplatform 却直接可以让开发人员编写后端代码。目前,针对移动设备 (Android 和 iOS) 和网络设计的应用程序都属于 Flutter 使用范围。人们不能使用它在 tvOS、 Android Auto、 CarOS 和 WatchOS 上同时出现。然而,在 Kotlin Multiplatform 的情况下,就不存在这种限制。它的目的是为移动设备和平台以外的设备开发应用程序项目。因此,对于移动应用开发服务公司来说,选择 Kotlin Multiplatform 是一个更好的选择,因为他们可以在任何想涉足的平台和设备上推出他们的应用。根据 StackShare 社区,Kotlin 编程语言被 268 家公司和 210 个开发者提到,而 Flutter 只被 42 家公司和 146 个开发者列为技术栈。现在,因为 Kotlin Multiplatform 不是一个独立的平台。这是一种原生语言基础上的试验性扩展,你可以在 Kotlin 的原生环境中使用它,这就给人留下了有更多工作机会的印象。与 Flutter 相比, Kotlin Multiplatform 仍然比较新,实际上还处于试验阶段。因此,后者的文档和社区支持在某种程度上落后于前者。但是,一旦跨平台的功能稳定,文档和社区实力将得到改善,届时更多人将会选择 Kotlin 进行跨平台开发。
Kotlin Multiplatform 和 Flutter 都很可靠,它们的目的都是为了缩短在 Android 和 iOS 平台上应用开发的周期。它们都得到了 Google 的支持。它们相互之间进行着激烈的竞争,并且每次发行都变得越来越有竞争力。在这种情况下,最明智的做法是咨询移动领域的专家,分析你的跨平台应用的需求和优先级,以确定 Kotlin 和 Flutter 哪个更适合你。原文:https://medium.com/@jackpatelsa/kotlin-vs-flutter-who-will-rule-the-cross-platform-app-market-6d1d69cad894译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。《原力计划【第二季】- 学习力挑战》
正式开始
即日起至 3月21日
千万流量支持原创作者
更有专属【勋章】等你来挑战
☞Java 老矣,尚能饭否?2020 Java 生态系统报告出炉
☞Spark大数据分布式机器学习处理实战 | 博文精选
☞深耕技术,与实践赛跑:一文告诉你如何稳妥快速完善区块链技术并有序推动商用?