Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Brief History of Kotlin Multiplatform

A Brief History of Kotlin Multiplatform

Russell Wolf

December 02, 2023
Tweet

More Decks by Russell Wolf

Other Decks in Technology

Transcript

  1. Russell Wolf
    @RussHWolf ( or )
    A Brief History of
    Kotlin Multiplatform
    DevFest Boston
    Dec 2, 2023

    View full-size slide

  2. KMP vs KMM
    Kotlin Multiplatform

    View full-size slide

  3. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    History?

    View full-size slide

  4. In the beginning...

    View full-size slide

  5. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2012/01/kotlin-web-demo-is-out/

    View full-size slide

  6. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2012/01/the-road-ahead/

    View full-size slide

  7. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2012/01/the-road-ahead/

    View full-size slide

  8. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/

    View full-size slide

  9. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://github.com/JetBrains/kotlin/commit/6e2ef9b1d2d5834c69ca44567faac77dd5dad476

    View full-size slide

  10. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/

    View full-size slide

  11. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Note that we do not intend to make arbitrary Kotlin/
    JVM programs runnable on Kotlin/Native or Kotlin/
    JS. [...] We are going another way: providing a
    common language for all platforms while enabling
    creation of common libraries through seamless
    interoperability with platform code.
    https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview-kotlin-without-a-vm/

    View full-size slide

  12. KMP goes public

    View full-size slide

  13. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    KotlinConf 2017
    https://youtu.be/pjnHDXkeK-4?t=1599

    View full-size slide

  14. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2018/02/kotlinnative-v0-6-is-here/

    View full-size slide

  15. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2018/02/kotlinnative-v0-6-is-here/
    With v0.6 we brought Kotlin/Native
    multiplatform projects support, so same
    Gradle build could be used for different Kotlin
    backends, such as JVM, Native and JS.

    View full-size slide

  16. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://github.com/russhwolf/multiplatform-skeleton/commit/42f9cc9d1cd
    ff
    cbd92a2290df437dcbc266e7ed0

    View full-size slide

  17. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2018/04/kotlinnative-v0-7-released-smoother-interop-frozen-objects-optimisations-and-more/

    View full-size slide

  18. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://github.com/JetBrains/kotlin-native/releases/tag/v0.7
    Use Gradle native dependency model,
    allowing to use .klib as Maven artifacts

    View full-size slide

  19. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    SQLDelight / Knarch.db
    https://medium.com/@kpgalligan/sqlite-sqldelight-%EF%B8%8F-kotlin-multiplatform-f24fe7cba338

    View full-size slide

  20. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Multiplatform Settings
    https://github.com/russhwolf/multiplatform-settings

    View full-size slide

  21. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://github.com/e5l/http-client-common

    View full-size slide

  22. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    kotlinx.coroutines
    https://github.com/Kotlin/kotlinx.coroutines/releases/tag/0.24.0

    View full-size slide

  23. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  24. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Droidcon NYC 2018

    View full-size slide

  25. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://youtu.be/PsaFVLr8t4E

    View full-size slide

  26. The road to stable

    View full-size slide

  27. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  28. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Docs...?
    https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html

    View full-size slide

  29. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Multithreaded native coroutines
    https://github.com/Kotlin/kotlinx.coroutines/pull/1648

    View full-size slide

  30. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Prod usage!
    https://www.jetbrains.com/lp/mobilecrossplatform/

    View full-size slide

  31. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    New native memory manager
    https://blog.jetbrains.com/kotlin/2020/07/kotlin-native-memory-management-roadmap/

    View full-size slide

  32. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://kotlinlang.org/lp/mobile/

    View full-size slide

  33. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2021/08/compose-multiplatform-goes-alpha/

    View full-size slide

  34. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2021/08/try-the-new-kotlin-native-memory-manager-development-preview/

    View full-size slide

  35. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2021/12/compose-multiplatform-1-0-is-going-live/

    View full-size slide

  36. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://touchlab.co/droidcon-nyc-ios-app-with-compose/

    View full-size slide

  37. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2022/10/kmm-beta/

    View full-size slide

  38. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  39. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://www.youtube.com/watch?v=c4f4SCEYA5Q

    View full-size slide

  40. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2023/07/update-on-the-name-of-kotlin-multiplatform/

    View full-size slide

  41. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    https://blog.jetbrains.com/kotlin/2023/11/kotlin-multiplatform-stable/

    View full-size slide

  42. So where are we now?

    View full-size slide

  43. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  44. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  45. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  46. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  47. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

    View full-size slide

  48. Where do things go from here?

    View full-size slide

  49. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Increased KMP adoption

    View full-size slide

  50. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Compose Multiplatform and
    100% shared apps

    View full-size slide

  51. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Stabilizing more things

    View full-size slide

  52. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    Swift interop

    View full-size slide

  53. 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
    The next big thing?

    View full-size slide

  54. How to get started

    View full-size slide

  55. Helpful links
    • Get Started:

    https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html

    • New Project Wizard:

    https://kmp.jetbrains.com/

    • Case Studies: 

    https://www.jetbrains.com/help/kotlin-multiplatform-dev/case-studies.html

    • Webinars:

    https://www.youtube.com/watch?v=bz4cQeaXmsI

    View full-size slide

  56. Russell Wolf
    @RussHWolf ( or )
    Thanks! • Get Started:

    https://www.jetbrains.com/help/kotlin-
    multiplatform-dev/get-started.html

    • New Project Wizard:

    https://kmp.jetbrains.com/

    • Case Studies: 

    https://www.jetbrains.com/help/kotlin-
    multiplatform-dev/case-studies.html

    • Webinars:

    https://www.youtube.com/watch?
    v=bz4cQeaXmsI

    View full-size slide