Kotlin 的雛型從 2011 年開始,JetBrains 試圖在 Android project 中替換 Java,然而當時除了 Scala 外,沒有其他語言符合需求,但是 Scala 的缺點就是編譯速度太慢,因此 JetBrains 決定開發出具有 Scala 特性但不會增加編譯時間的程式語言,因此 Kotlin 誕生了。
因為是要替換掉 Java ,因此 Kotlin 符合 Object-oriented 與 Strongly typed 特性,它在 JVM 中執行,這也使其可以與 Java 100% 互相操作。
Kotlin 的開發定位是要支援多平台,因此可以用來開發 mobile-app, server-side 或是 desktop application
Kotlin 與 Java 可以完全兼容,因此可以在 Kotlin 中直接呼叫 Java code 與 library ,舊有的 Java 專案可以與 Kotlin 共存。另外 Java code 也可以很容易的轉換成 Kotlin style ,因此可以非常快速的重構 Java 專案,變成完全 Kotlin 開發
過去大多數都是使用 Java 來開發 Android ,但在 Google I/O 2017 上, Google 宣佈將 Kotlin 加入開發 Android 的官方支援語言之一,因此許多 Android 開發者開始擁抱 Kotlin ,而 Kotlin 還有一個強大的地方是可以把程式碼編譯成 iOS App ,因此在跨平台開發上也是非常適合
Kotlin 與 JavaScript也可以完全相容,可以用來做網頁開發,另外 Jetbrain 有為 Kotlin 開發一款 Backend framwork - Ktor ,因此 Server 端也可以用 Kotlin 開發
因為 Kotlin 可以編譯成 native binary file ,因此可以在多平台上執行( Windows, Linux, iOS, and MacOS )且不需要 Virtual machine 的支援
在 Google 近幾年的力推下, Kotlin 成功拿下
GitHub貢獻者成長最快速的語言之一
我今年也開始使用 Kotlin 開發 Android Project ,會轉換的原因有幾個,其中最主要的是 Google 對 Kotlin 的推動與支援不遺餘力,甚至將 Kotlin 直接加入 Android Studio 3.0 之後的內建支援。而在使用 Java 開發的 Library , Kotlin 也能夠呼叫與操作,因此開發者也不用去擔心語言相容問題。另外 JetBrains 在開發 Kotlin 同時,也解決許多 Java 詬病的問題,例如加入 NullSafty 解決 NullPointerException 、能夠輕易的使用 Extension function 、更好的操作 lambda function 、利用 Smart cast 轉型...等等問題。
因此如果你問我 Kotlin 是否會取代 Java ? 其他的領域我不敢下定論,畢竟很多已經運行很久的產品都是用 Java 開發,目前都在穩定的運行,但有可能會在導入 Kotlin 後產生一些影響穩定性的問題,但以 Android 開發而言,目前我觀察下來是非常有可能的。
Kotlin 、 MVVM 、 Room 等等開發 App 的架構也是我今年初才開始學習,因此這次的系列文章更偏向自我的知識重新內化和整理。