Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CLASSHEROESNYC
Cross-platform :
Picking the best option for
your next iOS/Android app
Patrick Nollet (@PatrickNLT)
Lead Mo...
CLASSHEROESNYCCLASSHEROESNYC
CLASSHEROES
CLASSHEROESNYC
Amazing trainers.
No club.
$99/month
Unlimited Membership.
ClassHeroes
CLASSHEROESNYC
CLASSHEROESNYC
ClassHeroes
Browse
the activities
CLASSHEROESNYC
CLASSHEROESNYC
ClassHeroes
Book
It’s unlimited
CLASSHEROESNYC
CLASSHEROESNYC
Cross-platform :
Picking the best option for your next iOS/Android app
1. What do you mean by 'cross-platfo...
CLASSHEROESNYC
What do you mean by
'cross-platform'? 🤔
CLASSHEROESNYC
From native to cross-platform
CLASSHEROESNYC
From native to cross-platform
CLASSHEROESNYC
From native to cross-platform
Solution : Share a common cross-platform code base
Small library Whole app
CLASSHEROESNYC
Pros and cons of a
cross-platform solution 👍👎
CLASSHEROESNYC
Pros 👍
DRY (Don't Repeat Yourself)
Synchronization between teams
Synchronized releases
No need to update th...
CLASSHEROESNYC
Cons 👎
Hard to match native look & feel
Still need iOS and Android experts
Third-party tool
One more layer
...
CLASSHEROESNYC
Available options ⚙
CLASSHEROESNYC
Xamarin
All-in-one
Shared app logic
Shared UI thanks to Xamarin.Forms (optional)
C#
Nice and mature languag...
CLASSHEROESNYC
Cordova / PhoneGap / Ionic
JavaScript frameworks
Mostly Web Apps with access to native APIs
Targeted at web...
CLASSHEROESNYC
React Native
JavaScript
Same design as React
"Learn once, write anywhere"
Native UI components
Hot Reloading
CLASSHEROESNYC
Other approach:
only share App logic
CLASSHEROESNYC
C++
Most common option
iOS: Objective-C++
Android: JNI
Djinni: interfacing with Java and Objective-C
Bjarne...
CLASSHEROESNYC
J2ObjC
Java to Objective-C translator
Developed by Google
Native performance
Small project, rough edges
CLASSHEROESNYC
Go Mobile
Go: popular language among backend developers
Experimental
Go ❤ Java & Objective-C
CLASSHEROESNYC
Our approach
CLASSHEROESNYC
Our app
Thin layer above the API
UI at the core
Team of native mobile developers
App Logic
10 %
UI
90 %
Not...
CLASSHEROESNYC
Is that it?
CLASSHEROESNYC
We can do more 💪
Cross-platform : Keep platforms in sync
Our case: iOS, Android, Web, Back office
Solution:...
CLASSHEROESNYC
Swagger
Swagger Spec
CLASSHEROESNYC
Swagger UI
CLASSHEROESNYC
Mocking server
Generates fake data from Swagger spec
💡backend integration tests
We use the swagger-mock-api...
CLASSHEROESNYC
ActionScript
Ada
Apex
Bash
C# (.net 2.0, 4.0 or later)
C++ (cpprest, Qt5, Tizen)
Clojure
Dart
Elixir
Eiffel...
CLASSHEROESNYC
What did we learn?
Specs are helpful
Global thinking about your product
Big velocity gains:
Independent imp...
CLASSHEROESNYC
In a nutshell
Shared app logic vs UI
⚠ cross-platform may not be the best fit!
In any case, consider using ...
CLASSHEROESNYC
The End
@PatrickNLT
Blog post: http://patrick.nollet.org
Upcoming SlideShare
Loading in …5
×

Cross-platform : Picking the best option for your next iOS/Android app

411 views

Published on

Should you consider a cross-platform solution for your next app?
During this talk I presented an overview of some of the most popular cross-platform solutions. Also, I described how putting API specs at the center of your workflow could be a good alternative if cross-platform is not a good fit for your project or your team.

AppDays, Paris - November 15th 2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

Cross-platform : Picking the best option for your next iOS/Android app

  1. 1. CLASSHEROESNYC Cross-platform : Picking the best option for your next iOS/Android app Patrick Nollet (@PatrickNLT) Lead Mobile Developer CLASSHEROES
  2. 2. CLASSHEROESNYCCLASSHEROESNYC CLASSHEROES
  3. 3. CLASSHEROESNYC Amazing trainers. No club. $99/month Unlimited Membership. ClassHeroes CLASSHEROESNYC
  4. 4. CLASSHEROESNYC ClassHeroes Browse the activities CLASSHEROESNYC
  5. 5. CLASSHEROESNYC ClassHeroes Book It’s unlimited CLASSHEROESNYC
  6. 6. CLASSHEROESNYC Cross-platform : Picking the best option for your next iOS/Android app 1. What do you mean by 'cross-platform'? 2. Pros and cons of a cross-platform solution 3. Available cross-platform options 4. Our approach at ClassHeroes
  7. 7. CLASSHEROESNYC What do you mean by 'cross-platform'? 🤔
  8. 8. CLASSHEROESNYC From native to cross-platform
  9. 9. CLASSHEROESNYC From native to cross-platform
  10. 10. CLASSHEROESNYC From native to cross-platform Solution : Share a common cross-platform code base Small library Whole app
  11. 11. CLASSHEROESNYC Pros and cons of a cross-platform solution 👍👎
  12. 12. CLASSHEROESNYC Pros 👍 DRY (Don't Repeat Yourself) Synchronization between teams Synchronized releases No need to update the app (JS)
  13. 13. CLASSHEROESNYC Cons 👎 Hard to match native look & feel Still need iOS and Android experts Third-party tool One more layer Performance
  14. 14. CLASSHEROESNYC Available options ⚙
  15. 15. CLASSHEROESNYC Xamarin All-in-one Shared app logic Shared UI thanks to Xamarin.Forms (optional) C# Nice and mature language Native performance Hard to find experienced developers
  16. 16. CLASSHEROESNYC Cordova / PhoneGap / Ionic JavaScript frameworks Mostly Web Apps with access to native APIs Targeted at web developers Limitations: Performance UI
  17. 17. CLASSHEROESNYC React Native JavaScript Same design as React "Learn once, write anywhere" Native UI components Hot Reloading
  18. 18. CLASSHEROESNYC Other approach: only share App logic
  19. 19. CLASSHEROESNYC C++ Most common option iOS: Objective-C++ Android: JNI Djinni: interfacing with Java and Objective-C Bjarne Stroustrup
  20. 20. CLASSHEROESNYC J2ObjC Java to Objective-C translator Developed by Google Native performance Small project, rough edges
  21. 21. CLASSHEROESNYC Go Mobile Go: popular language among backend developers Experimental Go ❤ Java & Objective-C
  22. 22. CLASSHEROESNYC Our approach
  23. 23. CLASSHEROESNYC Our app Thin layer above the API UI at the core Team of native mobile developers App Logic 10 % UI 90 % Not a good candidate for a cross- platform approach 😞
  24. 24. CLASSHEROESNYC Is that it?
  25. 25. CLASSHEROESNYC We can do more 💪 Cross-platform : Keep platforms in sync Our case: iOS, Android, Web, Back office Solution: Exhaustive API specs Swagger format
  26. 26. CLASSHEROESNYC Swagger Swagger Spec
  27. 27. CLASSHEROESNYC Swagger UI
  28. 28. CLASSHEROESNYC Mocking server Generates fake data from Swagger spec 💡backend integration tests We use the swagger-mock-api middleware (uses Chance.js)
  29. 29. CLASSHEROESNYC ActionScript Ada Apex Bash C# (.net 2.0, 4.0 or later) C++ (cpprest, Qt5, Tizen) Clojure Dart Elixir Eiffel Go Groovy Haskell (http-client, Servant) Java (Jersey1.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx) Kotlin Lua Node.js (ES5, ES6) Objective-C Perl PHP PowerShell Python R Ruby Rust Scala (akka, http4s, swagger-async-httpclient) Swift (2.x, 3.x, 4.x) Typescript (Angular1.x, Angular2.x, jQuery) Client API code generation swagger-codegen Dozens of templates Android: Retrofit, RxJava… iOS: Objective-C, Swift… Alternative: SwagGen (Swift)
  30. 30. CLASSHEROESNYC What did we learn? Specs are helpful Global thinking about your product Big velocity gains: Independent implementation and tests Focus on what's important Monorepo
  31. 31. CLASSHEROESNYC In a nutshell Shared app logic vs UI ⚠ cross-platform may not be the best fit! In any case, consider using specs
  32. 32. CLASSHEROESNYC The End @PatrickNLT Blog post: http://patrick.nollet.org

×