来 DTDS 全球数字人才发展峰会,与刘润、叶军、快刀青衣畅聊成长>> 了解详情
写点什么

Kotlin vs Flutter:谁将成为跨平台开发市场的最终统治者?

2020 年 2 月 27 日

Kotlin vs Flutter:谁将成为跨平台开发市场的最终统治者?

我们在早些时候已经对比过 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 究竟哪种选择才是更合适的。


延伸阅读


https://appinventiv.com/blog/kotlin-vs-flutter-cross-platform-app-development/


2020 年 2 月 27 日 03:003828

评论

发布
暂无评论
发现更多内容

聆听极致 ——声网 Agora

cv君

算法 音视频 科技 声网 能力

本文标题不能描述本文内容

小天同学

读书 哲学 读后感 4月日更

2021年十大突破性技术

石云升

读书笔记 5月日更

技术探索系列 - 轻松带你掌握 JMM(1)

李浩宇/Alex

Java JVM JMM 并发 5月日更

【LeetCode】员工的重要性Java题解

HQ数字卡

算法 LeetCode 5月日更

阿里内部资料居然在GitHub爆火,面试如虎添翼

神奇小汤圆

Java 程序员 架构 面试 计算机

SpringCloud-技术专题-Feign组件基本使用(2)

李浩宇/Alex

springmvc SpringCloud Hystrix Fegin

万字长文讲述我是怎样保送清华的|寒门学子的奋斗史(四)

石头

程序员 码农 逆袭 大学总结 读书总结

当代软件IT大学生的技术学习之路

Nydia

签约计划

【得物技术】网络优化——域名解析原理&实践

得物技术

网络 域名解析 域名 得物技术 实践

2021零食品类全渠道研究报告; 新华社调查音乐App诱导重复消费,qq音乐、网易云音乐、酷狗音乐被点名

󠀛Ferry

四月日更

又一个免费良心的下载站,答应我:别再下到流氓软件了。

彭宏豪95

ios 效率 工具 下载 4月日更

面试:某云面试题目整理

程序员架构进阶

Java 面试 自我提升 28天写作 4月日更

手机屏幕投屏到桌面的离线方案

黄敏

已跪!Java全能笔记爆火,Java教程/Java包/Eclipse安装指南全有

牛哄哄的java大师

Java

对于即将工作的IT大学生,该如何变强?

cv君

程序人生 IT 科技 问卷 有意义

将本地文件/文章上传到 GitHub 的流程

彭宏豪95

git GitHub 效率 编程

2021 高校 IT 专业大学生就业意向调查

清秋

签约计划 问卷调查 行业分析能力考核

了解代理服务器

进击的梦清

nginx Linux 运维 代理原理

从品牌投放策略新逻辑,看户外广告成为投放首选原因

󠀛Ferry

5月日更

【算法训练营】C++学前班--如何在Windows上搭建开发环境

IT蜗壳-Tango

IT蜗壳教学 5月日更 C++环境搭建

高校软件IT专业大学生课外培训调查问卷

穿过生命散发芬芳

行业分析能力考核

IT 专业大学生被培训机构“渗透”情况调查

梦想橡皮擦

签约计划

北美亚特兰大一金融服务公司面试总结

HoneyMoose

不懂就看!P7大牛珍藏的Java反射详解笔记,从入门到实践太香了

java专业爱好者

Java

fastadmin+xunsearch题库系统搭建教程

一颗小树

php thinkphp fastadmin xunsearch 题库系统

A “word-wrap” functionality(一个字符串包裹函数)

HoneyMoose

网络攻防学习笔记Day1

穿过生命散发芬芳

5月日更 网络攻防

清华教授说:这不是我教的Java运算符知识。学生:反正我学会了!

java专业爱好者

Java

这是我在金三银四收到的第五个offer,美团Java岗(附面经)

神奇小汤圆

Java 程序员 架构 面试

InfoQ & 声网Agora 技术开放日邀请函

Jessie

音视频 声网

「中国技术开放日·长沙站」现场直播

「中国技术开放日·长沙站」现场直播

Kotlin vs Flutter:谁将成为跨平台开发市场的最终统治者?-InfoQ