偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Kotlin vs Flutter,我到底應(yīng)該怎么選?

開(kāi)發(fā) 開(kāi)發(fā)工具
在移動(dòng)應(yīng)用開(kāi)發(fā)方面,Kotlin和Flutter是目前比較火熱的兩門(mén)技術(shù)。其中,Kotlin是由Jetbrains研發(fā),后被Google大力扶持,F(xiàn)lutter則是由Google自己獨(dú)立研發(fā)的。

 [[342166]]

正文 

在移動(dòng)應(yīng)用開(kāi)發(fā)方面,Kotlin和Flutter是目前比較火熱的兩門(mén)技術(shù)。其中,Kotlin是由Jetbrains研發(fā),后被Google大力扶持,F(xiàn)lutter則是由Google自己獨(dú)立研發(fā)的。從目前Google官方的態(tài)度來(lái)看,這兩門(mén)技術(shù)都被無(wú)限看好,Google也是在它們身上投入了大量的資源。但也正是由于Google的這種態(tài)度,導(dǎo)致很多開(kāi)發(fā)者變得迷茫了:我到底是應(yīng)該學(xué)習(xí)Kotlin還是Flutter呢?

關(guān)于這個(gè)問(wèn)題,我也是被問(wèn)了無(wú)數(shù)次,但每次回答都只能簡(jiǎn)單回復(fù)幾句,無(wú)法全面概括,可能也做不到直至要害。因此一直以來(lái),我都準(zhǔn)備專門(mén)寫(xiě)一篇文章來(lái)詳細(xì)對(duì)比Kotlin和Flutter,幫助大家答疑解惑。

巧合的是,前段時(shí)間瀏覽網(wǎng)頁(yè),無(wú)意看到了一篇英文文章專門(mén)對(duì)這個(gè)問(wèn)題進(jìn)行了深度分析,我閱讀完之后深感自己寫(xiě)不出比這更好更全面的文章了,因此決定直接將這篇文章翻譯并分享出來(lái),相信一定會(huì)對(duì)大家有所幫助。

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

https://goobar.io/2019/06/13/kotlin-vs-flutter-are-you-comparing-them-fairly/

我到底應(yīng)該學(xué)Kotlin還是Flutter呢? 

這個(gè)問(wèn)題要視情況而定。

不過(guò)在展開(kāi)討論具體的情況之前,我們更應(yīng)該先來(lái)審視一下,這是否是一個(gè)恰當(dāng)?shù)膯?wèn)題。因?yàn)椋肒otlin和Flutter來(lái)進(jìn)行比較,在一定程度上就好像是在拿蘋(píng)果和橘子來(lái)進(jìn)行比較。

從概念上講,Kotlin是一門(mén)編程語(yǔ)言,而Flutter是一個(gè)跨平臺(tái)的UI工具集。

不過(guò),由于這兩門(mén)技術(shù)之間的差異太過(guò)巨大,導(dǎo)致這個(gè)問(wèn)題本身其實(shí)就是一個(gè)龐大的問(wèn)題,因此要想很好地回答這個(gè)問(wèn)題,我們必須得要先去了解一些其他相關(guān)的問(wèn)題。

為什么你想要學(xué)習(xí)Kotlin或Flutter?

首先,你要問(wèn)自己的第一個(gè)問(wèn)題就是:“我為什么要學(xué)習(xí)Kotlin或Flutter?學(xué)會(huì)之后可以用來(lái)做什么?” 這個(gè)問(wèn)題又可以展開(kāi)為以下3點(diǎn):

  • 你想要學(xué)習(xí)移動(dòng)開(kāi)發(fā)嗎?
  • 你想要得到一份移動(dòng)開(kāi)發(fā)者的工作嗎?
  • 你想要以個(gè)人開(kāi)發(fā)者或小型團(tuán)隊(duì)來(lái)開(kāi)發(fā)一款自己的移動(dòng)產(chǎn)品嗎?

關(guān)于這幾點(diǎn)我們逐個(gè)來(lái)進(jìn)行分析。

1. 你想要學(xué)習(xí)移動(dòng)開(kāi)發(fā)嗎?

如果你的首要目標(biāo)是對(duì)移動(dòng)開(kāi)發(fā)有所涉獵,并且能夠構(gòu)建出一個(gè)小型的業(yè)余項(xiàng)目,那么選擇Kotlin還是Flutter其實(shí)是沒(méi)有什么太大區(qū)別的。

然而,需要謹(jǐn)記的是,當(dāng)你在Flutter和Kotlin之間做選擇的時(shí)候,其實(shí)你也是在選擇:

  • Flutter/Dart
  • iOS/Swift/Objective-C
  • Android/Kotlin/Java

Flutter是一個(gè)完整的應(yīng)用開(kāi)發(fā)工具集,其中包括了使用Dart來(lái)作為編程語(yǔ)言,以及一系列的UI組件,還有一些獨(dú)有的編程模式、最佳實(shí)踐技巧、調(diào)試方法、工作流程等。

要想將Flutter和其他的平臺(tái)工具集進(jìn)行對(duì)比,你還需要對(duì)它們所處的生態(tài)有比較完整的了解才行。

2. Kotlin和Flutter哪個(gè)更容易獲得一份工作?

如果你的首要目標(biāo)是得到一份移動(dòng)開(kāi)發(fā)者的工作,那么比較好的一種選擇方式就是看哪種技能的需求量更高一些。

在LinkedIn上搜索與Kotlin和Flutter相關(guān)的工作崗位,得到的結(jié)果如下(數(shù)據(jù)限定在美國(guó)區(qū)域,時(shí)間截止到2019年6月):

  • Flutter:315份結(jié)果
  • Kotlin:3342份結(jié)果

Flutter畢竟還是一門(mén)比較新的技術(shù),并且它對(duì)于一位移動(dòng)開(kāi)發(fā)者而言,學(xué)習(xí)成本是比較巨大的。相比之下,Kotlin對(duì)于Android開(kāi)發(fā)者而言則非常容易上手??赡芤彩且?yàn)檫@些原因,F(xiàn)lutter的工作崗位相對(duì)少了許多。

而工作崗位數(shù)量上的差別,可能同時(shí)意味著這兩件事情:

在你所在的地區(qū),想要找一份Flutter相關(guān)的工作會(huì)相對(duì)比較困難。

如果你對(duì)Flutter已經(jīng)有了足夠多的了解,將更容易在一些對(duì)Flutter需求量比較高的地區(qū)獲得一份工作。

這看上去有一些自相矛盾,并且這個(gè)方案的可實(shí)施性還要視你目前的生活狀況、找工作的緊急程度等條件因素而定。

而從另一方面來(lái)看,現(xiàn)在仍然有大量的需求招聘Android原生開(kāi)發(fā)者,并且Kotlin對(duì)于更多人來(lái)說(shuō)也是更加簡(jiǎn)單易學(xué)的。當(dāng)然,大量的工作崗位意味著將會(huì)有更多的選擇機(jī)會(huì),同時(shí)也意味著會(huì)有更多的競(jìng)爭(zhēng)者。

3. Kotlin和Flutter哪個(gè)更適合個(gè)人或小型團(tuán)隊(duì)來(lái)開(kāi)發(fā)產(chǎn)品?

如果你是想要使用Kotlin或Flutter來(lái)開(kāi)發(fā)一款自己的應(yīng)用程序,并投入商業(yè)運(yùn)作,那么剛才所討論的那些你可以全部忘記,我們來(lái)重新思考一張更加完整的版圖。

如果你正在開(kāi)發(fā)一款移動(dòng)產(chǎn)品,那么你非常有可能希望它能夠同時(shí)運(yùn)行在iOS和Android這兩大平臺(tái)上。

使用Flutter你可以輕松做到這一點(diǎn),而使用Kotlin則非常困難。

如果你想使用Kotlin來(lái)進(jìn)行跨平臺(tái)開(kāi)發(fā),可以構(gòu)建一個(gè)Kotlin多平臺(tái)項(xiàng)目,也可以分別單獨(dú)開(kāi)發(fā)一套iOS和Android的項(xiàng)目工程,但是不管使用哪種方式,你都必須同時(shí)對(duì)iOS和Android的原生開(kāi)發(fā)有足夠多的了解才行。

所以,如果你的目標(biāo)非常明確,就是要以低成本的方式開(kāi)發(fā)一款跨平臺(tái)應(yīng)用程序,那么Flutter無(wú)疑是更加合適的選擇。我們稍后會(huì)針對(duì)這一點(diǎn)進(jìn)行更加詳細(xì)的討論。

你想要開(kāi)發(fā)的到底是什么?

關(guān)于這個(gè)問(wèn)題,也可以更加詳細(xì)地將它展開(kāi)成以下5點(diǎn):

  • 你想要開(kāi)發(fā)一款出色的Android應(yīng)用嗎?
  • 你想要開(kāi)發(fā)一款出色的iOS應(yīng)用嗎?
  • 你想要開(kāi)發(fā)一款可以同時(shí)運(yùn)行在iOS和Android平臺(tái)上的應(yīng)用嗎?
  • 你希望你的應(yīng)用程序不僅僅運(yùn)行在移動(dòng)平臺(tái)嗎?
  • 你需要自己來(lái)編寫(xiě)后臺(tái)服務(wù)器程序嗎?

這些問(wèn)題我們還是逐個(gè)進(jìn)行討論。

1. 你想要開(kāi)發(fā)一款出色的Android應(yīng)用嗎?

如果你的目標(biāo)是開(kāi)發(fā)一款出色的Android應(yīng)用,并且使用Android平臺(tái)提供給我們的各種最新特性,那么請(qǐng)選擇原生Android開(kāi)發(fā)。

當(dāng)然,這并不意味著你就必須要使用Android+Kotlin的組合模式,Android+Java的組合在未來(lái)很長(zhǎng)一段時(shí)間內(nèi)仍然是可以完美工作的。不過(guò),我堅(jiān)信學(xué)習(xí)Kotlin能夠讓你更加享受代碼的開(kāi)發(fā)過(guò)程。

2. 你想要開(kāi)發(fā)一款出色的iOS應(yīng)用嗎?

類似地,如果你的目標(biāo)是開(kāi)發(fā)一款出色的iOS應(yīng)用,并且使用平臺(tái)提供的各種最新特性,那么我的建議是使用Swift語(yǔ)言來(lái)進(jìn)行原生iOS開(kāi)發(fā)。

3. 你想要開(kāi)發(fā)一款可以同時(shí)運(yùn)行在iOS和Android平臺(tái)上的應(yīng)用嗎?

如果你想要開(kāi)發(fā)的是一款能夠同時(shí)運(yùn)行在移動(dòng)雙平臺(tái)的應(yīng)用程序,這個(gè)問(wèn)題就變得有趣了,因?yàn)樵贙otlin和Flutter的選擇上面你將會(huì)有3種選項(xiàng):

  • Android和iOS應(yīng)用都使用原生的開(kāi)發(fā)方式。
  • 開(kāi)發(fā)兩個(gè)原生應(yīng)用程序,但使用Kotlin多平臺(tái)項(xiàng)目來(lái)共享代碼。
  • 開(kāi)發(fā)一個(gè)Flutter應(yīng)用。

同時(shí)使用原生開(kāi)發(fā)的方式要求你或你的團(tuán)隊(duì)在雙平臺(tái)之間各自實(shí)現(xiàn),且沒(méi)有任何代碼共享。如果你是位個(gè)人開(kāi)發(fā)者,這可能會(huì)是最為低效的一種選項(xiàng),除非你對(duì)iOS和Android的原生開(kāi)發(fā)都非常精通。但同時(shí)這也會(huì)是最為安全的一種選項(xiàng),因?yàn)樵_(kāi)發(fā)是最成熟的一種開(kāi)發(fā)方式,不管蘋(píng)果還是Google,未來(lái)都不可能放棄對(duì)原生開(kāi)發(fā)的支持,并且你還能盡快使用到各種平臺(tái)的最新特性。

而如果你想開(kāi)發(fā)兩個(gè)原生的應(yīng)用程序,但是要盡可能多地共享兩個(gè)平臺(tái)之間的代碼,那么可以考慮構(gòu)建一個(gè)Kotlin多平臺(tái)項(xiàng)目。不過(guò)這對(duì)于缺少經(jīng)驗(yàn)的開(kāi)發(fā)者而言應(yīng)該不是最佳的選項(xiàng),因?yàn)镵otlin多平臺(tái)功能還很新,能夠使用的工具和第三方庫(kù)也非常少。

而開(kāi)發(fā)一個(gè)Flutter應(yīng)用應(yīng)該是讓你的應(yīng)用程序能夠同時(shí)運(yùn)行到iOS和Android平臺(tái)上最快速的方式了,尤其當(dāng)你是一位個(gè)人開(kāi)發(fā)者,使用Flutter將可以節(jié)省大量的開(kāi)發(fā)時(shí)間。另外,由于你并不需要接觸多少系統(tǒng)底層的API,也不用在乎不同平臺(tái)之間的視覺(jué)體驗(yàn)和用戶體驗(yàn)差異,因此可以省去很多編寫(xiě)平臺(tái)專屬優(yōu)化代碼的時(shí)間。

4. 你希望你的應(yīng)用程序不僅僅運(yùn)行在移動(dòng)平臺(tái)嗎?

Flutter團(tuán)隊(duì)并沒(méi)有僅僅只是把功能限定在了移動(dòng)平臺(tái)上,而是將它進(jìn)一步延伸到了網(wǎng)頁(yè)平臺(tái),當(dāng)然這個(gè)功能目前還在開(kāi)發(fā)當(dāng)中。Flutter給我們提供的便利性就是可以使用同一份代碼來(lái)讓?xiě)?yīng)用程序運(yùn)行到不同的平臺(tái)上面,而且隨著Flutter支持的平臺(tái)越多,使用Flutter的性價(jià)比就會(huì)越高。

當(dāng)然你也可以考慮使用Kotlin多平臺(tái)項(xiàng)目來(lái)支持網(wǎng)頁(yè)平臺(tái)的開(kāi)發(fā),但是始終要記得,Kotlin多平臺(tái)項(xiàng)目的核心思路是共享代碼,因此你還是要為每個(gè)平臺(tái)去編寫(xiě)原生的代碼,比如開(kāi)發(fā)UI界面,以及對(duì)共享代碼進(jìn)行調(diào)用等。注意,隨著你要支持的平臺(tái)越多,這種方案的成本也會(huì)越大。

5. 你需要自己來(lái)編寫(xiě)后臺(tái)服務(wù)器程序嗎?

另外可能還有一種比較少見(jiàn)的場(chǎng)景,你需要自己來(lái)編寫(xiě)后臺(tái)服務(wù)器程序嗎?一般的公司都會(huì)有專門(mén)的服務(wù)器人員來(lái)開(kāi)發(fā)后臺(tái)服務(wù)器程序,而如果你需要自己來(lái)編寫(xiě)服務(wù)器程序的話,Kotlin是值得進(jìn)行研究的,因?yàn)榻柚鶮tor框架可以輕松實(shí)現(xiàn)服務(wù)器端程序的編寫(xiě),而掌握Kotlin語(yǔ)言則是使用Ktor框架的前提條件。

你是否已經(jīng)是一名移動(dòng)開(kāi)發(fā)者? 

關(guān)于到底是選擇Kotlin還是Flutter,我們還需要將一個(gè)重要的因素考慮在內(nèi),就是你當(dāng)前的開(kāi)發(fā)經(jīng)驗(yàn)以及技術(shù)能力在什么層次。這里討論以下兩種可能:

  • 你已經(jīng)是一名Android開(kāi)發(fā)者了?
  • 你已經(jīng)是一名iOS開(kāi)發(fā)者了?

1. 你已經(jīng)是一名Android開(kāi)發(fā)者了?

如果你已經(jīng)非常熟悉Android原生開(kāi)發(fā)了,學(xué)習(xí)Kotlin將會(huì)比學(xué)習(xí)Flutter快上許多倍。Kotlin會(huì)在你當(dāng)前已掌握的知識(shí)基礎(chǔ)上迭代累加,并且能讓你的Android程序開(kāi)發(fā)變得更有效率。

另外,學(xué)習(xí)Kotlin還可以讓你擁有開(kāi)發(fā)后臺(tái)服務(wù)器程序的能力,只需要借助Ktor框架就能快速地開(kāi)發(fā)出一個(gè)簡(jiǎn)單的后臺(tái)服務(wù)器程序,從而讓你的工作流程變得更加簡(jiǎn)單。

而學(xué)習(xí)Flutter則需要你去掌握一門(mén)新的語(yǔ)言(Dart),并且還要去了解一個(gè)全新的開(kāi)發(fā)生態(tài),這將需要花費(fèi)比學(xué)習(xí)Kotlin多上許多倍的時(shí)間。

如果你并不是想要享受Flutter跨平臺(tái)特性所帶來(lái)的便利性,僅僅使用Flutter來(lái)開(kāi)發(fā)Android平臺(tái)專屬的應(yīng)用程序是一件沒(méi)有意義的事情。

2. 你已經(jīng)是一名iOS開(kāi)發(fā)者了?

而如果你是一名iOS開(kāi)發(fā)者,現(xiàn)在想要了解應(yīng)該學(xué)習(xí)Flutter還是Kotlin,情況就有點(diǎn)不同了。

如果你希望繼續(xù)使用原生的方式來(lái)開(kāi)發(fā)iOS程序,不管Kotlin還是Flutter其實(shí)都起不到什么太大的作用。不過(guò)Kotlin至少可以給你提供一種編寫(xiě)后臺(tái)服務(wù)器程序的能力。

而如果你想要開(kāi)發(fā)跨平臺(tái)的應(yīng)用程序,那么就需要在Kotlin多平臺(tái)項(xiàng)目和Flutter之間做選擇了。

正如前面所討論的,F(xiàn)lutter是將一套獨(dú)立的開(kāi)發(fā)流程應(yīng)用到了兩個(gè)移動(dòng)平臺(tái)上面,而Kotlin多平臺(tái)項(xiàng)目則需要你對(duì)Kotlin和每個(gè)平臺(tái)的原生開(kāi)發(fā)都有一定的了解才行。

所以在這種情況下,不論如何你都必須學(xué)習(xí)一門(mén)新語(yǔ)言(Dart或Kotlin),以及一套新的開(kāi)發(fā)框架(Flutter或Android)。

你考慮過(guò)選擇Kotlin或Flutter的風(fēng)險(xiǎn)嗎? 

每當(dāng)你準(zhǔn)備學(xué)習(xí)一項(xiàng)新技術(shù)時(shí),都會(huì)伴隨著一定的風(fēng)險(xiǎn)。在Kotlin和Flutter的選擇上面,有一些風(fēng)險(xiǎn)是值得考慮的。

Kotlin已經(jīng)是一門(mén)相當(dāng)穩(wěn)定的技術(shù),并且支持Android平臺(tái)開(kāi)發(fā)已經(jīng)有超過(guò)兩年的時(shí)間了。它可以和現(xiàn)有的Android工程代碼完全兼容,是一種風(fēng)險(xiǎn)非常低的方案,基本不會(huì)影響到你當(dāng)前項(xiàng)目的穩(wěn)定性。

相比較而言,F(xiàn)lutter則是一門(mén)風(fēng)險(xiǎn)相對(duì)較高的技術(shù),因?yàn)樗呀?jīng)完全脫離了應(yīng)用程序的原生開(kāi)發(fā)方式。目前使用Flutter技術(shù)的成功項(xiàng)目案例比較少,對(duì)這項(xiàng)技術(shù)非常熟悉的開(kāi)發(fā)者也比較少,這在招聘方面會(huì)造成一定的難度,可能需要現(xiàn)有的團(tuán)隊(duì)都去學(xué)習(xí)這門(mén)新技術(shù)才行。

此外,Google曾經(jīng)有過(guò)在不進(jìn)行任何通知的情況下就將一個(gè)項(xiàng)目停掉的歷史,所以有些人或許會(huì)擔(dān)心Google未來(lái)是否會(huì)有可能放棄對(duì)Flutter或Kotlin的支持。

事實(shí)上,不管是Flutter還是Kotlin,目前都已經(jīng)具備一定的規(guī)模,Google在短期內(nèi)是不太可能放棄這兩項(xiàng)技術(shù)的,因此不管你的選擇是什么,都不必在這一點(diǎn)上擔(dān)心。

所以,你會(huì)學(xué)習(xí)Kotlin還是Flutter呢? 

看到這里,或許本篇文章在Kotlin和Flutter的選擇上面已經(jīng)給你帶來(lái)了一些靈感,但它最終是沒(méi)有標(biāo)準(zhǔn)答案的。所以如果你想要讓我給出一個(gè)結(jié)論的話,我的回答仍然還是:這要視情況而定。

具體的情況最后再來(lái)簡(jiǎn)單概括一下吧:

如果你想要快速找到一份移動(dòng)開(kāi)發(fā)者的工作,建議學(xué)習(xí)Kotlin來(lái)進(jìn)行原生的Android開(kāi)發(fā)(或Swift來(lái)進(jìn)行iOS開(kāi)發(fā))。

如果你想要快速構(gòu)建自己的跨平臺(tái)應(yīng)用,建議嘗試Flutter。

如果你們的團(tuán)隊(duì)想要構(gòu)建跨平臺(tái)應(yīng)用,可以考慮使用Flutter,原生開(kāi)發(fā),以及Kotlin多平臺(tái)項(xiàng)目。這三種選項(xiàng)其實(shí)都是可行的,具體的選擇要取決于你們團(tuán)隊(duì)的規(guī)模、結(jié)構(gòu)、以及項(xiàng)目本身。

如果你或你們團(tuán)隊(duì)想要將一些重要的功能邏輯在多個(gè)平臺(tái)上面重用的話,建議了解一下Kotlin多平臺(tái)項(xiàng)目。

本文轉(zhuǎn)載自微信公眾號(hào)「郭霖」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系郭霖公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 郭霖
相關(guān)推薦

2022-05-23 09:56:04

前端ReactJSFlutter

2024-01-25 18:00:56

微服務(wù)系統(tǒng)KafkaRabbitMQ

2021-03-04 09:11:57

日志開(kāi)發(fā)打印

2024-11-06 16:07:39

2019-03-18 10:32:33

容災(zāi)雙活同城

2010-01-07 10:09:38

千兆網(wǎng)絡(luò)交換機(jī)

2025-04-02 11:40:00

框架FlaskDjango

2024-12-26 00:38:10

Bolt.newAILLM

2020-01-09 15:35:54

ReactAngularVue.js

2023-11-03 08:18:59

PostgresMySQL

2023-09-06 14:11:03

數(shù)據(jù)庫(kù)Redis消息隊(duì)列

2023-11-27 12:24:23

算法模型業(yè)務(wù)模型

2023-06-12 07:17:01

顯卡靜音旗艦版

2023-06-13 07:12:10

顯卡丐版游戲

2021-05-10 06:58:41

ChromeFlash版本號(hào)

2021-01-21 05:51:52

Chrome FlashWindows

2025-04-21 16:27:18

AIGPT?3.5工具

2015-09-08 09:20:49

案例研究混合云云部署

2015-03-04 09:39:31

對(duì)象存儲(chǔ)系統(tǒng)Hadoop云存儲(chǔ)系統(tǒng)

2019-09-19 08:00:00

Visual StudVisual Stud編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)