作者簡(jiǎn)介:ASCE1885, 《Android 高級(jí)進(jìn)階》作者。
本文是 5 月 19 號(hào)在我的小密圈的一個(gè)問答,之前也在我的微信公眾號(hào)分享過截圖,但過了幾天發(fā)現(xiàn)本文原封不動(dòng)的出現(xiàn)在另外一個(gè)圈子里面,而且沒有任何轉(zhuǎn)載和出處說明,為了避免再過幾天在微信公眾號(hào)上也被抄襲,所以還是正式發(fā)布在微信上好了。
這兩天國(guó)內(nèi)開發(fā)社區(qū)有部分文章對(duì) Kotlin 的地位做了錯(cuò)誤的解讀,例如認(rèn)為 Google 已經(jīng)將 Kotlin 作為 Android 開發(fā)的第一語(yǔ)言,但我們從 Kotlin 官方博客[1] 和 Google 博客[2] 的這兩篇文章中可以看到事實(shí)并非如此:
1)首先 Google 的 Android 團(tuán)隊(duì)只是宣布對(duì) Kotlin 正式提供官方支持(從 Android Studio 3.0 開始),說白了和之前相比,只是在 Android Studio 3.0 中內(nèi)置 Kotlin 插件,以后在 Android Studio 中使用 Kotlin 開發(fā) Android 應(yīng)用不需要自己安裝插件了。
2)從 Kotlin 官方博文中我們可以看到這么一句話:Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin. 部分人產(chǎn)生誤解是因?yàn)?first-class support,這句話其實(shí)是提供一級(jí)支持的意思,跟 Javascript 中常說的函數(shù)是一等公民是一個(gè)意思,但我們知道一等公民并不止函數(shù)一個(gè),只是相比其他傳統(tǒng)語(yǔ)言中函數(shù)是二等公民而言,所以正確的解讀是 Kotlin 在 Android 開發(fā)領(lǐng)域終于從二等公民晉升為一等公民,僅此而已。
3)從 Google 的這篇文章[3] 中可以看到,Android Studio 3.0 Preview 1 已經(jīng)支持所有的 Java7 語(yǔ)言特性和部分 Java8 語(yǔ)言特性,可以看到 Android 團(tuán)隊(duì)對(duì) Java 語(yǔ)言特性的支持也在不斷升級(jí)進(jìn)化中,而這些 Java 新版本的特性也引入了不少函數(shù)式編程的特性,這也是 Kotlin 相比 Java 而言的主要優(yōu)點(diǎn)之一。
4)Android Framework 層都是用 Java 語(yǔ)言開發(fā)的,Android 團(tuán)隊(duì)會(huì)使用 Kotlin 來重新編寫 Framework 層的可能性很小;Java 通過 JNI 來實(shí)現(xiàn)和 C/C++ 的交互,而目前 Kotlin 想要和 C/C++ 交互也只能通過 Java 的 JNI,雖然 Kotlin 開始嘗試通過 Koltin/Native 來去掉對(duì)虛擬機(jī)的依賴[4],但這個(gè)技術(shù)還為時(shí)尚早。
5)即便 Kotlin 有取代 Java 的能力和趨勢(shì),但這種類型的技術(shù)更新?lián)Q代是一個(gè)長(zhǎng)期緩慢的過程,參見 Swift 替換 Objective-C,即便有蘋果爸爸的力推,這幾年下來,國(guó)內(nèi)開發(fā) iOS 的主流語(yǔ)言還是 Objective-C。
因此,如果你還在公司內(nèi)任職進(jìn)行 Android 相關(guān)的開發(fā)工作,那么就繞不開 Java,但這并不代表你可以不去學(xué)習(xí) Kotlin,作為技術(shù)人員,對(duì)新技術(shù)應(yīng)該有一定的熱情和好奇心。而且既然 Android 官方都為 Kotlin 轉(zhuǎn)正了,相信不少技術(shù)團(tuán)隊(duì)會(huì)逐步在項(xiàng)目中開始 Kotlin 的使用,國(guó)外就更是如此了,例如在之前的《Android Studio 實(shí)現(xiàn)開源函數(shù)庫(kù)的離線依賴-greenDAO 3 為例》[5]這篇文章中,我就提到:“最近很多開源項(xiàng)目中,編譯時(shí)注解的處理器很多都改用 Kotlin 編寫,除了 greenDAO 3,新興的 ORM 框架 DBFlow 的注解處理器也是用 Kotlin 編寫的”。此外,我們可以看到國(guó)外的一個(gè) Kotlin Weekly[6] 已經(jīng)做到了 42 期,如果有時(shí)間和精力的話,或許我也會(huì)搞一個(gè) #Kotlin 開發(fā)技術(shù)周報(bào)#。

-
https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/ ?
-
https://android-developers.googleblog.com/2017/05/android-announces-support-for-kotlin.html ?
-
https://developer.android.com/studio/preview/features/java8-support.html ?
-
https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/ ?
-
http://us12.campaign-archive2.com/home/?u=f39692e245b94f7fb693b6d82&id=93b2272cb6 ?