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

Kotlin Multiplatform

Kotlin Multiplatform

Kotlin Multiplatform iOS development

58d1281770fe55a05a96600244ec8341?s=128

Kevin Galligan

August 16, 2018
Tweet

Transcript

  1. Kotlin Multiplatform

  2. @allymcleangames

  3. Hello

  4. • Kevin Galligan, President of Touchlab • I’ve been coding

    Android since before the G1, run a mobile dev shop, and since late 2015 have been largely focused on mobile code sharing • I’m going to tell you about Kotlin Multiplatform
  5. None
  6. Kotlin?

  7. • Static “Better Java” by Jetbrains • 2011 - Announced

    • 2016 - v1.0 • 2017 - Google++
  8. None
  9. JVM JS Native

  10. JVM JS Native Common

  11. None
  12. Native

  13. Native Not Native

  14. Native Not Native - Me(h)tal Not Native - Rock

  15. None
  16. –Lemmy Kilmister “It’s Little Richard’s fault, all of it. Little

    Richard is directly responsible for Motorhead.”
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. • Shared, testable architecture (not UI) • Smooth interop, optional

    code sharing • Active community • Good tools • Bonus! One platform 100% native K O T L I N M U L T I P L A T F O R M
  28. None
  29. None
  30. None
  31. I Can’t See The Future

  32. safe bets

  33. None
  34. None
  35. None
  36. JVM JS Native Common

  37. JVM JS Native Common

  38. JVM Native Common

  39. JVM Native Common Android Stuff Framework iOS Stuff

  40. Common

  41. Common mainThread?

  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. None
  49. Typealias

  50. None
  51. None
  52. Expected a method, was actually there!

  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. None
  61. None
  62. Status

  63. Kotlin/Native at .9

  64. Tooling

  65. Speed

  66. Libraries

  67. None
  68. None
  69. None
  70. None
  71. None
  72. None
  73. None
  74. None
  75. None
  76. None
  77. None
  78. None
  79. None
  80. None
  81. • 5 React Native • 3 Flutter • 4 Kotlin

    Multiplatform • ~20% of the content! Cross Platform Droidcon
  82. • Serialization • Ktor • I/O • Coroutines Jetbrains

  83. Threads

  84. State

  85. all the code you’ve ever written not frozen frozen

  86. all the code you’ve ever written not frozen frozen

  87. Frozen is • A special runtime state • Like super-immutable

    • Only way to share data between threads
  88. Data OtherMutable OtherShared Stuff MoreStuff

  89. Data OtherMutable OtherShared Stuff MoreStuff

  90. None
  91. None
  92. None
  93. None
  94. None
  95. None
  96. None
  97. It works!

  98. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2
  99. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs)
  100. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs)
  101. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs)
  102. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs) v1
  103. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs) v1 Major reactive lib Date/other libs Improved tooling Faster builds
  104. Q3 Q2 Q4 Q1 Q2 2018 2019 0 .6 v0.7

    v0.8 v0.8.2 v0.9 Coroutines (and other libs) v1 Major reactive lib Date/other libs Improved tooling Faster builds “Mainstream” Big apps Wasm threads
  105. 2010 ORMLite ActiveAndroid

  106. 2010 ORMLite ActiveAndroid :P

  107. 2010 ORMLite ActiveAndroid :P 2018 ORMLite SQLBright SQLDelight Storeio Room

    Cupboard SugarORM GreenDAO DBFlow Squeeky Ollie Requery Squidb
  108. 2018 Knarch.db SQLDelight 2025? MPSettings Jetbrains stuff

  109. None
  110. kevin@touchlab.co @kpgalligan

  111. kevin@touchlab.co @kpgalligan Discount code: AndroidSummit