不僅僅是Android開發,谷歌告訴你選用kotlin的五大理由

在軟件開發領域,每年都會涌現新的編程語言,但在過去的幾年裏,它們很少像 JetBrains 的 Kotlin 那樣得到開發人員的重視。

Kotlin 是一種通用的、靜態類型的編程語言,專爲 JVM、Android、瀏覽器和本地解決方案而設計。它由 JetBrains 的語言設計師 Andrey Breslav 創建,2011 年由 JetBrains 正式發佈。

如今,Kotlin 已經成爲 Stack Overflow 上最受歡迎的語言之一,GitHub 上增長最快的編程語言之一,也是 Android 應用程序開發的首選語言。Kotlin 還因其跨平臺和工具的崛起,在今年的 Thoughtworks 的技術雷達(Technology Radar)上亮相。

ThoughtWorks 首席技術官 Rebecca Parsons 表示,“那些尚未了解 Kotlin 的開發人員最好看看它能夠做些什麼。Kotlin 絕對是一種真正優秀的編程語言,具有紮實的特性和不斷髮展的生態系統。”

但是,在如此短的時間裏,Kotlin 爲何以及如何吸引開發人員這麼多的興趣呢?據 Thoughworks 技術主管 Fausto de la Torre 稱,首先,Kotlin 是開源的,這就在大多數軟件開發社區引起了共鳴。其次,Kotlin 還得到了業界頂尖技術巨頭之一的支持:Google 在 2017 年的 Google I/O 大會上宣佈支持這種編程語言。但是,甚至在 Google 宣佈這一決定之前,就已經有許多開發人員將他們的開發工作轉移到 Kotlin 了。

據 Google Android 的首席宣講師 Chet Haase 說,Kotlin 打破了太多傳統編程語言已被接受的模式。“任何事物都有可能造成尾大不掉的局面。”他說,“幾年後,那些編程語言的提供者不希望完全改變現狀,在編程語言中採用新的範式,強加給尚未做好準備的開發人員。”這也是 Google 在考慮採用 Kotlin 時主要關心的問題。“我們(並不)希望讓 Android 開發人員感到震驚,讓他們通過引入一些新概念來改變一切。”Haase 解釋道。

Kotlin 採用了一種不同的方法,因爲它完全可與 Java 互操作,允許 Kotlin 開發人員利用 Java 現有的庫和框架生態系統。

Kotlin 與其他語言的比較

不過,ThoughtWorks 的 Fausto de la Torre 解釋說,這種互操作性,對 Kotlin 來說可能是一種折衷。因爲大多數採用 Kotlin 的開發人員都是 Java 開發人員,他們傾向於以 Java 風格編寫 Kotlin 代碼,但是在使用 Kotlin 時,有一些 Java 的行爲、關鍵字和功能並不能很好地進行轉換。“Kotlin 可以使用 Java 的整個生態系統,這是它所擁有的最強大的東西之一,但試圖以同樣的方式使用它,卻是一項挑戰。”他說,“你不能像你想象的那樣來直截了當地使用它。”

而 Google 的 Android 產品管理總監 Stephanie Cuthbertson 則認爲,Java 不再是最先進的編程語言了。大約有一半的 Android 開發社區正在使用 Kotlin,因爲它能提供更多的現代特性。當你觀察 Android 生態系統中的其他語言時,就會發現,C++ 和 Java 代表了特定時間內的某種技術水平。例如,C++ 代表數據結構和算法,而 Java 代表面向對象的語言,引入了諸如自動內存管理之類的東西;但是,Kotlin 則代表了一種更爲現代的工作方式,Cuthbertson 如此解釋。“開發人員告訴我們,他們喜歡 Kotlin 的所有現代習語。”她說。其中的一些例子包括:協程(coroutines)和爲空性(nullability)。協程引入了一種新的方法來編寫異步和非阻塞代碼。Kotlin 還支持顯式地聲明 null,並確保開發人員不會遇到可能導致質量問題的空引用異常。

Cuthbertson 還認爲,與其他語言相比,這種語言的發展速度更快,因爲 Kotlin 語言並不是由委員會驅動的,而是由 Kotlin 基金會管理的,語言設計本身就是由編程語言設計大師 Breslav 完成的。Breslav 一直負責社區的一個流程,在這個流程中,他從其他開發人員那裏獲得了大量的意見,但他是唯一負責這一流程的人。Cuthbertson 說:“這意味着語言正在以一種與之相一致的方式迅速發展。Kotlin 語言是特意設計的,因此我們可以快速進化,但進化的方式要保護語言的純潔性,同時以一種真正健康的方式接受社區的意見。”

此外,Android 的 Haase 解釋說,Kotlin 的優勢在於,它是由 IDE 公司 JetBrains 設計和開發的。“語言的核心特性以及新特性緊密集成到開發人員使用的開發環境中。雖然其他語言的 IDE 都很擅長使用這種特定語言進行開發,但語言本身是獨立於 IDE 的。”他解釋說,IntelliJ IDEA 是 Google 的 IDEAndroid Studio 的底層平臺。

Thouightworks 的 Fausto de la Torre 發現他的團隊被 Kotlin 所吸引,因爲它提高了開發人員的工作效率,並提供了比其他語言更好的開發體驗。他解釋說,Kotlin 有能力實現與其他語言相同的功能,但採用的是更爲現代的方式,以更少的代碼行來實現。

Cuthbertson 說:“一旦你掌握了編寫 Kotlin 代碼的竅門,你就可以編寫更少的代碼。代碼越少,就越容易維護。由於諸如爲空性之類的原因,你可以擁有更高質量的代碼。而且因爲有了現代習語,它變得有趣多了。”

Fausto de la Torre 補充說,Kotlin 社區目前還沒有其他語言那般強大。“雖然它還在繼續增長,但還不夠成熟,仍然有一些差距需要填補。”他希望看到更多的測試框架和持續交付框架的工作。Google 目前正致力於投資和發展社區,並提供培訓,幫助開發人員瞭解如何將 Kotlin 集成到他們的代碼和解決方案中。“我們不僅認爲這樣做對我們的開發人員來說更好,而且我們還認爲,這種做法對我們來說,也更好。”Haase 解釋說。Google 目前正在其 Android Jetpack 和其他庫中使用 Kotlin 編寫。

Kotlin 不僅僅用於 Android 開發

目前,Kotlin 因其在 Android 應用程序開發領域的崛起而聞名,儘管 Google 仍在大力投資其他語言,但它也在推動 Kotlin 的發展。“如果你正在進行一個新項目,我們建議你從 Kotlin 開始。我們在 Android 操作系統開始採用了‘Kotlin 優先’的方法。”Android 的 Cuthbertson 說道。

但 ThoughtWorks 的 Fausto de la Torre 認爲,這種語言顯示出了其超越移動開發的價值。

ThoughtWorks 目前看到的情況是,團隊使用 Ktor 構建微服務並將軟件部署到生產環境中,Ktor 是一個使用 Kotlin 構建一步服務器和客戶端的框架。MockK 是另一個用於模擬和測試 Kotlin 應用程序的 Kotlin 解決方案。“作爲一個本地庫,它幫助我們的團隊編寫乾淨簡潔的代碼來測試 Kotlin 應用程序,而不是使用像 Mockito 或 PowerMock 等不方便的包裝器。”ThoughtWorks 在他們的技術雷達中寫道。此外,ThoughtWorks 在 Kotlin 使用 Detekt 進行靜態代碼分析,在 Kotlin 中使用 http4k 來服務和使用 HTTP 服務。

Kotlin 團隊還致力於通過 Kotlin/Native 將 Kotlin 語言帶到移動應用程序開發之外的領域,這是一種無需運行虛擬機即可將 Kotlin 代碼編譯到本地庫的解決方案。“Kotlin/Native 主要是爲那些不需要或不可能使用虛擬機的平臺(如嵌入式設備或 iOS)設計的。它解決了開發人員需要開發一個無需額外運行時或虛擬機的獨立程序的問題。”JetBrains 在網站上如此寫道。Kotlin/Native 目前支持 iOS、MacOS、Android、Windows、Linux 和 WebAssembly。

Google 還試圖通過採用 Kotlin 進行雲開發,將 Kotlin 引入 Android 開發之外的領域。

在 JetBrains 最近發佈的一份 Kotlin Consensus 報告中,該公司發現,39% 的受訪者使用 Kotlin 作爲他們的主要語言,46% 的受訪者將 Kotlin 用於服務器端生產代碼,10% 的受訪者將其用於數據科學。該報告是基於 Kotlin 用戶的 4000 多份回覆生成的。“如今,逾 200 萬人在各種平臺上使用 Kotlin,用於開發所有可能類型的軟件。有超過 250 名的貢獻者幫助推動發展,也在幫助生態系統向前發展。我們對社區的奉獻精神和辛勤工作感到非常高興。他們爲 Kotlin 學習資料做出了巨大的貢獻並傳播了 Kotlin 的知識。”Kotlin 團隊在一篇博文如此寫道。

Google 採用 Kotlin 的五大理由

對開發人員來說,在現有的和已建立的平臺上採用一種新的編程語言可能會讓他們感到吃驚,因爲它會在現有的應用程序、庫、代碼、新語言和新 API 之間形成一個脫節的環境。

Android 首席宣講師 Chet Haase 說:“平臺是否應採用另一種語言,一直是一個考慮因素,由於震動效應,答案總是否定的。然而,當我們想開發人員提出 Kotlin 的想法時,他們非常感興趣。”

Google 的 Android 產品管理總監 Stephanie Cuthbertson 表示,促使 Google 在 2017 年宣佈支持 Kotlin 的主要驅動因素有五個。

1.“這是一種漂亮的編程語言,” Cuthbertson 稱。因爲它是一種現代編程語言,所以,他利用了開發人員已經熟悉的許多新的最佳實踐。

2.Kotlin 完全可以與 Java 互操作,允許開發人員在不同語言之間來回調用。

3.成熟。當 Google 決定採用 Kotlin 時,它已經誕生五年,並且已經達到了 1.0 的穩定性。

4.IDE 支持。Kotlin 是由 JetBrains 的 IntelliJ IDEA(Android Studio 的底層平臺)的創建者創建,因此,它爲 IDE 和語言提供了增強的支持。

5.社區。Cuthbertson 說,“我們將 Kotlin 應用到了 Android 上,是因爲社區真的非常需要它。”事實上,Cuthbertson 解釋道,就在 Google 宣佈採用 Kotlin 之前不久,社區就曾給 Android 寫了一封公開信,要求團隊採用 Kotlin。

Cuthbertson 說:“Kotlin 並不僅僅是在發展,人們真的很喜歡它,正是因爲出了這一系列的事情,讓我們不得不打破平衡,並說:‘是時候向前邁進了。’”

參考鏈接:

https://sdtimes.com/softwaredev/the-rise-of-kotlin/ ;
https://kotlinlang.org/
https://medium.com/@altavir/diving-deeper-into-context-oriented-programming-in-kotlin-3ecb4ec38814

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章