自從 2017 年咱們宣佈支持 Kotlin 以來,收到了不少關於使用 Kotlin 進行 Android 開發的問題: 你們想知道如今是否適合學習 Kotlin,是否要在應用開發中引入 Kotlin,學習 Kotlin 的最佳課程或教程是什麼,Google 內部是否在使用 Kotlin,以及咱們對 Java 編程語言的規劃是怎樣的?本文將一一做答。java
最常說起的問題大都圍繞同一個話題:android
簡單來講:git
是的!開始學習和使用 Kotlin 吧!github
展開來回答:編程
2017 年,咱們在 Google I/O 大會上宣佈支持 Kotlin。從那時起,咱們開始着手確保咱們的 API、文檔和示例適用於 Kotlin。2019 年,Kotlin 成爲 Android 開發的首選語言,這讓咱們開始更加依賴於 Kotlin 的功能。例如,協程成爲咱們實現異步操做的推薦方案。api
咱們還作了如下工做:安全
Kotlin 優先庫異步
首先在若干 Android Jetpack API (如 Room、LiveData、ViewModel 和 WorkManager) 中,咱們增長了對 Kotlin 協程的一流支持,從而轉變了在 Android 上執行異步操做的方式。Firebase Android SDK 和許多 Jetpack 庫都具備 Kotlin 擴展庫 (KTX),經過 Kotlin 使用起來更加流暢。編程語言
如今,咱們的不少庫都優先使用 Kotlin,如 Paging 3.0 和 DataStore。Jetpack Compose 是全新的、獨立的、聲明式 UI 工具包,它從頭至尾使用 Kotlin 編寫。工具
工具
開發效率源自強大的工具。所以,咱們對編譯工具鏈作了不少針對 Kotlin 的改進,包括對 Kotlin JVM 編譯器的改進、針對 Kotlin 的 R8 優化,甚至還開發了 Kotlin Symbol Processing 等新工具。咱們添加了內置 Android Kotlin Live 模板,供您使用簡寫語法將常見的 Android 代碼結構應用到 Kotlin 代碼。同時,針對 Kotlin 的 Lint 檢查可幫助您確保 Kotlin 代碼更符合語言習慣。該工具在您從 Java 編程語言過渡到 Kotlin 時尤爲有用。
在 Google 內部,咱們也在着力推廣使用 Kotlin。咱們有超過 60 個應用 (如 Google Home、Drive、Maps 等) 已將 Kotlin 添加到代碼庫中。咱們龐大的內部代碼庫中已有超過 200 萬行 Kotlin 代碼。
咱們常常收到這一問題,但最終的答案因人而異。若是您對當前的代碼庫和技術棧感到滿意,能熟練使用您的解決方案來管理異步任務,而且具備高效的錯誤捕獲方法,那麼遷移到 Kotlin 對您來講可能不是合適的解決方案。
若是您在試用 Kotlin 以後或經過下文提到的一些課程學習該語言以後,很喜歡它的效果,並且但願充分利用最新的 Jetpack API,那麼您應該考慮將 Kotlin 加入到應用開發中。Kotlin 的一大優點在於它與 Java 有很好的互操做性。您能夠按部就班地採用 Kotlin,好比能夠首先在測試中試用,而後在新功能中試用,在慢慢接觸的過程當中,再嘗試轉換部分舊代碼。
着手遷移到至 Kotlin,請查閱 Codelab 教程 - 轉換到 Kotlin。
咱們在 Java 的基礎上增長了對 Kotlin 的支持,由於這兩種語言均可以編譯成相同的字節碼,而且能夠共存。咱們喜歡 Kotlin 是由於用它編寫代碼更易於表達、更安全,同時咱們也會繼續 維護並推進對 Java 語言的支持。例如,在 Android 11 中,從 OpenJDK 的較新版本一直到版本 13,咱們增長了對許多 API 的支持,Android Studio 甚至支持在全部 Android 設備上使用其中一些 API,而不受操做系統版本的限制。查閱文章,進一步瞭解 對 OpenJDK 中新 API 的支持狀況。
採納一門新語言並不是易事,但咱們正努力使其儘量簡單:
自從 3 年前正式增長對 Kotlin 的支持以來,咱們一直在加大力度對這一出色的語言和生態系統進行支持。咱們攜手 JetBrains 一塊兒爲 Kotlin 創建了堅實的基礎,確保該語言健康發展,例如,經過謹慎的流程來審覈重大變動。咱們的貢獻不止於此: Google 內部有一支專職研究 Kotlin 編譯器的工程師團隊;咱們正在構建的 Jetpack API 不只支持 Kotlin,並且以 Kotlin 爲首選語言;咱們還致力於爲使用 Kotlin 進行 Android 開發提供無縫的體驗。
Java 是 Oracle 公司和/或其子公司的註冊商標。