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

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.

Justin Mancinelli

April 30, 2019
Tweet

More Decks by Justin Mancinelli

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. VM/Interpreter Web Native Hybrid Xamarin Android Responsive Web Cordova Traditional

    Android React Native Xamarin iOS Flutter Android/iOS Traditional iOS
  15. VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS
  16. VM/Interpreter Web Native Hybrid Xamarin iOS Xamarin Android Responsive Web

    Cordova Traditional Android React Native Flutter Android/iOS PWA Traditional iOS Wasm
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Web
  24. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: Android
  25. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS
  26. Technology Native to Developer Native to Platform Native to User

    Xamarin React Native Flutter KMP Changing Perspectives: iOS near future
  27. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  28. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP
  29. Changing Perspectives: iOS near future Technology Native to Developer Native

    to Platform Native to User Xamarin React Native Flutter KMP Kotlin Native Interop Generics
  30. 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
  31. Fully Native Multiplatform Algol68C 50’s & 60’s 70’s 80’s C

    XLT86 Operating Systems IBM PC Intel 8086 Algol OS Era
  32. 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
  33. Hybrid iPhone 2000’s 2010’s Adobe Air Responsive Web Chrome, V8

    Android NodeJS Cordova Appcelerator Mobile Era Partially Native Multiplatform Fully Native Multiplatform
  34. 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
  35. Other Solutions Native UX Native Performance Native Interop Lower Performance

    Slower Innovation Poor UI Vendor Lock-in Kotlin Multiplatform
  36. Kotlin Multiplatform Lower Performance Other Solutions Native Dev Experience Native

    UX Native Performance Native Interop Slower Innovation Poor UI Vendor Lock-in
  37. Your Homework • Watch related conference talks • Clone some

    projects • Contribute to and be supported by the community
  38. Your Homework • Watch related conference talks • Clone some

    projects • Contribute to and be supported by the community • Talk to Touchlab Justin Mancinelli [email protected] @piannaf