$30 off During Our Annual Pro Sale. View Details »

Code sharing with Kotlin multi-platform

Code sharing with Kotlin multi-platform

One IOS app, one android app and one web app. Three clients, three code bases implementing the same features (almost) and with three times the amount of bugs.
Not that bad. we are all doing it for years. But more and more companies are trying to unify the clients.
The kotlin's team came up with a solution that is for me the scenario with the less trade-offs. Use the tools you love but share what what is common.

Souleymane Sidibe

April 24, 2020
Tweet

More Decks by Souleymane Sidibe

Other Decks in Programming

Transcript

  1. @soulesidibe
    Code sharing with
    Kotlin multi-platform
    Use the tools you love but share what is common

    View Slide

  2. Agenda
    • Kotlin Multiplatform
    • A demo
    • Questions

    View Slide

  3. Client Side development

    View Slide

  4. Client Side development
    Android IOS Web

    View Slide

  5. Client Side development
    Android IOS Web
    Java 6/7/8

    View Slide

  6. Client Side development
    Android IOS Web
    Java 6/7/8
    Kotlin

    View Slide

  7. Client Side development
    Android IOS Web
    Java 6/7/8
    Kotlin
    Objectif-C

    View Slide

  8. Client Side development
    Android IOS Web
    Java 6/7/8
    Kotlin
    Objectif-C
    Swift

    View Slide

  9. Client Side development
    Android IOS Web
    Java 6/7/8
    Kotlin
    Objectif-C
    Swift
    JavaScript

    View Slide

  10. Client Side development
    Android IOS Web
    Java 6/7/8
    Kotlin
    Objectif-C
    Swift
    JavaScript

    View Slide

  11. Client Side development
    Android IOS Web

    View Slide

  12. Client Side development
    Android IOS Web
    UI

    View Slide

  13. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC

    View Slide

  14. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO

    View Slide

  15. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Backend

    View Slide

  16. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Backend

    View Slide

  17. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Backend

    View Slide

  18. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Backend

    View Slide

  19. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO

    View Slide

  20. Client Side development
    Android IOS Web
    UI
    IO
    UI UI
    IO IO
    Busines Busines Busines

    View Slide

  21. Client Side development
    Android IOS Web
    UI
    IO
    UI UI
    IO IO
    Busines Busines Busines
    • 1 set of features
    • 3 teams / plate-forms supported
    • 3 Codebases/implementations
    • 3x the amount of issues

    View Slide

  22. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO

    View Slide

  23. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO

    View Slide

  24. Client Side development
    Android IOS Web
    UI
    BUSINESS LOGIC
    IO

    View Slide

  25. Client Side development
    • Fast to build apps
    • Hot Reload
    • Easy to learn
    • Js Ecosystem
    • New programming language
    • It’s not native

    View Slide

  26. Kotlin Multiplatform

    View Slide

  27. Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Kotlin Multiplatform
    • Modern Programming language by Jetbrains
    • Concise, Safe, Interoperable
    • Great tooling
    • Server side
    • Android default language
    • Kotlin Native (Windows, Mac, IOS, Linux, WA)
    • Web development (react, node js, etc)

    View Slide

  28. Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Kotlin Multiplatform
    • Sharing Code Between Platforms

    View Slide

  29. Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Kotlin Multiplatform
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code

    View Slide

  30. Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Kotlin Multiplatform
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code

    View Slide

  31. Android IOS Web
    UI
    BUSINESS LOGIC
    IO
    Kotlin Multiplatform
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code
    UI UI

    View Slide

  32. Android IOS Web
    UI
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code
    UI UI
    BUSINESS LOGIC
    IO

    View Slide

  33. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO

    View Slide

  34. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    • Sharing Code Between Platforms
    Kotlin
    Common
    K
    otlin/JV
    M K
    otlin/JS
    Kotlin/Native
    ByteCode
    JS
    C
    ode
    Native Code
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    .aar
    .jar
    .framework
    optimized js

    View Slide

  35. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO

    View Slide

  36. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO

    View Slide

  37. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO

    View Slide

  38. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool

    View Slide

  39. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool

    View Slide

  40. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool

    View Slide

  41. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool

    View Slide

  42. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool

    View Slide

  43. Android IOS Web
    Native UI
    Jetpack
    Compose
    SPECIFIC CODE (if Needed)
    Kotlin Multiplatform: Sharing Code Between Platforms
    SWIFT UI,
    Objectif-C
    JS
    BUSINESS LOGIC
    IO
    • Gradle build tool
    StdLib Coroutines Serialization
    IO Date Doc

    View Slide

  44. CALM DOWN. I WILL NOT LIVE CODING
    DEMO

    View Slide

  45. Wrap up
    •Kotlin is a great programming language

    View Slide

  46. Wrap up
    •Kotlin is a great programming language
    •Jetbrains is a great tooling company

    View Slide

  47. Wrap up
    •Kotlin is a great programming language
    •Jetbrains is a great tooling company
    •Business logic writes once and runs everywhere

    View Slide

  48. Wrap up
    •Kotlin is a great programming language
    •Jetbrains is a great tooling company
    •Business logic writes once and runs everywhere
    •Code sharing force you re-think your architecture

    View Slide

  49. Wrap up
    •Kotlin is a great programming language
    •Jetbrains is a great tooling company
    •Business logic writes once and runs everywhere
    •Code sharing force you re-think your architecture
    •Performance

    View Slide

  50. Wrap up
    •Still in experimental

    View Slide

  51. Wrap up
    •Still in experimental
    •Limited number of multiplatform libs

    View Slide

  52. Wrap up
    •Still in experimental
    •Limited number of multiplatform libs
    •Not great for prototyping

    View Slide

  53. Wrap up
    •Still in experimental
    •Limited number of multiplatform libs
    •Not great for prototyping
    •Setup-build-deploy curve is tough for the firsts tries

    View Slide

  54. Wrap up
    source : KotlinConf 2019 Keynote

    View Slide

  55. Links
    kobiri.app/kotlinjs

    View Slide

  56. Links
    kobiri.app/kotlinjs

    View Slide

  57. Links
    kobiri.app/kmp_ios_and_android

    View Slide

  58. Links
    kobiri.app/venkat_kotlin

    View Slide

  59. Sources
    •https://www.jetbrains.com/lp/mobilecrossplatform/
    •kobiri.app/kotlinconf2019
    •kobiri.app/kotlinconf2018
    •https://play.kotlinlang.org/hands-on/overview
    •https://github.com/soulesidibe/MultiplatformApp

    View Slide

  60. Thank you!
    That’s it

    View Slide