郭霖的建议:Kotlin-vs-Flutter,我到底应该怎么选

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种选项:

Android和iOS应用都使用原生的开发方式。
开发两个原生应用程序,但使用Kotlin多平台项目来共享代码。
开发一个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。

如果你们的团队想要构建跨平台应用,可以考虑使用Flutter,原生开发,以及Kotlin多平台项目。这三种选项其实都是可行的,具体的选择要取决于你们团队的规模、结构、以及项目本身。

如果你或你们团队想要将一些重要的功能逻辑在多个平台上面重用的话,建议了解一下Kotlin多平台项目。

不管是学习Kotlin 还是Flutter,我这里都有一套完备的资料,需要的小伙伴们点击链接自取《Android架构视频+BATJ面试专题PDF+学习笔记》 帮助你更好地学习,由此做出更好的选择。

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

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

Android进阶资料

以下的资料是近年来,我和一些朋友面试收集整理了很多大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料。希望可以帮助到大家。

Android进阶核心笔记

百万年薪必刷面试题

最全Android进阶学习视频

droid进阶核心笔记**

[外链图片转存中…(img-wkOLVIy7-1712037392876)]

百万年薪必刷面试题

[外链图片转存中…(img-TSkUnAsa-1712037392876)]

最全Android进阶学习视频

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值