Kotlin Multiplatform :
Pour le mobile, et
plus si affinités !
12/04/2022
Table of content
2
01.
02.
03.
04.
05.
Kotlin
Kotlin Multiplatfom
Kotlin Multiplatfom for mobile
KMM vs other cross platform frameworks
Kotlin everywhere!
Kotlin
01.
Kotlin history
4
July 2011 February 2016 2017
Introduction
by JetBrains
Kotlin
1.0
Kotlin
1.1/1.2
October 2018
Kotlin
1.3
Coroutines
October 2020
Kotlin
1.4
“Quality
&
Performance”
Kotlin
1.6
November 2021
Kotlin target platforms
5
…
…
Kotlin
Multiplatform
02.
Kotlin Multiplatform
7
Kotlin JVM
• 100% interoperability with
Java
• Runs on JVM (or Dalvik/ART)
• Access to Kotlin Standard
Library for JVM, Java SE API
• Access common Kotlin stdlib
Kotlin Native
• C, Objective C, Swift
interoperability
• Runs on iOS, macOS,
Android, Windows, Linux
• Access to platform specific
API (ie. POSIX)
• Access common Kotlin stdlib
Kotlin/JS
• Javascript interoperability
• Runs where Javascript runs
• Access to DOM, HTML…
• Access common Kotlin stdlib
Kotlin Multiplatform
8
Kotlin JVM
• 100% interoperability with
Java
• Runs on JVM (or Dalvik/ART)
• Access to Kotlin Standard
Library for JVM, Java SE API
• Access common Kotlin stdlib
Kotlin Native
• C, Objective C, Swift
interoperability
• Runs on iOS, macOS,
Android, Windows, Linux
• Access to platform specific
API (ie. POSIX)
• Access common Kotlin stdlib
Kotlin/JS
• Javascript interoperability
• Runs where Javascript runs
• Access to DOM, HTML…
• Access common Kotlin stdlib
Kotlin Multiplatform
9
Kotlin Standard Library
• Core types (Int, Array, Comparable…)
• Core functions (let(), apply(), getOrElse()…)
• Collection types (Iterable, Collection, List, Set, Map...)
• Some utils (String concatenation, print(),…)
Same limitations as if you take any language to an
new platform
cf. https://kotlinlang.org/api/latest/jvm/stdlib/index.html
Kotlin Multiplatform
10
• Run Kotlin code on multiple platforms (JVM/JS/Native)
• Langage interoperability with Swift/JS/...
• Mechanisms to create platform-specific implementations
• Tooling for targeted eco-system interoperability (Cocoapods, npm...)
Build libraries for targeted platforms
(.aar for Android, .framework for iOS, ...)
Kotlin
Multiplatform
for Mobile
03.
Why Kotlin Multiplatform: Mobile
12
Backend
Java/Kotlin Objective C/
Swift
Why Kotlin Multiplatform?
Mobile
13
Backend
UI UI
Domain
Data
Domain
Data {
}
Why Kotlin Multiplatform?
Mobile
14
Domain
Data
} Kotlin/Multiplatform
Why Kotlin Multiplatform?
Mobile
15
UI UI
Domain
Data
Kotlin/JVM
Kotlin/Native +
Swift Bindings
Domain
Data
Why Kotlin Multiplatform?
16
UI UI
Domain
Data
Kotlin/JVM Kotlin/Native +
Domain
Data Kotlin/Multiplatform
Kotlin/Android
Swift
Why Kotlin Multiplatform: Mobile
17
• Share non-UI code between an Android App and an iOS App
• Create a "SDK" for your Data layer (remote API) and Domain layer
Multiplatform
library (SDK)
Android
app
iOS
app
KMM vs
other cross platform
frameworks
04.
Other cross platform frameworks
19
20
21
JS eco-system
Dart eco-system
Native platform is
abstracted
"
E
m
p
t
y
"
i
O
S
A
p
p
Cross platform app
22
"
E
m
p
t
y
"
A
n
d
r
o
i
d
A
p
p
C
r
o
s
s
-
p
l
a
t
f
o
r
m
A
p
p
Native tools & documentation
23
cross-platform vs Kotlin Multiplatform
24
• Share non-UI code
Kotlin Multi-platform
+ Most apps can be cross-platform
+ One code base
- May reach cross-platform
abstractions limitations
+ 100% apps can use KMM
+ Easy integration into existing app
+ Native UI development
- at least 2 software teams needed
- More complex architecture
• Write one app, run it everywhere
Cross-platform
Kotlin
everywhere!
05.
Why Kotlin Multiplatform?
Code Sharing
26
UI
Domain
Data
Kotlin/Native +
UI
Kotlin/JVM
Domain
Data
Why Kotlin Multiplatform?
Code Sharing
27
UI
Domain
Data
Kotlin/Native +
UI
Kotlin/JVM
Domain
Data
UI
Domain
Data
Kotlin/JS
Why Kotlin Multiplatform?
Code Sharing
28
UI
Domain
Data
Kotlin/Native +
UI
Kotlin/JVM
Domain
Data
UI
Domain
Data
Kotlin/JS
UI
Domain
Data
Kotlin/Native
Why Kotlin Multiplatform?
Code Sharing
29
UI
Domain
Data
Kotlin/Native +
UI
Kotlin/JVM
Domain
Data
UI
Domain
Data
Kotlin/JS
UI
Domain
Data
Kotlin/Native
Why Kotlin Multiplatform?
Code Sharing
30
UI
UI
UI
UI
Why Kotlin Multiplatform?
Code Sharing
31
Common Models
Depends on
Depends on
( )
( )
Common Core
Depends on
Backend
Server
http/REST JVM
Thank you,
for your
attention.
Any questions?

20220412-kmp-humantalks.pdf