Advertisement

Kotlin vs Flutter,我到底应该怎么选,顺利收获Offer

阅读量:

本篇文章的英文原文地址是:

goobar.io/2019/06/13/…

我到底应该选 Kotlin 还是学 Flutter 呢?


这个问题要视情况而定。

然而,在对具体情况展开讨论之前,我们更值得我们首先审视的是这个问题是否合适?因为,在将Kotlin与Flutter进行比较的过程中(如同将苹果与橘子相提并论),其局限性就暴露无遗了。

在概念上而言,Kotlin 作为一种面向对象的编程语言被广泛使用;而 Flutter 则是一个专门设计用于构建跨平台应用程序的应用界面工具包。

不过,在这两门技术间的显著区别归因于这一问题是规模宏大的原因。为了全面解答这一问题,在此之前我们需要深入了解一些相关联的问题。

为什么你想要学习 Kotlin 或 Flutter?


第一步,你首先要问自己核心问题在于:「为什么选择学习Kotlin或Flutter?掌握后可用于解决哪些实际问题?」进而深入探讨这一问题可具体分为三个关键方向。

你想要学习移动开发吗?

你想要得到一份移动开发者的工作吗?

你想要以个人开发者或小型团队来开发一款自己的移动产品吗?

你想要学习移动开发吗?


如果将主要方向定为移动开发领域,并且具备一定的实践经验(如个人项目),那么选择Kotlin还是Flutter并不会表现出明显的偏好或优势。

如果将主要方向定为移动开发领域,并且具备一定的实践经验(如个人项目),那么选择Kotlin还是Flutter其实没有明显的偏好或优势。

然而,需特别注意的是,当我们面临选择Flutter还是Kotlin时,本质上是在做出权衡。

Flutter/Dart

iOS/Swift/Objective-C

Android/Kotlin/Java

Flutter 作为一个功能齐全的应用开发平台,在其生态系统中整合了 Dart 作为程序设计语言的基础,并提供了丰富且专业的用户界面组件库。此外它还具备独特的编程范式独特的编程范式独特编程范式以及系统化的最佳实践指导原则其中还包括系统化的问题排查策略和详细的操作流程指南这些特色功能共同构成了 Flutter 的完整生态体系

为了将 Flutter 和其他平台工具进行横向对比分析,在这一步骤完成后你需要深入理解它们在行业中的发展生态。

Kotlin 和 Flutter 哪个更容易获得一份工作?


为了实现成为成为移动开发专业人士的目标, 最好考察哪些技术的市场需求更为旺盛

通过LinkedIn平台搜索与Kotlin及Flutter相关的职位信息(限定数据区域为美国)

Flutter:315 份结果

Kotlin: 3342 份结果

可以说Flutter可以说是一个新兴的技术领域,并且对于一名移动开发人员而言,其学习门槛确实较高.相比之下,Kotlin相比而言则非常友好地适用于Android开发者.也正因为如此, Flutter在就业市场上的人才缺口数量明显减少.

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

在你所在的地区,想要找一份 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 和 Kotlin 这样的组合模式;即使采用 Android 和 Java 作为技术基础的组合方案,在相当长的时间段内依然能够发挥其完美的效能。然而尽管如此……但学习 Kotlin 将能带来更为丰富的编程体验。

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


同样地,在你追求打造一部卓越的iOS应用的过程中,并希望充分运用平台上所提供的各项前沿特性时

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


如果你正在开发一款能够同时运行在移动双平台上的应用,在选择使用Kotlin还是Flutter时会遇到三种不同的选项具体情况则由项目需求决定。

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

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

开发一个 Flutter 应用。

采用基于原生开发的方式意味着你在两个平台上分别进行实现而无需代码交互。作为个人开发者来说,则面临着一种可能极为低效的选择。只有当你深入掌握这两种移动平台的原生开发技术时才有可能做到这一点。然而这也是一种非常安全的选择。由于苹果公司和谷歌始终无法割舍对移动平台 originals的支持,并且能够迅速应用各种平台的新特性以提升用户体验。

如果你分别开发两个原生应用程序,并希望最大限度地共享两者的代码,则构建一个Kotlin多平台项目是个不错的选择。然而对于缺乏经验的开发者来说这可能不是一个理想的选择。目前针对Kotlin生态的支持尚不完善,并且可依赖的工具和服务相对较少。

而创建一个 Flutter 应用则是让你的应用能够在 iOS 和 Android 平台上运行得最快的主要途径之一。特别适合个人开发者使用 Flutter 时会显著减少开发所需的时间和精力。此外由于你无需深入接触系统的底层 API 也不必过分在意不同平台之间的视觉呈现与用户体验差异因此在一定程度上能够简化相关工作流程并节省大量时间与资源。通过这种方式你可以更加专注于应用程序的核心功能而不必过多关注细节层面的技术实现从而避免不必要的复杂性与干扰因素。

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


Flutter 团队不仅局限于将功能仅限于移动平台之上,并进一步拓展至网页平台范畴内;这一功能目前仍处于开发阶段。 Flutter 为我们提供了极大的便利性:即通过一套代码实现应用程序在不同平台上运行的可能性;随着 Flutter 对更多平台的支持普及开来,其应用的性价比将会不断提升。

当然还可以考虑采用Kotlin多平台项目来支撑网页开发工作。然而始终需要记住,在这种架构下核心理念在于实现代码共用。因此无论你选择哪个路径,在为各个平台分别编写对应的原生代码时都需确保能够调用共享代码库以达到协同效果。需要注意的是,在支持更多的平台时成本将会显著增加

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


尾声

评论里有些同学存在疑问关于如何掌握material design控件;我的建议是访问GitHub获取大量同行提供的实例作为参考材料,并且这些例子足以帮助入门。

有人认为如果要深入学习相关技术,则需掌握NDK、JVM等相关知识。《官方指南》上也有详细的说明。按照官方发布的教程一步步操作即可掌握其基本原理与实现细节。对于有一定编程基础的人来说,深入理解原生与Java线程交互确实是一项挑战。但一般情况下我们不建议过多使用。就个人经验而言,在游戏开发中应用过一次。结合笔者以往的工作经验,在音视频通信领域应用过一次,在离线信号处理项目中也用到过一次(该SO包调用)。而其他领域则主要应用于游戏开发方面了。互联网公司内部通常会提供现成的SO包供相关人员使用。至于JVM这部分知识相信你已经掌握了?不该你掌握的内容可以交给专门研究JVM的研究人员来完成吧!如果有空闲时间不妨阅读一下《计算机系统导论》或者《编译原理》,这对理解现代处理器运行机制大有裨益

作为程序员的基本素养之一便是坚持练习与积累,在有限的时间内尽可能挤出时间来阅读相关的理论书籍。JVM并非唯一的技术在未来三十年内将继续发展下去,在IT行业领域中Java也不会是长期主导的语言。除此之外还有其他多种技术将会如雨后春笋般涌现出来。然而只要具备扎实的理论基础你很快就能理解和掌握一门新的技术或者框架。通过持续编写代码你可以快速提升自己运用新知识的能力。
作为新手的学习者来说

CodeChina开源平台提供《Android学习笔记与实践》、《移动开发技术视频课程》、《企业面试真题集》及《唐宇迪源码解析与实战演练》等多维度教学资源。

全部评论 (0)

还没有任何评论哟~