KMM 是 Kotlin Multiplatform Mobile 的簡稱,所以在正式進入 KMM 主題之前,我想我們應該先好好談談 Kotlin 這個語言本身。但因為在 Android 十全大補的書中,我們已經聊了蠻多使用 Kotlin 的好處以及優點,所以這次我想著重在 Kotlin 的歷史與優勢。
如果讀者沒什麼概念的話,Kotlin 是由 JetBrains 這家專門做 IDE 的軟體公司在 2011 所開發的,一開始是因為 JetBrains 開發的這些 IDE 都是用 Java 寫的,內部大量依賴 Java 語言做開發,但因為 Java 存在蠻多包袱的,寫起來的效率不是那麼好、又很容易寫出小問題(ex: NullPointerException),在沒有更適合的替代方案下 (Groovy 跟 Scala 很可惜都不適用於他們的情境),最後決定自己開發一門新的語言。
所以 Kotlin 可以說是由一家非常了解 Java 特性的公司所開發,從第一天設計的目標就是必須 100 % 跟 Java 可相互轉換的,而且作為一個現代語言,Kotlin 吸收了許多程式開發的良好規範,nullable、val 與 var,higher order functions 等這些特性,可以說讓 Kotlin 變成一個比 Java 還要更好的 Java。也讓 Google 在 2017 的 Google IO 宣佈了 Kotlin 將會取代 Java,成為 Android 開發的首要支援語言,可以說在 2022 年學習 Android 開發還不使用 Kotlin 可能就跟不上世界了。
除了稱霸 Android 開發之外,身為 JVM 生態系下的一員,其實 Kotlin 也是可以寫 Java based 的 backend,Kotlin 也用 Kotlin 開發了前後端通包的連線 framework - Ktor,讓大家可以用相同語言/框架一次解決連線的問題,但後端實在有太多選擇百家爭鳴,沒有像 Google 這樣強而有力的推手下,目前在 backend 的領域裡應該還在努力提升市占率中。
但 Kotlin 也並沒有止步在 JVM 的世界裡,KMM (Kotlin Multiplatform Mobile) 以及 KMP (Kotlin Multiplatform) 讓 Kotlin 可以直接 compile 成其他平台互通的格式,讓 Write once, run every where 提升到另一種層次。這樣聽起來是不是覺得學 Kotlin 超划算的呢,請持續關注本系列文章,接下來我們將正式介紹 KMM。
對 Kotlin 有興趣的話,以下這些網站也歡迎大家多多使用:
https://tw.kotlin.tips/
https://www.facebook.com/kotlintwn/
https://play.kotlinlang.org/