The Future of Cross-Platform is Native

The Future of Cross-Platform is Native

The quest for the perfect cross-platform solution has been like the quest for the Holy Grail. It’s been going on a long time, there are a myriad of perceived benefits, and every time someone claims to have found it, it’s never the right one. Many people ask, “Should I go with a cross-platform solution, or a native solution?” but the reality is the quest is bringing us closer to a solution where there isn’t a meaningful difference.

React Native wasn’t the first to show a solution could be both cross-platform and native, but it has certainly convinced a lot of people. As many of those early converts are discovering the limitations, they are beginning to fall back into either-or thinking. Maybe they just have the wrong assumptions.

Kotlin Multiplatform makes some new assumptions and, although it wasn’t the first to do so, is gaining in popularity very quickly. Is Kotlin Multiplatform the holy grail of cross-platform? Probably not. But it does bring cross-platform and native closer than ever before.

----

Presented at https://newyork2019.theleaddeveloper.com/
Video: https://www.youtube.com/watch?v=sA_JIqqj9js
Thank you https://touchlab.co/ for supporting me and the future of mobile.

9af42db72a3eed71a6065317bad4c527?s=128

Justin Mancinelli

April 30, 2019
Tweet

Transcript

  1. 2.
  2. 7.
  3. 13.
  4. 14.
  5. 15.
  6. 16.
  7. 17.
  8. 18.
  9. 19.
  10. 20.
  11. 21.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Other Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input
  12. 22.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Other Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input
  13. 23.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Other Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input
  14. 24.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Other Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input
  15. 25.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Other Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input
  16. 26.

    Web PWA Dedicated Generic Native Hybrid Native Code Native Container

    Native Language Cross-Compile Trans-Compile Native Language Include Runtime Interpreter, VM, Libraries App Type Output Process Input Ionic Other Language HTML/CSS/JS
  17. 27.

    Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input React Native Other Language JS Include Runtime Interpreter, VM, Libraries Hybrid Native Container
  18. 28.

    Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input Xamarin Other Language C# Include Runtime Interpreter, VM, Libraries Hybrid Native Container Android iOS
  19. 29.

    Web PWA Dedicated Generic Native Native Code Native Language Cross-Compile

    Trans-Compile Native Language App Type Output Process Input Flutter Other Language Dart Include Runtime Interpreter, VM, Libraries Hybrid Native Container
  20. 30.

    JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  21. 31.

    JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  22. 32.

    JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  23. 33.

    JS/Wasm Include Runtime Interpreter, VM, Libraries Web PWA Dedicated Generic

    Native Hybrid Native Code Native Container Cross-Compile Trans-Compile App Type Output Process Input Kotlin Multiplatform Other Language Native Language Kotlin Android Web iOS
  24. 37.

    VM/Interpreter Web Native Hybrid Xamarin Android Responsive Web Cordova Traditional

    Android React Native Xamarin iOS Flutter Android/iOS Traditional iOS
  25. 38.

    VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS
  26. 39.

    VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS Wasm
  27. 40.

    VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android Traditional iOS React Native Flutter Android/iOS PWA Wasm KMP Android KMP Wasm KMP JVM KMP JS KMP iOS
  28. 41.
  29. 42.

    Developers developing, Designers designing, Researchers researching, Managers managing Tools •

    Android Studio, Xcode, Visual Studio, Atom • Platform specific APIs, General Libraries • Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++ The Platform • Machine Code, JVM, JavaScriptCore, V8 • Platform Services (Location, Graphics, Audio, Network, Storage, Auth, Permissions, Gestures, Notifications, etc) iOS Android Web Users of the platform
  30. 43.

    Developers developing, Designers designing, Researchers researching, Managers managing Tools •

    Android Studio, Xcode, Visual Studio, Atom • Platform specific APIs, General Libraries • Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++ The Platform • Machine Code, JVM, JavaScriptCore, V8 • Platform Services (Location, Graphics, Audio, Network, Storage, Auth, Permissions, Gestures, Notifications, etc) iOS Android Web Users of the platform
  31. 44.

    Developers developing, Designers designing, Researchers researching, Managers managing Tools •

    Android Studio, Xcode, Visual Studio, Atom • Platform specific APIs, General Libraries • Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++ The Platform • Machine Code, JVM, JavaScriptCore, V8 • Platform Services (Location, Graphics, Audio, Network, Storage, Auth, Permissions, Gestures, Notifications, etc) iOS Android Web Users of the platform
  32. 45.

    Developers developing, Designers designing, Researchers researching, Managers managing Tools •

    Android Studio, Xcode, Visual Studio, Atom • Platform specific APIs, General Libraries • Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++ The Platform • Machine Code, JVM, JavaScriptCore, V8 • Platform Services (Location, Graphics, Audio, Network, Storage, Auth, Permissions, Gestures, Notifications, etc) iOS Android Web Users of the platform
  33. 46.

    Developers developing, Designers designing, Researchers researching, Managers managing Tools •

    Android Studio, Xcode, Visual Studio, Atom • Platform specific APIs, General Libraries • Kotlin, Java, Swift, Objective-C, JavaScript, C#, C++ The Platform • Machine Code, JVM, JavaScriptCore, V8 • Platform Services (Location, Graphics, Audio, Network, Storage, Auth, Permissions, Gestures, Notifications, etc) iOS Android Web Users of the platform
  34. 50.

    Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Web
  35. 51.

    Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Android
  36. 52.

    Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS
  37. 53.

    Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS near future
  38. 54.

    Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  39. 55.

    Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  40. 56.

    Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP Kotlin Native Interop Generics
  41. 57.

    Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP Ktor SqlDelight Stately Kotlin-Multiplatform-Firebase
 and more
  42. 60.

    Fully Native Multiplatform Algol68C 50’s & 60’s 70’s 80’s C

    XLT86 Operating Systems IBM PC Intel 8086 Algol OS Era
  43. 61.

    HTML 90’s 2000’s Partially Native Multiplatform Netscape Fully Native Multiplatform

    IE Win/Mac Opera JavaScript Java Flash Mozilla/Firefox Safari CSS Web Era
  44. 62.

    Hybrid iPhone 2000’s 2010’s Adobe Air Responsive Web Chrome, V8

    Android NodeJS Cordova Appcelerator Mobile Era Partially Native Multiplatform Fully Native Multiplatform
  45. 63.

    Hybrid 2010’s Xamarin PWA React Native Modern J2objc RoboVM Flutter

    Wasm RIBs Kotlin Multiplatform Modern Era PWA
 +
 Wasm
 ? Partially Native Multiplatform Fully Native Multiplatform
  46. 64.
  47. 69.

    Other Solutions Native UX Native Performance Native Interop Lower Performance

    Slower Innovation Poor UI Vendor Lock-in Kotlin Multiplatform
  48. 70.

    Kotlin Multiplatform Lower Performance Other Solutions Native Dev Experience Native

    UX Native Performance Native Interop Slower Innovation Poor UI Vendor Lock-in
  49. 74.

    Your Homework • Watch related conference talks • Clone some

    projects • Contribute to and be supported by the community
  50. 75.

    Your Homework • Watch related conference talks • Clone some

    projects • Contribute to and be supported by the community • Talk to Touchlab Justin Mancinelli justin@touchlab.co @piannaf