Slide 1

Slide 1 text

Kotlin Multiplatform Kódmegosztás pragmatikusan Braun Márton Developer Advocate JetBrains

Slide 2

Slide 2 text

iOS Android Desktop Web Server

Slide 3

Slide 3 text

iOS Android Desktop Web Server

Slide 4

Slide 4 text

kotl.in/kmp-case-studies

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Projekt kezdete

Slide 8

Slide 8 text

Projekt kezdete Kotlin/JVM .kt .class Java .java .class

Slide 9

Slide 9 text

Nyilvános bejelentés Projekt kezdete Open source Kotlin/JVM .kt .class Java .java .class

Slide 10

Slide 10 text

Nyilvános bejelentés Projekt kezdete Open source Kotlin/JVM .kt .class Kotlin 1.0

Slide 11

Slide 11 text

Kotlin 1.0 Nyilvános bejelentés Projekt kezdete Open source JavaScript Kotlin/JVM .kt .class Kotlin/JS .kt .js

Slide 12

Slide 12 text

Kotlin 1.0 Nyilvános bejelentés Projekt kezdete Open source Native JavaScript Kotlin/JVM .kt .class Kotlin/Native .kt .klib|.kexe Kotlin/JS .kt .js

Slide 13

Slide 13 text

Kotlin 1.0 Nyilvános bejelentés Projekt kezdete Open source Native JavaScript KMP stable

Slide 14

Slide 14 text

Kotlin 1.0 Nyilvános bejelentés Projekt kezdete Open source Native JavaScript KMP stable Wasm Kotlin/JVM .kt .class Kotlin/Native .kt .klib|.kexe Kotlin/JS .kt .js Kotlin/Wasm .kt .wasm

Slide 15

Slide 15 text

Jetpack KMP Kotlin first Java + Kotlin Kotlin 1.0 Nyilvános bejelentés Projekt kezdete Open source Native JavaScript KMP stable Wasm

Slide 16

Slide 16 text

iOS Android Desktop +

Slide 17

Slide 17 text

Desktop + Android iOS .kt .kt .class .framework

Slide 18

Slide 18 text

iOS .class .framework Desktop + Android .kt .kt

Slide 19

Slide 19 text

Common .kt .kt

Slide 20

Slide 20 text

.kt .kt .kt .kt Android Desktop iOS Common

Slide 21

Slide 21 text

.kt .kt .kt .kt Android Desktop iOS Common

Slide 22

Slide 22 text

.kt .kt .kt .kt Android Desktop iOS Common

Slide 23

Slide 23 text

.kt .kt .kt Android Desktop iOS Common .kt

Slide 24

Slide 24 text

.kt .kt .kt .kt Android Desktop iOS Common

Slide 25

Slide 25 text

.kt .kt .kt Android Desktop iOS Common class Person(val name: String, var age: Int) fun greet(person: Person) { println("Hello, ${person.name}") }

Slide 26

Slide 26 text

.kt .kt .kt Android Desktop iOS Common fun List.duplicates(): Map { return map { it.name.substringBefore(" ") } .groupingBy { it } .eachCount() .filter { (name, count) -> count > 1 } }

Slide 27

Slide 27 text

Android Desktop iOS actual Common expect actual actual

Slide 28

Slide 28 text

Android Desktop iOS Common expect actual actual actual

Slide 29

Slide 29 text

Android Desktop iOS Common fun getPlatform(): String expect actual actual actual

Slide 30

Slide 30 text

Android Desktop iOS Common fun getPlatform(): String fun getPlatform(): String = "Java ${System.getProperty("java.version")}" expect actual actual actual

Slide 31

Slide 31 text

Android Desktop iOS Common fun getPlatform(): String fun getPlatform(): String = "Java ${System.getProperty("java.version")}" fun getPlatform(): String = "Android ${Build.VERSION.SDK_INT}" expect actual actual actual

Slide 32

Slide 32 text

Android Desktop iOS Common fun getPlatform(): String fun getPlatform(): String = "Java ${System.getProperty("java.version")}" fun getPlatform(): String = "iOS ${UIDevice.currentDevice.systemVersion}" fun getPlatform(): String = "Android ${Build.VERSION.SDK_INT}" expect actual actual actual

Slide 33

Slide 33 text

Multiplatform libraries

Slide 34

Slide 34 text

github.com/terrakok/kmp-awesome

Slide 35

Slide 35 text

.kt .kt .kt Android Desktop iOS Common import io.ktor.client.* suspend fun loadHtml(): String { val client = HttpClient() val response = client.get("https://kotlinlang.org") return response.body() }

Slide 36

Slide 36 text

Shared logic

Slide 37

Slide 37 text

Shared logic Swing Desktop logic Android Views Android logic SwiftUI iOS logic

Slide 38

Slide 38 text

Shared logic Swing Desktop logic Android Views Android logic SwiftUI iOS logic

Slide 39

Slide 39 text

Shared logic Swing Desktop logic Android Views Android logic SwiftUI iOS logic

Slide 40

Slide 40 text

Compose Multiplatform jb.gg/compose

Slide 41

Slide 41 text

Compose Multiplatform jb.gg/compose

Slide 42

Slide 42 text

Swing Desktop logic Android Views Android logic SwiftUI iOS logic Shared logic

Slide 43

Slide 43 text

Desktop logic Android logic iOS logic Shared logic Shared UI Compose Multiplatform

Slide 44

Slide 44 text

Desktop logic Android logic iOS logic Shared logic Shared UI Compose Multiplatform Swing Android Views SwiftUI

Slide 45

Slide 45 text

Preview

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

Kotlin alapú szoftverfejlesztés VIAUAV41 Free Educational Licenses jb.gg/edulicense Kotlin Multiplatform jb.gg/kmp Compose Multiplatform jb.gg/compose Fleet jb.gg/fleet Kotlin Multiplatform Kódmegosztás pragmatikusan zsmb.co/talks Braun Márton [email protected]