Kotlin vs Flutter:誰將成為跨平臺開發市場的最終統治者?

Avinash Sharma InfoQ

Kotlin vs Flutter:誰將成為跨平臺開發市場的最終統治者?

作者丨Avinash Sharma

譯者 | 王強

策劃 | 張曉楠

我們在早些時候已經對比過 Flutter 和 React Native 了,這篇文章就來對比一下 Flutter 與 Kotlin 吧。

曾經有一段時間,跨平臺開發就是 " 使用 React Native 和 Flutter 構建應用 " 的代名詞。個人開發者和移動應用開發公司都會依賴這兩個框架,從而以更加經濟和高效的方式同時在 Android 和 iOS 上推出自己的產品。

但是現在,Kotlin 也加入了這場競賽。谷歌甚至宣佈 Kotlin 現在是 Android 應用程序開發人員的首選語言。於是所有人都想知道誰將成為跨平臺開發市場的最終統治者。我們在早些時候已經對比過 Flutter 和 React Native 了,這篇文章就來對比一下 Flutter 與 Kotlin 吧。

什麼是 Kotlin Multiplatform?

Kotlin Multiplatform 是這種語言的一項附加功能,可幫助其擴展到 Android 應用程序開發以外的領域。這意味著,它讓開發人員可以跨多個平臺(例如 iOS、Web、Linux、macOS、Android 和 Java 虛擬機 JVM)共享代碼、數據和業務邏輯。

我們將在這裡著重介紹 Multiplatform 的功能,你還可以在《Kotlin for Android App Development – Whys and Hows and Bonus Tips》這篇博文中瞭解 Kotlin 的原生平臺特徵。

在當下的市場中,投資 Kotlin 應用開發以實現跨平臺發佈還是一個很新的理念,但令人驚訝的是很多受歡迎的品牌都接受了這一理念。

Kotlin vs Flutter:誰將成為跨平臺開發市場的最終統治者?

這種現象背後的主要原因是,Kotlin Multiplatform 為移動應用開發人員提供了以下好處。

使用 Kotlin Multiplatform 的好處

這是一個 SDK,而不是框架

選擇 Kotlin 的最大好處是你無需遷移整個應用程序。你可以從單個模塊或功能開始,先把這一部分跑起來,然後逐步遷移其他部分。

容易學習

由於 Kotlin 的語法與 Swift、Java、Groovy 和 Scala 等頂級編程語言非常相似,因此學習這種語言並投入 Kotlin Multiplatform 的開發工作是非常容易的事情。

重用業務邏輯

的確,它不是第一個讓開發人員能夠分離業務邏輯和 UI 的工具。像 Xamarin 和 React Native 那樣的各種跨平臺框架都已經提供了這種服務。

但讓 Kotlin Multiplatfrom 與眾不同的是,它在 UI 層下采用了共享的邏輯和庫。這使移動應用程序開發人員可以與原生環境——包括 iOS 的 Swift 和 XCode、Web 上的 JavaScript 和 Android 的 Kotlin 和 Android Studio——來交互,而無需使用任何橋接手段,並以更加原生的方式交付代碼。

原生 UI 體驗

Kotlin Multiplatform 不需要開發人員遵循任何有關 UI 創建的指示。它使 UI 開發人員可以像應對原生應用一樣處理應用程序的外觀、行為和性能表現。

更高的性能

考慮使用 Kotlin 語言進行跨平臺開發的一大優勢在於, Multiplatform 會將代碼編譯為與目標平臺完全相同的格式。這使其性能表現與原生競品同樣出色。

增強的靈活性和可擴展性

它使開發人員可以在不使用任何 VM 的情況下擴展其應用項目,並運營維護它們。這使它成為製作移動應用的理想選擇,讓開發人員能夠同時關注靈活性和可擴展因素。

然而,儘管 Kotlin 語言的 Platform 擴展具有這麼多令人印象深刻的優勢,但它也有著很多缺陷,所以想要贏得所有人的喜愛還有很長的路要走。

Kotlin Multiplatform 的缺陷

仍處於實驗狀態

雖然這一 SDK 是在 Kotlin 1.2 中引入的,但它尚未達到穩定的 1.0 版本,仍處於實驗狀態。這讓開發人員在考慮為下一個大型項目選擇它時猶豫不決。

可用的庫不夠多

當前,它的開發環境中僅提供了一些基本庫,例如數據序列化庫和 HTTP 客戶端庫。儘管隨著 Kotlin 1.4(即 Kotlin 1.3.60 的繼任者)的到來,會有更多像 DateTime 這樣的庫進入市場,但直到現在,要做到無縫且毫不費力地構建應用程序依舊是很困難的事情。

需要熟悉其他技術棧

由於 Kotlin Multiplatform 的宗旨並不是要替代各個平臺提供的所有應用程序編程接口(API),因此應用開發公司需要具備各個平臺和相應 API 的基本知識。相比 Flutter 等其他跨平臺開發選項,這又是一個選擇 Kotlin 的缺陷所在。

較高的開發成本

最後一點也很重要,Kotlin SDK 提供了一些半原生功能。因而構建移動應用需要更高的成本,所以到頭來它並不適合創建 MVP 和應用原型。

探討了 Kotlin 的上述優缺點後,我們再來回顧一下 Flutter,然後進一步深入市場,探究兩者之間的關係。

什麼是 Flutter UI 框架?

Flutter 於 2015 年推出,是谷歌 Fuchsia 操作系統的市場開路先鋒。它是一個開源 SDK,讓人們可以使用單個代碼庫製作出設計精美,具備原生體驗的移動設備、Web 和桌面應用程序。

谷歌的 UI 框架針對當前眾多的技術和市場挑戰,提供了行之有效的解決方案。結果是 Flutter 很快就成為了理想的跨平臺應用開發框架。不僅如此,它還進入了一眾頂級品牌所使用的技術列表中。

Kotlin vs Flutter:誰將成為跨平臺開發市場的最終統治者?

於是人們都更好奇了,想要了解 Flutter 的功能特性以及相應的優點,接下來我們逐一分析。

選擇 Flutter 的好處

開源和免費使用

Flutter 及其底層編程語言 Dart 都是開源的,可以免費使用。所以開發人員可以查看它們的文檔,在開放的開發論壇中發佈自己的問題,最後學會並應用代碼。

熱重載功能

Flutter 之所以受到移動應用程序開發機構青睞,最重要的原因之一就是它提供的熱重載功能。

這一功能使任何人都可以更輕鬆地在後端做出各種更改,並即時在前端查看更改的效果。通過這種方式,開發人員可以輕鬆判斷更改是否與應用程序的其他元素完美地結合在一起。

高度可定製

投入 Flutter 應用程序開發後,開發人員就有能力在開發環境中使用多種小部件。這使他們更容易創建速度更快,且擁有自定義外觀的移動解決方案。

縮減開發週期和成本

Flutter 的一項跨平臺優勢在於,它讓開發人員可以使用單個代碼庫,同時為 iOS 和 Android 創建類似原生版本的應用程序。這大大降低了創建 Flutter 移動應用的成本。

支持 Google Firebase

藉助谷歌的 Firebase 集成工具,Flutter 使開發人員得以將後端設施添加到開發環境中。

適合創建 MVP 和 App 原型

Flutter 提供的功能讓開發人員可以用更少的時間、成本和精力,同時為 Android 和 iOS 平臺構建應用程序。這讓 Flutter 成為 MVP 開發、創建用來試水或吸引投資應用原型的理想選擇。

選擇 Flutter SDK 的缺陷

更大的應用體積

當你的應用程序開發計劃選擇 Flutter 時,面臨的的最大缺陷就是應用體積太大了。與 React Native 和 Xamarin 相比,用這個框架就連發佈一個“Hello World”應用的文件大小也有大約 6.7MB。

需要用 Dart 編程

無可否認,Dart 易於學習且實現速度更快。但是,它還不像 Java、C#、JavaScript 和 C 這些同行一樣那麼流行。於是開發人員很難去學習那些最佳 Dart 編程課程,進而踏入 Flutter 開發領域。

對比 Kotlin 與 Flutter 時的考慮因素

Kotlin vs Flutter:誰將成為跨平臺開發市場的最終統治者?

市場知名度

Kotlin 和 Flutter 都是開源且免費使用的工具。因此開發人員很有興趣同時使用兩種方案。

我們看一下谷歌趨勢數據,與 Kotlin 相比,Flutter 的受歡迎程度正在飛速增長。同樣,我們看一看 GitHub 的數據來對比 Kotlin 和 Flutter,會發現前者有 28.3K 星和 3.29K forks,而後者有 69.5K 星和 8.11K forks。

這些數據表明,在市場上 Flutter 相比 Kotlin 獲得的發展動力要大得多。

學習曲線

如果你將學習曲線看作是原生 Kotlin 與 Flutter 的戰爭中的比較因素,那麼前者無疑會是贏家。其背後的原因是它可以與 Java 互操作,並且幾個月前谷歌提供了一系列 Kotlin 學習課程。

但是話題轉向 Kotlin Multiplatform 和 Flutter 的比較時,情況就有所不同了。與 Flutter 相比,Kotlin Multiplatform 是一個全新的生態系統,其在市場上可用的資源是很有限的。

因此,Flutter 贏得了比賽。

性能

Flutter 讓開發人員可以使用相同的語言來同時滿足前端佈局和後端需求,並享受更流暢的動畫等眾多好處。

但是與 Kotlin 相比,Flutter 在市場上仍然遠遠落後。其主要原因是 Kotlin Multiplatform 的代碼是完全按照目標平臺的格式編譯的。

因此,Kotlin Multiplatform 贏得了對 Flutter 的性能之戰。

第三方庫和工具的集成

Kotlin Multiplatform 運行在原生平臺生態系統內,而不是新建一個生態。因此,應用專家可以使用他們在原生開發工作期間一直使用那些工具和庫,包括 Jetpack Compose 和 SwiftUI 等。於是乎,這意味著他們無需尋找第三方庫和工具來對接原生環境。

但對於 Flutter 跨平臺 SDK 來說這些工具是必需的,因為它基本上是一個 UI 開發工具。

後端開發領域

考慮 Kotlin Multiplatform 與 Flutter 之間在後端開發領域的比較時,前者又一次勝出了。

Flutter 使用的是 Firebase(這是一個高效的 BaaS——後端即服務平臺),來提供出色的後端體驗。而 Kotlin Multiplatform 讓開發人員可以直接編寫後端代碼。

專注於多平臺

目前,Flutter 的用例針對的是移動設備(Android 和 iOS)和 Web 端的應用程序。人們無法用它在 tvOS、Android Auto、CarOS 和 WatchOS 上展示自己的產品。

但對於 Kotlin Multiplatform 來說並沒有這種限制。它的設計理念就是為移動端以外的設備和平臺開發應用項目。

因此,Kotlin Multiplatform 是移動應用程序開發服務公司在你能想象的各種平臺和設備上點亮應用創意的首選工具。

工作機會和薪資範圍

在對比 Kotlin Multiplatform 與 Flutter 時,要考慮的另一個重要因素就是工作機會和薪資範圍。

在 StackShare 社區中,有 268 家公司和 210 位開發人員在技術棧中提到了 Kotlin 編程語言,而 Flutter 被 42 家公司和 146 位開發人員納入了技術棧。

現在,由於 Kotlin Multiplatform 還不是一個獨立的平臺,而是對原生語言的一種實驗性擴展,可以在 Kotlin 原生環境中使用,所以看起來它在市場上有更多的工作機會。

文檔和社區支持

與 Flutter 相比,Kotlin Multiplatform 仍然比較新,實際上還處於實驗階段。因此,後者的文檔和社區支持在某些方面落後於前者。但是,一旦 Multiplatform 變得穩定起來,可以預期它的文檔和社區實力將有所提高,從而進一步鼓勵大家使用 Kotlin 進行跨平臺開發。

誰會是跨平臺開發大戰的勝利者?

Kotlin Multiplatform 和 Flutter 都是可靠的工具,均旨在減少同時在 Android 和 iOS 平臺上發佈產品所需的時間,並且都得到了谷歌的支持。它們相互之間進行著激烈的競爭,並且每次更新後都變得更具競爭力。

在這種情況下,建議開發人員諮詢移動專家,分析你的跨平臺應用需求和優先級,來確定 Kotlin 和 Flutter 究竟哪種選擇才是更合適的。


分享到:


相關文章: