文在移动应用开发方面,Kotlin和Flutter是目前两大热门技术。其中,Kotlin由Jetbrains开发,后来得到了谷歌的大力支持,而Flutter则是谷歌自己独立开发的。从目前谷歌官方的态度来看,这两项技术被无限看好,谷歌也对其投入了大量资源。但也正是因为谷歌的态度,让很多开发者变得迷茫:到底是学Kotlin还是学Flutter?这个问题我被问过无数次,但每次的回答都只能简单的回复几句话,不能全面概括,也未必能切入正题。因此,我一直准备写一篇文章,详细比较Kotlin和Flutter,帮助大家答疑解惑。巧合的是,前段时间浏览网页时无意中看到一篇英文文章对这个问题做了深入的分析。看完之后觉得自己写不出比这更好更全面的文章了,所以决定直接写这篇文章。本文翻译分享,相信对大家有所帮助。本文英文原文地址为:https://goobar.io/2019/06/13/kotlin-vs-flutter-are-you-comparing-them-fairly/学Kotlin还是学Flutter?这个问题看情况。但在讨论具体情况之前,我们应该首先考察这个问题是否合适。因为,比较Kotlin和Flutter在某种程度上就像比较苹果和橘子。从概念上讲,Kotlin是一种编程语言,而Flutter是一个跨平台的UI工具集。但是,由于这两种技术的巨大差异,这个问题本身其实就是一个巨大的问题。因此,要想很好地回答这个问题,我们必须先了解其他一些相关的问题。为什么要学习Kotlin或Flutter?首先,你要问自己的第一个问题是:“我为什么要学Kotlin或Flutter?学了之后能做什么?”这个问题可以展开为以下三点:你想学移动开发吗?您想获得一份移动开发人员的工作吗?您想以个人开发人员还是小团队的身份开发自己的移动产品?我们将对这几点一一进行分析。1.你想学移动开发吗?如果你的主要目标是涉足移动开发并能够构建一个小型副项目,那么选择Kotlin或Flutter其实并没有太大的区别。但是,请务必记住,当您在Flutter和Kotlin之间进行选择时,您也在选择:Flutter/DartiOS/Swift/Objective-CAndroid/Kotlin/JavaFlutter是一个完整的应用程序开发工具集,其中包括Dart的使用作为一种编程语言,一系列的UI组件,以及一些独特的编程模式、最佳实践技巧、调试方法、工作流程等。要将Flutter与其他平台工具集进行比较,还需要对Flutter中的生态有一个比较完整的了解。他们所在的位置。2.Kotlin和Flutter哪个更容易就业?如果您的主要目标是找到一份移动开发人员的工作,那么更好的选择方法是查看哪些技能的需求量更大。在LinkedIn上搜索Kotlin和Flutter相关的职位,结果如下(数据仅限于美国,截至2019年6月):Flutter:315个结果Kotlin:3342个结果Flutter毕竟还是一个比较新的学科技术,而对于一个移动开发者来说,学习成本是比较巨大的。相比之下,Kotlin对于Android开发者来说非常好用。也可能是因为这些原因,Flutter的工作比较少。而职位数量的差异可能同时意味着两件事:在你所在的地区找到与Flutter相关的工作会相对困难。如果你对Flutter已经足够了解,在一些对Flutter需求比较高的领域找工作会更容易一些。这似乎有点矛盾,而这个方案的可行性取决于你目前的生活状况、找工作的紧迫程度等条件。另一方面,Android原生开发者的招聘需求仍然很大,Kotlin对更多人来说更容易学习。当然,工作岗位多就意味着会有更多的选择,同时也意味着会有更多的竞争者。3、Kotlin和Flutter哪个更适合个人或者小团队开发产品?如果你想用Kotlin或Flutter开发自己的应用并投入商业运营,那么你可以把刚刚讨论的一切都忘掉。让我们重新考虑一个更完整的地图。如果您正在开发移动产品,您很可能希望它在iOS和Android上运行。使用Flutter可以轻松做到这一点,但使用Kotlin则非常困难。如果想使用Kotlin进行跨平台开发,可以搭建一个Kotlin多平台项目,也可以分别开发一套iOS和Android项目工程,但是无论使用哪种方式,都必须是nativetobothiOS和安卓。发展有足够的认识。因此,如果你的目标非常明确,即以低成本开发跨平台应用,那么Flutter无疑是更合适的选择。稍后我们将对此进行更详细的讨论。你到底想开发什么?关于这个问题,更详细的还可以扩展为以下5点:你想开发一款优秀的Android应用吗?您想开发出色的iOS应用程序吗?您想开发一个可以在iOS和Android平台上运行的应用程序吗?您想让您的应用程序不仅仅在移动平台上运行吗?需要自己写后台服务器程序吗?我们将一一讨论这些问题。1.你想开发一款优秀的Android应用吗?如果你的目标是开发一款优秀的Android应用,使用Android平台提供的最新功能,那么请选择原生Android开发。当然,这并不是说你一定要使用Android+Kotlin的组合模式。Android+Java的组合在未来很长一段时间内依然可以完美运行。但是,我坚信学习Kotlin会让你更加享受代码开发的过程。2.你想开发一款优秀的iOS应用吗?同样,如果你的目标是开发一款优秀的iOS应用,使用平台提供的最新功能,那么我的建议是使用Swift语言NativeiOS开发。3、你想开发一款可以同时运行在iOS和Android平台上的应用吗?如果你想开发一个可以同时在两个移动平台上运行的应用程序,这个问题就变得有趣了,因为在Kotlin和Flutter中,你将有3个选择:Android和iOS应用程序都使用原生开发方式。开发两个本机应用程序,但使用Kotlin多平台项目共享代码。开发一个Flutter应用程序。同时使用原生开发需要您或您的团队在两个平台之间实现,无需任何代码共享。如果您是个人开发人员,这可能是效率最低的选择,除非您精通iOS和Android本机开发。但同时,这也会是最稳妥的选择,因为原生开发是最成熟的开发方式。不管是苹果还是谷歌,以后都不可能放弃对原生开发的支持,可以使用各种平台的最新特性。而如果你想开发两个原生应用程序,但在两个平台之间共享尽可能多的代码,那么可以考虑构建一个Kotlin多平台项目。然而,对于没有经验的开发者来说,这应该不是最好的选择,因为Kotlin的多平台能力还很新,可用的工具和第三方库非常少。而开发一个Flutter应用应该是让你的应用同时运行在iOS和Android平台上最快的方法,尤其是如果你是个人开发者,使用Flutter会节省大量的开发时间。另外,由于不需要接触很多系统底层的API,不需要关心不同平台视觉体验和用户体验的差异,可以节省很多写平台的时间-特定的优化代码。4.你想让你的应用不仅仅运行在移动平台上吗?Flutter团队并没有将功能限制在移动平台,而是扩展到了Web平台。当然,这个功能还在开发中。Flutter为我们提供的便利是我们可以使用相同的代码在不同的平台上运行应用程序,而且Flutter支持的平台越多,使用Flutter就越划算。当然你也可以考虑使用Kotlin多平台项目来支持web平台的开发,但是永远记住Kotlin多平台项目的核心思想是共享代码,所以还是要写每个平台的原生代码,比如开发UI界面,调用共享代码等。注意这个方案的成本会随着你支持的平台越来越多而增加。5、需要自己写后台服务器程序吗?另外,可能还有一种比较少见的场景,需要自己写后台服务器程序吗?一般公司都会有专门的服务端人员开发后台服务端程序,如果你需要自己写服务端程序,Kotlin是值得学习的,因为借助Ktor框架你可以轻松编写服务端程序,而掌握Kotlin语言是使用Ktor框架的前提。您已经是移动开发人员了吗?关于选择Kotlin还是Flutter,我们还需要考虑一个重要的因素,那就是你目前的开发经验和技术能力处于什么水平。此处讨论以下两种可能性:您已经是Android开发人员了吗?你已经是iOS开发者了吗?1.你已经是Android开发者?如果你已经非常熟悉Android原生开发,学习Kotlin会比学习Flutter快很多倍。Kotlin会在你现有知识的基础上不断迭代和积累,让你的Android程序开发更加高效。另外,学习Kotlin还可以让你具备开发后台服务器程序的能力。您只需要使用Ktor框架即可快速开发一个简单的后台服务器程序,让您的工作流程更加轻松。学习Flutter需要你掌握一门新的语言(Dart),了解一个新的开发生态,这比学习Kotlin要多出很多倍的时间。如果不想享受Flutter跨平台特性带来的便利,仅仅使用Flutter开发Android平台特定应用是没有意义的。2.你已经是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技术的成功项目案例比较少,对这项技术非常熟悉的开发者也比较少。这会给招聘带来一定的困难,现有团队可能需要学习这项新技术。此外,谷歌有在没有任何通知的情况下停止项目的历史,因此有人可能会担心谷歌未来是否会放弃对Flutter或Kotlin的支持。事实上,Flutter和Kotlin目前都具有一定的规模,谷歌短期内不太可能放弃这两项技术,所以无论你的选择是什么,都不用担心这个。那么,你会学习Kotlin还是Flutter?看到这里,或许这篇文章给你在Kotlin和Flutter的选择上带来了一些启发,但它终究没有标准答案。所以如果你要我给出结论,我的回答依然是:看情况。最后简单总结一下具体情况:如果想快速找到一份移动开发的工作,Android原生开发推荐学习Kotlin(iOS开发推荐学习Swift)。如果你想快速搭建自己的跨平台应用,推荐试试Flutter。如果您的团队想要构建跨平台应用程序,请考虑使用Flutter、原生开发和Kotlin多平台项目。这三个选项都是可能的,具体取决于您的团队的规模和结构以及项目本身。如果你或你的团队想在多个平台上复用一些重要的功能逻辑,建议了解Kotlin多平台项目。本文转载自微信公众号“果林”,可通过以下二维码关注。转载本文请联系郭琳公众号。
