multiplatform mobile app development

23
Multiplatform Mobile App Development Gergely Kis CEO MattaKis Consulting Kft. J2ObjC by

Upload: letuong

Post on 01-Jan-2017

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Multiplatform Mobile App Development

Multiplatform Mobile AppDevelopment

Gergely Kis

CEO

MattaKis Consulting Kft.

J2ObjCby

Page 2: Multiplatform Mobile App Development

2

Introduction● Worked in Mobile for 10 years

– Platform development (Siemens, Android)

– App development● Android, iOS, BB 10, BB Classic, J2ME, Symbian

● Started MattaKis Consulting in 2007

– Cross-platform Mobile Apps since 2008

– Migeran spin-off created in 2013

● Other Technologies

– Embedded Linux (C / C++ / ARM / MIPS)

– Java EE (Spring, Play)

Full Disclosure

Page 3: Multiplatform Mobile App Development

3

The Multiplatform Challenge

I need an app for ...

Let's createthe same app

4 times!Or think

Multiplatform?

Page 4: Multiplatform Mobile App Development

4

Anatomy of a Mobile App

Android

Business Logic

UI

Windows

Business Logic

UI

iOS

Business Logic

UI

BlackBerry 10

Business Logic

UI

Seriously?!

Page 5: Multiplatform Mobile App Development

5

Caveat: App Behavior

● Clients look for identical App behavior acrossplatforms:

– The same data should be displayed

– Operations should do exactly the same thing

– Lot of room for interpretation

Syncing app behaviors is extra effort

Page 6: Multiplatform Mobile App Development

6

Anatomy of an ideal Multiplatform Mobile App

Android

Runtime

UI

Windows

Runtime

iOS

Runtime

BlackBerry 10

Runtime

Common Code

Promise:

Write Once Run Anywhere

Page 7: Multiplatform Mobile App Development

7

Caveat: User Experience

● Users look for familiar UX

– Apps are just extensions of the Platform's UX

● Quote from Index.hu:

– „The BKV Futár App on Android and iOS looks the same.And this is a mistake.”

Separate UX Design for each platform

Page 8: Multiplatform Mobile App Development

8

Anatomy of a real Multiplatform Mobile App

Android

Runtime

UI

Windows

Runtime

UI

iOS

Runtime

UI

BlackBerry 10

Runtime

UI

Plat. Spec. Code Plat. Spec. Code Plat. Spec. Code Plat. Spec. Code

Common Code Savings here!

Page 9: Multiplatform Mobile App Development

9

Comparing Approaches

SupportedPlatforms

Languages

Tools Ecosystem

JavaC#

JavaScript

Objective-CC / C++

?

Page 10: Multiplatform Mobile App Development

10

App Types

Hybrid Apps

● Use the WebView of theunderlying platform

● UI simulates nativecontrols in HTML / CSS

● Application codedeveloped in JavaScript

● Limited access to nativeplatform features

Native Apps

● May use additionalruntimes (e.g. VMs)

● Uses the native UI andAPIs

● May use alternativelanguages

● May provide a platform-independent API

Page 11: Multiplatform Mobile App Development

11

Hybrid Apps

Page 12: Multiplatform Mobile App Development

12

Native Packaging for Hybrid Apps

● Apache Cordova / PhoneGap

– The oldest, most mature solution

– Supported by all frameworks

– Loads of plugins

● Sencha Cmd

– Specifically designed for Sencha Touch

● Trigger.io

Page 13: Multiplatform Mobile App Development

13

Hybrid App Frameworks● Sencha Touch

– Mature OO framework

– Device agnostic main theme + custom specific themes

– Abstracts common UI and Device APIs

● JQuery Mobile

– The mobile extension of JQuery

– Works also on the desktop

– Requires an external MV* Framework like Backbone

● Ionic

– Built on AngularJS(with options open for other frameworks)

– Widgets provided as custom HTML elements

Page 14: Multiplatform Mobile App Development

14

Native Apps

Page 15: Multiplatform Mobile App Development

15

Source Translators

● Translate Java source codeto Objective-C

● No VM (e.g. no garbagecollection), translated coderuns in the Objective-Cruntime

● UI code is written inObjective-C

● iOS Development in Xcodewith standard tools

J2ObjCby

● Translates DEX bytecode toObjective-C, C# … etc. source

● No VM (e.g. no garbagecollection), translated coderuns in the Objective-Cruntime

● Hand written partial Javabindings for iOS API

● No debugging support

● No IDE support

Page 16: Multiplatform Mobile App Development

16

Appcelerator Titanium

● JavaScript based API

– Not WebView based

● Native UI components

– Alloy MVC Framework

– Common UI Controls● With platform specific enhancements

● Eclipse based IDE

● Supported platforms

– iOS, Android, BlackBerry, Windows Phone

var myLabel = Ti.UI.createLabel({ text : 'Hello World', top : 250});

Page 17: Multiplatform Mobile App Development

17

Codename One ● Write Once Run Anywhere Concept

– Common, Swing-like API

– Development on Java Simulator

– Debugging only on host, not on target devices

● Multiple targets

– Android: Implementation of the CodeOne API

– IOS: XMLVM based translator, a new VM is in development

– Windows: Java code translated to C#

● UI Designer for Codename One API

● Cloud based builds

● Some support for additional languages, e.g. Scala or Mirah

– May support any statically compiled JVM language

Page 18: Multiplatform Mobile App Development

18

Xamarin● Develop apps in C# for multiple platforms

– Android, iOS, Mac

● Uses the Mono Runtime

– Ahead of time compilation

● UI developed separately for each platform

– UI Designer available

● Cross platform libraries

– Xamarin.Forms

– Xamarin.Mobile

● IDE support: Xamarin Studio, Visual Studio

Page 19: Multiplatform Mobile App Development

19

RoboVM

● Custom VM implementation

– Java bytecode translated to native code ahead of time

● Partial iOS API bindings

– Supports JNI and Bro (custom native binding framework)

● Basic IDE support (e.g. launch on device / iOS Simulator fromEclipse)

● No debugging support

● Supports Java

– Any statically compiled JVM language is possible

Page 20: Multiplatform Mobile App Development

20

Migeran● Based on Android ART Runtime

● Full Eclipse IDE Support

– Launching, Debugging, Migeran specific Code-Assist

● Eclipse & Xcode integrated

– Storyboards, Interface Builder

– Hybrid Classes

● Nat/J – Native Bindings with AutomatedGenerator

– The full iOS8 API is generated

– Generator included in Eclipse – use in your ownprojects

● Supports Java and Scala

– any language supported on ART is possible

Now Available

Page 21: Multiplatform Mobile App Development

21

Migeran Demo

http://www.migeran.com

Page 22: Multiplatform Mobile App Development

22

Convergence of Runtimes

JavaScript (Dynamic) VM„Web Runtime”

Static VM (JVM, CLR)

Unmanaged Runtime (C, C++)

Asm.js

Invokedynamic

AOT Compiler

Type Inference

Where is Objective-C and Swift?

Page 23: Multiplatform Mobile App Development

23

Questions & Answers

Gergely Kis

CEO

MattaKis Consulting Kft.

[ gk@ ] mattakis.com

J2ObjCby