Kotlin vs Flutter,我到底应该怎么选?

在 LinkedIn 上搜索与 Kotlin 和 Flutter 相关的工作岗位,得到的结果如下(数据限定在美国区域,时间截止到 2019 年 6 月):

  • Flutter:315 份结果

  • Kotlin: 3342 份结果

Flutter 毕竟还是一门比较新的技术,并且它对于一位移动开发者而言,学习成本是比较巨大的。相比之下,Kotlin 对于 Android 开发者而言则非常容易上手。可能也是因为这些原因,Flutter 的工作岗位相对少了许多。

而工作岗位数量上的差别,可能同时意味着这两件事情:

  1. 在你所在的地区,想要找一份 Flutter 相关的工作会相对比较困难。

  2. 如果你对 Flutter 已经有了足够多的了解,将更容易在一些对 Flutter 需求量比较高的地区获得一份工作。

这看上去有一些自相矛盾,并且这个方案的可实施性还要视你目前的生活状况、找工作的紧急程度等条件因素而定。

而从另一方面来看,现在仍然有大量的需求招聘 Android 原生开发者,并且 Kotlin 对于更多人来说也是更加简单易学的。当然,大量的工作岗位意味着将会有更多的选择机会,同时也意味着会有更多的竞争者。

Kotlin 和 Flutter 哪个更适合个人或小型团队来开发产品?


如果你是想要使用 Kotlin 或 Flutter 来开发一款自己的应用程序,并投入商业运作,那么刚才所讨论的那些你可以全部忘记,我们来重新思考一张更加完整的版图。

如果你正在开发一款移动产品,那么你非常有可能希望它能够同时运行在 iOS 和 Android 这两大平台上。

使用 Flutter 你可以轻松做到这一点,而使用 Kotlin 则非常困难。

如果你想使用 Kotlin 来进行跨平台开发,可以构建一个 Kotlin 多平台项目,也可以分别单独开发一套 iOS 和 Android 的项目工程,但是不管使用哪种方式,你都必须同时对 iOS 和 Android 的原生开发有足够多的了解才行。

所以,如果你的目标非常明确,就是要以低成本的方式开发一款跨平台应用程序,那么 Flutter 无疑是更加合适的选择。我们稍后会针对这一点进行更加详细的讨论。

关于这个问题,也可以更加详细地将它展开成以下 5 点:

  • 你想要开发一款出色的 Android 应用吗?

  • 你想要开发一款出色的 iOS 应用吗?

  • 你想要开发一款可以同时运行在 iOS 和 Android 平台上的应用吗?

  • 你希望你的应用程序不仅仅运行在移动平台吗?

  • 你需要自己来编写后台服务器程序吗?

你想要开发一款出色的 Android 应用吗?


如果你的目标是开发一款出色的 Android 应用,并且使用 Android 平台提供给我们的各种最新特性,那么请选择原生 Android 开发。

当然,这并不意味着你就必须要使用 Android+Kotlin 的组合模式,Android+Java 的组合在未来很长一段时间内仍然是可以完美工作的。不过,我坚信学习 Kotlin 能够让你更加享受代码的开发过程。

你想要开发一款出色的 iOS 应用吗?


类似地,如果你的目标是开发一款出色的 iOS 应用,并且使用平台提供的各种最新特性,那么我的建议是使用 Swift 语言来进行原生 iOS 开发。

你想要开发一款可以同时运行在 iOS 和 Android 平台上的应用吗?


如果你想要开发的是一款能够同时运行在移动双平台的应用程序,这个问题就变得有趣了,因为在 Kotlin 和 Flutter 的选择上面你将会有 3 种选项:

  1. Android 和 iOS 应用都使用原生的开发方式。

  2. 开发两个原生应用程序,但使用 Kotlin 多平台项目来共享代码。

  3. 开发一个 Flutter 应用。

同时使用原生开发的方式要求你或你的团队在双平台之间各自实现,且没有任何代码共享。如果你是位个人开发者,这可能会是最为低效的一种选项,除非你对 iOS 和 Android 的原生开发都非常精通。但同时这也会是最为安全的一种选项,因为原生开发是最成熟的一种开发方式,不管苹果还是 Google,未来都不可能放弃对原生开发的支持,并且你还能尽快使用到各种平台的最新特性。

而如果你想开发两个原生的应用程序,但是要尽可能多地共享两个平台之间的代码,那么可以考虑构建一个 Kotlin 多平台项目。不过这对于缺少经验的开发者而言应该不是最佳的选项,因为 Kotlin 多平台功能还很新,能够使用的工具和第三方库也非常少。

而开发一个 Flutter 应用应该是让你的应用程序能够同时运行到 iOS 和 Android 平台上最快速的方式了,尤其当你是一位个人开发者,使用 Flutter 将可以节省大量的开发时间。另外,由于你并不需要接触多少系统底层的 API,也不用在乎不同平台之间的视觉体验和用户体验差异,因此可以省去很多编写平台专属优化代码的时间。

你希望你的应用程序不仅仅运行在移动平台吗?


Flutter 团队并没有仅仅只是把功能限定在了移动平台上,而是将它进一步延伸到了网页平台,当然这个功能目前还在开发当中。Flutter 给我们提供的便利性就是可以使用同一份代码来让应用程序运行到不同的平台上面,而且随着 Flutter 支持的平台越多,使用 Flutter 的性价比就会越高。

当然你也可以考虑使用 Kotlin 多平台项目来支持网页平台的开发,但是始终要记得,Kotlin 多平台项目的核心思路是共享代码,因此你还是要为每个平台去编写原生的代码,比如开发 UI 界面,以及对共享代码进行调用等。注意,随着你要支持的平台越多,这种方案的成本也会越大。

你需要自己来编写后台服务器程序吗?


另外可能还有一种比较少见的场景,你需要自己来编写后台服务器程序吗?一般的公司都会有专门的服务器人员来开发后台服务器程序,而如果你需要自己来编写服务器程序的话,Kotlin 是值得进行研究的,因为借助 Ktor 框架可以轻松实现服务器端程序的编写,而掌握 Kotlin 语言则是使用 Ktor 框架的前提条件。

关于到底是选择 Kotlin 还是 Flutter,我们还需要将一个重要的因素考虑在内,就是你当前的开发经验以及技术能力在什么层次。这里讨论以下两种可能:

  • 你已经是一名 Android 开发者了?

  • 你已经是一名 iOS 开发者了?

你已经是一名 Android 开发者了?


如果你已经非常熟悉 Android 原生开发了,学习 Kotlin 将会比学习 Flutter 快上许多倍。Kotlin 会在你当前已掌握的知识基础上迭代累加,并且能让你的 Android 程序开发变得更有效率。

另外,学习 Kotlin 还可以让你拥有开发后台服务器程序的能力,只需要借助 Ktor 框架就能快速地开发出一个简单的后台服务器程序,从而让你的工作流程变得更加简单。

而学习 Flutter 则需要你去掌握一门新的语言(Dart),并且还要去了解一个全新的开发生态,这将需要花费比学习 Kotlin 多上许多倍的时间。

如果你并不是想要享受 Flutter 跨平台特性所带来的便利性,仅仅使用 Flutter 来开发 Android 平台专属的应用程序是一件没有意义的事情。

你已经是一名 iOS 开发者了?


而如果你是一名 iOS 开发者,现在想要了解应该学习 Flutter 还是 Kotlin,情况就有点不同了。

如果你希望继续使用原生的方式来开发 iOS 程序,不管 Kotlin 还是 Flutter 其实都起不到什么太大的作用。不过 Kotlin 至少可以给你提供一种编写后台服务器程序的能力。

而如果你想要开发跨平台的应用程序,那么就需要在 Kotlin 多平台项目和 Flutter 之间做选择了。

正如前面所讨论的,Flutter 是将一套独立的开发流程应用到了两个移动平台上面,而 Kotlin 多平台项目则需要你对 Kotlin 和每个平台的原生开发都有一定的了解才行。

所以在这种情况下,不论如何你都必须学习一门新语言(Dart 或 Kotlin),以及一套新的开发框架(Flutter 或 Android)。

你考虑过选择 Kotlin 或 Flutter 的风险吗?


每当你准备学习一项新技术时,都会伴随着一定的风险。在 Kotlin 和 Flutter 的选择上面,有一些风险是值得考虑的。

Kotlin 已经是一门相当稳定的技术,并且支持 Android 平台开发已经有超过两年的时间了。它可以和现有的 Android 工程代码完全兼容,是一种风险非常低的方案,基本不会影响到你当前项目的稳定性。

相比较而言,Flutter 则是一门风险相对较高的技术,因为它已经完全脱离了应用程序的原生开发方式。目前使用 Flutter 技术的成功项目案例比较少,对这项技术非常熟悉的开发者也比较少,这在招聘方面会造成一定的难度,可能需要现有的团队都去学习这门新技术才行。

此外,Google 曾经有过在不进行任何通知的情况下就将一个项目停掉的历史,所以有些人或许会担心 Google 未来是否会有可能放弃对 FLutter 或 Kotlin 的支持。

事实上,不管是 Flutter 还是 Kotlin,目前都已经具备一定的规模,Google 在短期内是不太可能放弃这两项技术的,因此不管你的选择是什么,都不必在这一点上担心。

所以,你会学习 Kotlin 还是 Flutter 呢?


看到这里,或许本篇文章在 Kotlin 和 Flutter 的选择上面已经给你带来了一些灵感,但它最终是没有标准答案的。所以如果你想要让我给出一个结论的话,我的回答仍然还是:这要视情况而定。

具体的情况最后再来简单概括一下吧:

如果你想要快速找到一份移动开发者的工作,建议学习 Kotlin 来进行原生的 Android 开发(或 Swift 来进行 iOS 开发)。

如果你想要快速构建自己的跨平台应用,建议尝试 Flutter。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值