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.

Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mobile applications.

350 views

Published on

We will discuss how to build your application on the top of cross-platform technologies using advantages of few languages. We will deep review UI and business logic and think how to make a bridge between them.

Published in: Mobile
  • Be the first to comment

  • Be the first to like this

Alexander Shitikov: Cross Platform Mobile Development. Business Logic for mobile applications.

  1. 1. CROSS-PLATFORM MOBILE DEVELOPMENT Alexander Shitikov Head of mobile development department
  2. 2. HYBRID APPLICATIONS
  3. 3. TECHNOLOGIES
  4. 4. BUSINESS LOGIC Shared logic for each platform
  5. 5. BUSINESS LOGIC
  6. 6. BUSINESS LOGIC
  7. 7. JAVA AS THE BRIDGE
  8. 8. CHALLENGES • To create cross-platform mobile business logic library on Java • To give fully-native interface to developers to interact with it
  9. 9. SOLUTION • RoboVM • Objective-C JNI wrapper generator
  10. 10. FEATURES • Memory management • Threading • Namespaces • Inheritance • Mapping • Overloading • Exceptions
  11. 11. MEMORY MANAGEMENT • Java object from native • Native object from java
  12. 12. THREADING • Control by java • Control by native
  13. 13. NAMESPACES java.lang.String -> MTCString Problem: pl.mobiletrends.String -> MTCString
  14. 14. NAMESPACES java.lang.String -> java_lang_String
  15. 15. NAMESPACES java.lang.String -> JavaLangString
  16. 16. NAMESPACES java.lang.String -> MTCJLString
  17. 17. INHERITANCE AND MAPPING • class -> @interface • interface -> @protocol • boolean -> bool • byte -> char • … • Int[] -> PrimitiveIntArray • Int[][] -> NSArray<PrimitiveIntArray> • Object -> MTCObject
  18. 18. INHERITANCE ARTIFACT public Animal getAnimal() { … } - (MTCAnimal *)getAnimal; MTC + Animal.getClass().getShortName()
  19. 19. MAPPING EXAMPLE public String getTestString() { return “Hello, World!”; } public int[] getGivenArray(int[] array) { return array; } - (MTCString *)getTestString; - (PrimitiveIntArray *)getGivenArray:(P rimitiveIntArray *)array;
  20. 20. OVERLOADING CHALLENGES public void overload(int a) { … } public void overload(int[] a) { … } - (void)overload:(int)a; - (void)overload:(PrimitiveIntArray *)a;
  21. 21. OVERLOADING SOLUTION public void overload(int a) { … } public void overload(int[] a) { … } - (void)overloadWithAint:(int)a; - (void)overloadWithAintArray:(Primiti veIntArray *)a;
  22. 22. EXCEPTIONS public static void throwException() { throw new NullPointerException (“MTC 2016”); } + (void)throwException; … @try { [MTCCustomClass throwException] } @catch (MTCNullPointerException *e) { ... } @finally { ... }
  23. 23. PROJECT STATUS March-April 2016 alpha version
  24. 24. mobile.agima.ru +7 495 981-01-85 info@mobile.agima.ru THANK YOU FOR ATTENTION! Alexander Shitikov Head of mobile development department facebook.com/shitikov.ap

×