Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

. ¿Qué es Kotlin Multiplatform?

Slide 4

Slide 4 text

. ¿Qué es Kotlin Multiplatform? . Creando un proyecto desde cero

Slide 5

Slide 5 text

. ¿Qué es Kotlin Multiplatform? . Creando un proyecto desde cero . Ecosistema de Librerías

Slide 6

Slide 6 text

. ¿Qué es Kotlin Multiplatform? . Creando un proyecto desde cero . Ecosistema de Librerías . Demo y Conclusiones

Slide 7

Slide 7 text

Permite escribir código en Kotlin para múltiples plataformas Cada target puede tener su propia implementación Decidimos hasta dónde vamos a compa ir el código

Slide 8

Slide 8 text

h ps://www.jetbrains.com/kotlin-multiplatform/

Slide 9

Slide 9 text

: JVM / Android Native (iOS, macOS, Linux, Windows, etc.) JS / WASM (Browser, Node.js)

Slide 10

Slide 10 text

// Common expect class PlatformConfiguration { fun getPlatformName(): String } // Android actual class PlatformConfiguration { actual fun getPlatformName(): String = "Android" } // iOS actual class PlatformConfiguration { actual fun getPlatformName(): String = "iOS" }

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

UI

Slide 16

Slide 16 text

UI Architectura de UI

Slide 17

Slide 17 text

UI Architectura de UI Networking

Slide 18

Slide 18 text

UI Architectura de UI Networking Serialización

Slide 19

Slide 19 text

Asincronía

Slide 20

Slide 20 text

Asincronía Carga de imágenes

Slide 21

Slide 21 text

Asincronía Carga de imágenes Persistencia local

Slide 22

Slide 22 text

Asincronía Carga de imágenes Persistencia local Inyección de dependencias

Slide 23

Slide 23 text

Asincronía Carga de imágenes Persistencia local Inyección de dependencias Testing

Slide 24

Slide 24 text

:

Slide 25

Slide 25 text

: Compose: UI declarativa para Android, que ahora también sopo a Desktop, iOS (beta) y Web (alpha)

Slide 26

Slide 26 text

: Compose: UI declarativa para Android, que ahora también sopo a Desktop, iOS (beta) y Web (alpha) UIs nativas: Podemos compa ir lógica de aplicación, e implementar vistas nativas

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

:

Slide 29

Slide 29 text

: ViewModels de Architecture Components: Patrón MVVM Mismo código que se usa en Android Navegación con Navigation Compose

Slide 30

Slide 30 text

: ViewModels de Architecture Components: Patrón MVVM Mismo código que se usa en Android Navegación con Navigation Compose Voyager: Navegación para Compose También ofrece ViewModels

Slide 31

Slide 31 text

: ViewModels de Architecture Components: Voyager: Decompose: Patrón BLoC Funciona con UIs nativas

Slide 32

Slide 32 text

:

Slide 33

Slide 33 text

: Ktor Client: Cliente HTTP Sopo a corrutinas

Slide 34

Slide 34 text

: Ktor Client: Cliente HTTP Sopo a corrutinas Kto it: Wrapper sobre ktor Similar a Retro t para Android

Slide 35

Slide 35 text

:

Slide 36

Slide 36 text

: Kotlinx Serialization: Serialización/deserialización de datos Sopo a distintos formatos Se integra con Ktor

Slide 37

Slide 37 text

:

Slide 38

Slide 38 text

: Corrutinas: Sopo e para programación asíncrona Todo el API es multiplataforma Flows para manejar eventos asíncronos

Slide 39

Slide 39 text

:

Slide 40

Slide 40 text

: Coil: Carga de imágenes en CMP Sopo e para Web Multiplataforma

Slide 41

Slide 41 text

: Coil: Carga de imágenes en CMP Sopo e para Web Multiplataforma Kamel: Alternativa a Coil La primera para CMP

Slide 42

Slide 42 text

:

Slide 43

Slide 43 text

: SQLDelight: ORM para SQLite Más popular

Slide 44

Slide 44 text

: SQLDelight: ORM para SQLite Más popular Room: La de Android, ahora para KMP Sopo e en alpha (2.7.0-alphaXX)

Slide 45

Slide 45 text

: SQLDelight: ORM para SQLite Más popular Room: La de Android, ahora para KMP Sopo e en alpha (2.7.0-alphaXX) Realm: Solución NoSQL

Slide 46

Slide 46 text

: DataStore: Almacenamiento de preferencias Adaptado de Android

Slide 47

Slide 47 text

: DataStore: Almacenamiento de preferencias Adaptado de Android KStore: Almacenamiento en cheros JSON Sopo e para WASM

Slide 48

Slide 48 text

:

Slide 49

Slide 49 text

: Koin: Se está convi iendo en estándar Multiplataforma Muy fácil de usar

Slide 50

Slide 50 text

: Koin: Se está convi iendo en estándar Multiplataforma Muy fácil de usar Kodein: Alternativa a Koin API muy similar

Slide 51

Slide 51 text

:

Slide 52

Slide 52 text

: kotlinx.text: Desarrollar tests una vez Reutilizar en todas las plataformas

Slide 53

Slide 53 text

: kotlinx.text: Desarrollar tests una vez Reutilizar en todas las plataformas Kotest: Framework de testing Librería propia de Asse ions Prope y testing

Slide 54

Slide 54 text

: kotlinx.text: Desarrollar tests una vez Reutilizar en todas las plataformas Kotest: Framework de testing Librería propia de Asse ions Prope y testing Mokkery: Mocking framework

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

h ps://devexpe .io @devexpe _io @devexpe _io @antonioleiva.com