上周,谷歌剛剛推出免費的Kotlin 和 Android 在線課程,教開發者使用Kotlin 構建 Android 應用。很快,Google Home 團隊也現身說法,通過自身經歷,展示了 Kotlin 開發的好處。
Google Home 應用程序可用來連接并管理各類智能家居設備。與不少受谷歌 “Kotlin-first” 倡議影響的應用相同,Google Home 也選擇將 Kotlin 納入其代碼庫。截至今年六月,該應用中約有 30% 的代碼采用 Kotlin 編寫,今后的新功能也被鼓勵用 Kotlin 進行開發。
Google Home團隊提到,與Kotlin 配合使用的是同樣被谷歌推行的Jetpack開源 UI 工具包,它結合了反應式編程模型和 Kotlin 編程語言的簡潔性和易用性,旨在簡化 UI 開發。
盡管目前只有 1/3 代碼遷移到了Kotlin,其高效和簡潔的特性已使Google Home團隊感受頗深。他們以數據類和 Parcelize 插件的使用為例證:在 Java 中由 126 行手寫代碼組成的類,在 Kotlin 中僅用 23 行就能夠表示——代碼量減少了 80%。此外,Kotlin 中一些函數方法還簡化了許多嵌套循環和過濾檢查。
另一方面,Kotlin 的可空性(nullability)也得到了贊許。依舊是與 Java 相比,Google Home團隊指出,“Java 中對可空性注釋的用法不一致時,可能會導致遺漏一些 bug”。而采用 Kotlin 以來,Google Home 的 NullPointerExceptions 減少了 33%,這恰是 Google Play 控制臺上最常見的崩潰類型,由此帶來的崩潰數量減少也許能夠顯著改善用戶體驗。
Kotlin 編程語言 2011 年由 JetBrains 推出,2012 年開源,2017 年成為 Android 官方開發語言,并于 2019 年成為Andoid 開發官方首選語言。
從初始支持 Kotlin 再到 “Kotlin-first”,谷歌一直在對其進行多方位扶持,先后推出了Kotlin免費在線課程和使用 Kotlin 構建 Android 應用的課程;同時不斷完善著相關生態,比如今年四月開源了gRPC-Kotlin/JVM,讓開發者可以在 Kotlin 項目中更方便地使用 gRPC。
隨著谷歌的極力推行,Kotlin 的關注度一路水漲船高,最新的JVM 生態報告顯示,Kotlin 已成為第二受歡迎的 JVM 語言。Android 開發專家沈哲在接受開源中國的采訪時曾提到,國內一些公司也開始使用 Kotlin 開發 Android 項目,“越來越多的開發者會選擇 Kotlin 作為原生 App 的首選開發語言”。
作為一門 JVM 語言,一門兼容甚至被認為要取代Java 的語言,Kotlin 的出場也往往伴隨著與 Java 的比較。谷歌甚至推出了從 Java 遷移到 Kotlin 的官方指南。部分 Android 開發者仍在猶豫是否要轉到 Kotlin,有一些人已經從 Java 遷移到Kotlin 又遷回了 Java。在一年前Dice網站發布的調查中,85% 的受訪者幾乎一邊倒地選擇仍舊使用 Java 來構建 Android 應用程序。
但其實在谷歌工程師看來,并沒有必要將二者完全劃清界限。Android Studio 技術負責人Jeffrey van Gogh就曾講過,Java 與 Kotlin 具有極高的互操作性,所以兩者完全可以共存于同一個項目中。目前如 Google Home 這樣的谷歌自家應用,不少都采用這種融合式做法,Kotlin 更多地被用來編寫新功能。
那么,再回到 “Kotlin 還是 Java” 這個也許已經令 Android 開發者感到厭煩的問題上,定論顯然并不存在,關鍵是選擇最適合的方式。