在今日凌晨的 Google I/O 大會上,Google 官方正式宣佈,Kotlin 編程語言如今是 Android 應用程序開發人員的首選語言。Java 佔據 Android 開發絕對統治的時代一去不復返了。編程
1 Kotlin,東宮太子安全
谷歌今天宣佈,Kotlin 編程語言如今是 Android 應用程序開發人員的首選語言。網絡
谷歌在今天的聲明中寫道:「Android 的開發將愈來愈以 Kotlin 爲先。」許多新的 Jetpack API 和特性將首先在 Kotlin 中提供。若是你要開始一個新項目,你應該用 Kotlin 來寫;用 Kotlin 編寫一般意味着更少的代碼——更少用於類型、測試和維護方面的代碼。」框架
就在兩年前的 2017 年 I/O 大會上,谷歌宣佈在其 Android Studio IDE 中支持 Kotlin。考慮到 Java 長期以來一直是 Android 應用程序開發的首選語言,這有點使人驚訝。在過去的兩年裏,Kotlin 的人氣只增不減。谷歌說,超過 50% 的專業 Android 開發人員如今使用該語言開發他們的應用程序,在最新的 Stack Overflow 開發人員調查中,它被列爲第四大最受歡迎的編程語言。編程語言
Android 的首席倡導者切特·哈斯 (Chet Haase) 表示:「咱們宣佈,咱們正在採起的下一個重大舉措是,咱們將以 Kotlin 爲先。」分佈式
哈斯說:「咱們知道,不是每一個人如今都在用 Kotlin,可是咱們相信,你會須要它的。」「你可能有充分的理由繼續使用 C++ 和 Java 編程語言,這徹底沒問題。這些語言不會消失。」函數
2 Kotlin,Android 世界的 Swift?工具
早在 2015 年,Kotlin 就有「Android 世界的 Swift 」的稱號。性能
Kotlin 是一門與 Swift 相似的靜態類型 JVM 語言,由 JetBrains 設計開發並開源。與 Java 相比,Kotlin 的語法更簡潔、更具表達性,並且提供了更多的特性,好比,高階函數、操做符重載、字符串模板。它與 Java 高度可互操做,能夠同時用在一個項目中。測試
按照 JetBrains 的說法,根據他們多年的 Java 平臺開發經驗,他們認爲 Java 編程語言有必定的侷限性和問題,並且因爲須要向後兼容,它們不可能或很可貴到解決。所以,他們建立了 Kotlin 項目,主要目標是:
若在當時看來,Android 世界的 Swift 稱號彷佛底氣不足,更像是一種美好的願望。那麼在 201七、2019 兩屆的 Google I/O 之後,這個說法能夠站住腳了。
3 Kotlin 真比 Java 強?
許多新語言的出現彷佛都是源於對某種其它語言的厭倦,Kotlin 看上去也是如此。但在 JetBrains 看來,Kotlin 項目的原始動機就是爲了提高生產力。JetBrains 開發者支持組組長 Hadi Hariri 在接受 InfoQ 採訪時表示:
」儘管當時咱們已經開發了對幾種基於 JVM 的編程語言的支持,咱們仍是基本都在 Java 環境下寫基於 IntelliJ 的 API。IntelliJ 開發系統是基於 Groovy 和 Gant 的,Groovy 也用於測試,RubyMine 中還有一些 JRuby 代碼,狀況就是如此。咱們但願轉向更具表現力的語言從而提升生產力。同時,咱們不能接受在 Java 互操做性或編譯速度方面的妥協。「
Kotlin 與 Java 老是在主觀比較
「Kotlin 比 Java 好」,「Kotlin 可讀性比 Java 強」,「Kotlin 開發速度比 Java 快」,相似這樣的陳述缺乏相關準確數據的支持,因此都歸爲主觀見解一類。
主觀見解是個體開發人員在對與 Kotlin 或 Java 相關的主題做出一個或多個主觀判斷時造成。
開發人員的主觀判斷存在以下問題:
因爲沒有與主觀判斷相關聯的量化指標,創建在這些判斷基礎上的觀點只是反映出了開發人員以前就有的偏見。不一樣的開發人員可能有着大相徑庭的偏見,所以,有開發人員認爲 Kotlin 是不錯(或糟糕)的 Java 替代者並不意味着其餘開發人員也這麼認爲。
並且,因爲沒有客觀指標,主觀分歧就沒法客觀地消除,這常常會致使「口水戰」。
相較於 Java,Kotlin 的確在一些方面有較大優點:效率高、易維護、可靠、簡單易學。在一些特定場景下,許多 Java 開發者由於某些方面的問題選擇了切換到 Kotlin:好比受夠了 Java NullPointerException 的人都喜歡 Kotlin 的 Null 安全特性;擴展函數被大量使用;除了擴展 Java 類,人們也經常將 Java 代碼遷移到 Kotlin。
根據英國軟件公司 Pusher 的調查數據顯示,在樣本數 2744 人的調查中,超過 87% 的受調者已經完成了遷移。他們有的使用了遷移向導,有的直接手動修改代碼。超過四分之一的受調者遷移到 Kotlin 後又回到了 Java。有技術方面的緣由,也有組織方面的緣由。其中使用了反射或代碼生成的工具是被說起最多的因素。
Java 依舊是編程語言排行榜上的第一名。但 Java 是最好的語言麼?不是,由於在每一個領域都有更合適的編程語言。
那麼,Java 語言到底有什麼優點能夠佔據排行榜第一的位置呢?
綜合而言,Java 語言全能方面是最好的。但一樣能夠看到,Android 社區擁抱 Kotlin 的速度愈來愈快,也許有一天,在 Android 世界裏,咱們會看到 Kotlin 對 Java 的超越。
4 爲何谷歌會支持 Kotlin?
免責聲明:如下內容純屬基於既有事實合理推測,毫無任何實錘。
還記得谷歌與 Oracle 曠日持久的 Java 侵權案嗎?這個持續時間長達 八、9 年的紛爭目前以谷歌敗訴爲最新結局,其須要向 Oracle 賠償 88 億美圓。(編者注:在過去幾年時間裏,幾回裁決分別判兩家公司勝訴或敗訴。今年 1 月份,谷歌不服判決上訴美國最高法院作最終裁決。)
事件的原由是在 2010 年,做爲 Java 擁有者的 Oracle 認爲,谷歌在 Android 系統上免費使用了 37 個 Java APIs,這侵犯了他們的專利,而在 Android 中還有 9 行代碼抄襲了 Java,這侵犯了他們的版權。
那 9 行代碼形成抄襲的原因聽說是由於當時谷歌的一位工程師在爲 Android 項目工做的同時,又爲 Sun 公司的 OpenJDK 效力,後來,該工程師直接從 OpenJDK 中複製了 9 行代碼到 Android 中,因爲 Google 沒有獲得 Sun 公司的受權,因此 Oracle 收購 Sun 以後,Java 易主,這就至關於侵犯了 Oracle 的版權。
而對於那 37 個 Java APIs,雙方互不相讓,谷歌認爲 API 不該受版權保護,而 Oracle 則認爲 谷歌對其的使用具備很強的商業性,再加上用 Java 寫的 Android 代碼沒法在 JVM 上運行,這對 Java 語言是一種分裂,同時 Oracle 認爲,Android 經過不當使用 Java API 擠佔了 Java ME 可能的市場,這是它鉅額索賠的根基。
2016 年初,Google 發言人表示,Android N(7.0) 再也不沿用現有的 Java APIs 內容,而是遷移至基於 OpenJDK 的方法,爲開發者建立一個通用代碼庫。雖然無法規避 Java APIs 官司,但至少能夠減小潛在的可能糾紛。
到了 2017 年的 Google I/O 大會,Google 宣佈 Kotlin 成爲 Android 開發的一級語言,能夠說對 Kotlin 寄予了厚望。此後,Kotlin 也被開發者視爲 Java 的替代品。
在以後的一年時間裏,Google 能夠說把 Kotlin 當親兒子看待,爲何這麼說呢?讓咱們來梳理這一年 Google 爲 Kotlin 作了什麼:
這些都是 Google 逐漸向 Kotlin 靠攏的證據,雖然還不至於讓 Kotlin 徹底取代 Java,但不難看出 Google 的「偏愛」。事實上,Kotlin 本身也很是爭氣:2017 年 11 月,在第一屆 Kotlin 專題大會 KotlinConf 上,Kotlin 首席設計師 Andrey Breslav 宣佈 Kotlin 將支持 iOS 開發和 Web 開發,這意味着 Kotlin 向全平臺開發邁出了重要的一步。
Kotlin 目前正處於發展的初始階段,還有不少成長的空間。Google 如今是把它當成 Android 黃昏時期的救命稻草,它能與 Java 100% 互通,但它存在的目的並非爲了取代 Java,只是爲了讓開發者有多種選擇。雖然說編程語言只是軟件實現的一種工具,開發者不管選擇哪一種語言都沒有絕對的對與錯。但在互聯網時代,開發者應該懂得審時度勢,擁抱變化,才能走得更遠。