Kotlin vs Flutter,我到底应该怎么选?
在移动应用开发领域中,Kotlin和Flutter是两种备受关注的技术,其中Kotlin是由JetBrains开发,后来获得了谷歌的大力支持,而Flutter则是谷歌自身独立开发的一种技术。从谷歌官方的态度看,这两种技术均被广泛看好,谷歌也在它们身上进行了大量的投资与支持,但这也恰恰引起了开发者们的困惑:究竟我应该选择学习Kotlin还是Flutter呢?
我也曾被这个问题困扰过无数次。然而每次回应也只能简短几句,并不能做到全面解答。可能难以深入触及关键点。因此, 我一再
特意打算撰写一篇深入对比 Kotlin 和 Flutter 的文章, 以便更好地解答相关问题
恰巧在偶然间翻阅网页时,我无意中发现了一篇英文文章深入探讨了该问题。通读之后让我意识到自己在这方面的能力有限,于是直接将其译成中文并与大家分享。相信会对大家有所启发。
本篇文章的英文原文地址是:
goobar.io/2019/06/13/…
我到底应该选 Kotlin 还是学 Flutter 呢?
这个问题要视情况而定。
不过,在深入探讨具体的情况之前,我们更应该先来审慎考量一下这个问题是否合理.因为将Kotlin与Flutter进行比较,在某种程度上就好比将其类比于苹果与橘子的比较.
从概念上讲,Kotlin serves as a programming language, while Flutter functions as a cross-platform UI toolkit.
不过因为这两门技术之间存在显著的差别从而使得这一问题是极为复杂的因此为了全面解答这一问题我们需要我们首先深入研究与之相关的其他相关问题
为什么你想要学习 Kotlin 或 Flutter?
当你开始学习时会思考的第一个问题是:"为什么我要学习Kotlin或Flutter?学完之后能做些什么?" 这个问题还可以分为以下三点:
- 你希望提升自己的移动开发技能吗?
- 你希望获得一份移动开发者的职业职位吗?
- 你希望由个人或小型团队组成的开发团队独立拥有或管理并打造属于自己的移动应用项目吗?
你想要学习移动开发吗?
如果你的主要关注点是对移动开发进行深入研究,并且有意愿开发一个简单的个人项目(比如测试或学习应用),那么在选择Kotlin还是Flutter时并不会存在明显的偏好。
然而必须时刻记住,在Flutter和Kotlin这两个开发框架之间做出选择时实际上也面临着同样的抉择
- Flutter/Dart
- iOS/Swift/Objective-C
- Android/Kotlin/Java
Flutter 被认为是一个全面的应用开发平台。它主要以 Dart 作为主要的编程语言,并包含丰富的用户界面组件库。此外,它还提供了独特的开发范式以及优化建议和故障排除策略,并辅以工作流程管理策略。
为了更好地将 Flutter 与其他主流平台的工具集进行全面比较, 您需要对它们各自所处的生态系统有深入的了解才行.
Kotlin 和 Flutter 哪个更容易获得一份工作?
作为寻求一份移动开发工作的从业者而言,在选择适合自己的技术路径时应优先考虑那些市场需求量较高且应用前景广阔的技能
通过LinkedIn平台进行搜索以获取与Kotlin及Flutter相关的职业机会,在仅限于美国地区的情况下,并发至2019年6月。
- Flutter:315 份结果
- Kotlin: 3342 份结果
可以说 Flutter 确实是一个相对较新的技术领域,并且从学习成本方面来看,这对一位移动开发人员来说确实是一个不小的挑战。相对而言,在 Android 开发领域使用 Kotlin 则显得异常直观且易于掌握。考虑到这些因素的影响,在就业市场上 flutter 的相关职位数量似乎并没有像预期中那么充足。
而工作岗位数量上的差别,可能同时意味着这两件事情:
- 在你的地区取得Flutter相关工作的难度较高。
- 对于那些希望深入了解Flutter技术的应用领域而言,在需求较高的地方找到工作机会会更加容易。
这种现象存在一定的逻辑冲突,并且该方案是否可行主要取决于当前的生活状况以及寻找工作的紧迫感。
而从另一个角度来看,在当前阶段仍然存在相当数量的需求正在寻求 Android 原生开发人才;此外,由于Kotlin对于更多人而言也更加简单易学,这也是一种优势所在.然而,众多的工作岗位提供了更多选择机会,但也意味着会有更多的竞争者.
Kotlin 和 Flutter 哪个更适合个人或小型团队来开发产品?
如果你打算使用Kotlin或Flutter来开发一个个人应用并进入商业运营的话,那么之前提到的所有内容都可以完全抛弃。让我们开始一个新的规划吧。
如果你正在开发一款移动应用,那么你很可能期望它能在这两个主要的操作系统平台之间顺利运行。
使用 Flutter 你可以轻松做到这一点,而使用 Kotlin 则非常困难。
为了实现Kotlin跨平台应用的开发目标, 你可以选择构建一个基于Kotlin的多平台应用框架, 或者可以独立研发专门针对iOS系统和Android系统的完整应用方案, 但无论采取哪种方法, 都要求具备深入掌握iOS原生开发技术和Android原生技术的能力。
鉴于此, 如果你的目标非常明确, 即是要以低成本的方式开发一款跨平台应用程序, 那么 Flutter无疑是一个选择方案更为合适的选择. 在稍后的时间里, 我们将对这一问题进行深入探讨.
关于这个问题,也可以更加详细地将它展开成以下 5 点:
- 你有兴趣编写一部高质量的 Android 应用程序吗?
- 你想制作一部高质量的 iOS 程序吗?
- 你希望创建一个能够在多种移动设备上运行的跨平台应用吗?
- 你的应用程序是否仅限于移动设备?
- 你需要自行搭建后台服务器系统吗?
你想要开发一款出色的 Android 应用吗?
建议为了打造一款优秀的小程序应用,并充分利用我们所拥有的最新功能组件,请采用原生 Android 开发方案。
然而,并非意味着你必须采用 Android+Kotlin 这一模式组合;长远来看,在未来相当长的一段时间内,Android+Java 的组合依然能够完美运行。尽管如此,请相信学习 Kotlin 将能让你在代码开发过程中获得更大的乐趣。
你想要开发一款出色的 iOS 应用吗?
同样地,在你希望打造一部性能卓越的iOS应用并充分运用平台提供的最新功能特性时
你想要开发一款可以同时运行在 iOS 和 Android 平台上的应用吗?
如果正在开发的一款能够同时运行在移动双平台的应用程序的话,则问题就会变得非常有趣;当选择使用Kotlin或Flutter时,则会面临3个不同的选项。
- Android及iOS应用均以 native开发技术为基础设计。
- 采用Kotlin进行多平台开发,并将代码进行整合共享。
- 基于Flutter构建移动应用系统。
采用原生开发的方式要求你或你的团队分别在两个平台上独立实现,并且没有任何代码交互。如果你是一位个人开发者,则这种做法可能效率低下(除非你对iOS和Android的原生开发有深入的理解)。然而这也是一种非常安全的选择(因为它是当前最为成熟的技术路线之一),不管从苹果还是谷歌的角度来看都不可能放弃这一技术路线,并且你可以迅速享受到各种平台最新特性的好处)。
如果你想要开发两个原生的应用程序,并希望最大限度地共享两套平台之间的代码资源,则可以考虑搭建一个基于Kotlin的多平台项目。然而对于缺乏经验的开发者而言这并非最佳选择因为目前Kotlin跨平台技术仍处于初级阶段相关的工具和服务较为匮乏。
而构建一个 Flutter 应用则可被视为最快捷的方式——它不仅能在 iOS 和 Android 平台上无缝运行,并且特别适合个人开发者。利用 Flutter 你不仅能够显著缩短开发周期——而且无需深入处理复杂的底层API问题——还无需关心不同平台在视觉呈现和用户体验上的细微差别。
你希望你的应用程序不仅仅运行在移动平台吗?
Flutter 团队并未仅局限于将功能局限于移动平台,并未完全排斥其他领域的发展;而是将其扩展到了网页平台这一全新方向,在这一过程中仍处于不断完善之中。通过单一代码实现应用程序在多个平台上运行这一显著优势使得Flutter 成为了跨平台开发的理想选择;而随着支持的不断扩展这一优势也将持续增强其性价比。
随着支持的平台不断增加 Flutter 的性价比也会不断提升使其成为越加划算的选择
当然你可以考虑采用 Kotlin 多平台技术来开发适用于网页的应用 但必须记住其核心理念在于实现代码共用 因此必须分别针对每个 platform 编写相应的原生代码 如构建用户界面界面 并调用这些预先编写的共用功能模块等 注意随着 you 支持的 platform 数量增加 费用也会相应提高
你需要自己来编写后台服务器程序吗?
另外可能还有一种相对罕见的情况:你是否需要自行开发后端服务器程序?大多数公司通常会配备专门的技术人员负责开发后端服务器系统。如果有必要自行构建后端系统的话,则学习Kotlin语言是一个值得探索的方向。通过Ktor框架能够较为简便地搭建后端服务系统;而熟练掌握Kotlin编程语言则是使用Ktor框架所必需的基础要求。
关于是选择Kotlin还是Flutter的问题上,我们必须考虑的一个重要因素是你的开发经验和技术水平处于何种水平.接下来探讨这两种可能性.
- 你已经是一名 Android 开发者了?
- 你已经是一名 iOS 开发者了?
你已经是一名 Android 开发者了?
假设你已经熟练掌握了Android原生开发。那么学习Kotlin将相较于Flutter要快得多。Kotlin能够在现有知识基础上不断积累提升,并使你的Android程序开发变得更加高效。
假设你已经熟练掌握了Android原生开发。那么学习Kotlin将相较于Flutter要快得多。Kotlin能够在现有知识基础上不断积累提升,并使你的Android程序开发变得更加高效。
此外掌握Kotlin编程语言可以让开发者获得编写后台服务器程序的能力。通过使用Ktor框架你可以轻松编写一个相对简单的后台服务器程序这将有助于简化你的工作流程
而学习Flutter则要求你需要深入理解一门新生态(Dart),并熟悉其开发环境;此外,相比学习Kotlin所需的时长而言,学习Flutter将涉及更多的时间投入。
不单纯是为了享受Flutter带来的诸多优势,并且仅仅使用它来开发特定于Android的应用程序的话,在这种情况下你的努力将毫无意义。
你已经是一名 iOS 开发者了?
作为一名iOS开发者,在决定是否选择学习Flutter还是Kotlin时会发现具体情况则有所不同。
如果你希望继续采用原生开发方式来开发 iOS 程序的话,那么无论你选择使用 Kotlin 还是 Flutter,在 iOS 开发中它们的作用其实都非常有限。然而,Kotlin 也能够提供一种编写后台服务器程序的能力。
如果目标是构建跨平台的应用程序,则需要在Kotlin多平台项目框架与Flutter框架之间做出选择。
如前所述,在Flutter技术的基础上构建了一个完整的跨平台解决方案,并将其成功运用到了Android和iOS两个主流移动平台上。相比之下,Kotlin多平台项目的实施需要具备扎实的Kotlin语言基础以及对每个目标平台进行原生开发的能力。
在这种情况下,在任何情况下你都必须掌握一门新的编程语言(dart或kotlin),并习得一套现代的跨平台开发框架(Flutter或Android)。
你考虑过选择 Kotlin 或 Flutter 的风险吗?
每次当你开始学习新技术时, 都会伴随着一定的风险. 在选择Kotlin或Flutter时, 有一些值得考虑的风险.
Kotlin 是一门高度可靠的编程语言。自支持Android平台开发以来已逾两年。它能够完美地与现有的Android工程代码无缝集成这种方案的风险极低且对项目稳定性几乎无影响
相较于其他主流移动应用开发框架而言,Flutter 确实是一门具有较高技术风险的技术开发体系。其特点在于不再基于平台原生代码编写应用程序逻辑,在实际应用中面临着项目成功应用案例数量有限以及相关领域的专业人才较为稀缺的问题。这也给技术人才的招聘带来了诸多挑战,在现有团队中推行这一技术标准可能会面临较大的阻力和障碍。
此外,在无需任何通知的情况下Google曾有过 history 将一个项目停掉的历史案例显示。因此有人可能会担忧Google未来是否有可能停止支持Flutter或Kotlin。
事实上,在Flutter和Kotlin之间做出选择之前,请注意无论你选择哪一种技术——无论是Flutter还是Kotlin——Google目前都已发展到了一定规模,并且没有打算放弃这两项技术;因此无需在这点上过多担心。
所以,你会学习 Kotlin 还是 Flutter 呢?
看起来到这里的时候,或许这篇文章在Kotlin与Flutter的选择上确实给了你一些启发,但它最终是没有统一的答案的。所以如果你想要让我给出一个结论的话,我的回答仍然是:具体情况具体分析。
具体的情况最后再来简单概括一下吧:
如果你想迅速获取相关工作的机会, 推荐掌握Kotlin编程技能来专门处理Android设备的应用开发, 另外一种选择则是学习Swift语言来进行iOS设备的应用开发.
如果你想要快速构建自己的跨平台应用,建议尝试 Flutter。
如果您的团队计划开发跨平台应用系统,则可以选择采用Flutter这一技术。此外还可以基于Kotlin实现多平台开发方案。这些方案均为有效的选择,请根据团队规模、组织结构以及项目需求来决定具体选择则需根据团队规模、组织结构以及项目需求来决定。
若你或你的团队希望能够在多个平台上复用一些关键的功能模块的话,值得了解的是Kotlin多平台项目。
最后
为了帮助大家系统性地进行学习和提升自己,我们与几位技术专家共同整理并归纳了**Flutter进阶资料以及Android学习PDF+架构视频+面试文档+源码笔记** 等相关资源包;此外还补充了高级架构技术进阶脑图、Android开发面试专题资料以及高级进阶架构资料等丰富的内容……
这些都是一些我空余时间常读的精品书籍。它们能够起到促进大家掌握知识并深入理解其原理的作用。当然你也可以用它们来查漏补缺和巩固基础并提高自身能力。如需进一步了解相关内容,请访问 GitHub 链接 https://github.com/hunanmaniu/AndroidNotes 获取更多信息。

