iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Mobile Development

Kotlin 全面啟動 系列 第 3

[Kotlin 全面啟動] KMM

  • 分享至 

  • xImage
  •  

前一篇我們提到了雖然我們一般所理解的 Kotlin 只是 JVM 生態系下的一個語言,但身為一家眾多熱門 IDE 的開發公司 - JetBrains 慢慢瞭解到 Kotlin 其實可以作為一個通用型的現代程式語言,只要 compile 後可以轉成其他平台支援的格式,並沒有強制限制 Kotlin 只能跑在 JVM 上的理由。

Write Once, Run Every-Platform

熟悉 Java 的朋友們都知道 Java 有個很好的口號是 Write Once, Run Everywhere,而 Kotlin 則想把這個概念發揮的更極致,Write Once, Run Every-Platform,Kotlin/Native、Kotlin/JS 就是把 Kotlin 的程式直接 compile 成為其他平台的工具,而 KMM 就是 Kotlin/JVM 跟 Kotlin/Native 和在一個專案的形式,主要著重在 Android 與 iOS 開發,但 KMM 之上還有個超集合叫做 KMP 不論是 Android、iOS、Web、Windows 其實都可以使用 Kotlin 進行部分的開發,當我們學會了 KMM 之後,其實轉換到 KMP 的概念基本上也都是一樣的。

https://ithelp.ithome.com.tw/upload/images/20220917/20120419PVPfRqQ4XH.png

KMM

但跨平台工具這麼多,KMM 的概念是什麼?到底是哪裡不一樣?有機會可以從這麼多種工具中脫穎而出嗎?那我們就需要先了解 KMM 的核心概念是什麼!

https://ithelp.ithome.com.tw/upload/images/20220917/20120419DSzV1qq9lG.png

如上圖所示,KMM 中跨平台的部分在於商業邏輯層,因為 compiler 在 compile 的時候把 Kotlin 都轉成該平台需要的 binary 了,在 UI 層則還是可以使用原始平台的語言以及元件跟邏輯層溝通。這讓 KMM 跟其他一般的跨平台解決方案比如 Flutter、React 等有著本質上的差別,而且在邏輯層其實也可以分平台來實現不同的實作,提供了更多的彈性給開發者。

只在邏輯層共用首先想到的好處是我們可以保證 UI 的效能一定是最好的,不管平台怎麼升級也都能在第一時間使用你想使用的新 UI 元件,而不像其他跨平台工具可能需要等工具更新,提供最好的 UX 給你的使用者。另外因為直接使用 Kotlin 開發,Android 的程式碼可以完全保留,只是放在不同的位置而已,也可以依照你的速度逐步的轉移,真的失敗的話你也只需要再補上 iOS 的邏輯層就可以再分成二個專案了,雖然說不在本系列文章所要探討範圍,但 KMM 也可以持續擴充,因為邏輯層是共用的,有需要的話只要加入其他 platform 的 UI 就可以支援更多平台,是個進可攻、退可守的技術。

但剛學的時候也是需要些適應期的,最明顯的差別就是切出了很多層,要在這多層架構中切換有點複雜,但現代軟體尤其是以大型的軟體架構來說,分層其實是很常見的一種手段,而邏輯層跟 UI 分離也是 mobile 開發的一大主流,這同時也考驗著讀者的功力,該怎麼讓 KMM 的分層跟你 App 的分層能夠完美的融合在一起?

不過 KMM 是否接下來能夠成為主流呢?或許現在談論還太早,但跟其他公司推動跨平台工具背後的立意相比,作為 IDE 開發商,推廣自己設計的語言以及工具,對於他們來說是有更大的商業價值的。不過未來的事誰也說不準,最近"讓子彈飛"又紅了起來,就讓我們一起來看看 KMM 能夠飛多久、多高吧~~


上一篇
[Kotlin 全面啟動] Kotlin
下一篇
[Kotlin 全面啟動] KMM Stability Status
系列文
Kotlin 全面啟動 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言