85
MOBILE DEVELOPMENT OPTIONS 2014 PRATIK PATEL | CTO | TripLingo twitter: @prpatel

MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MOBILE DEVELOPMENT

OPTIONS 2014

!PRATIK PATEL | CTO | TripLingo twitter: @prpatel

Page 2: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TOPICS• Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile

• native, cross-platform-to-native, and mobile web

• deep dive into: - phonegap - titanium

PRATIK PATEL | CTO

Page 3: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

WE’ll FOCUS ON

PRATIK PATEL | CTO

Page 4: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MY EXPERIENCE

PRATIK PATEL | CTO

Page 5: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

overview of the options !!!!

Page 6: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE MOBILE• Must know Objective-C & Java very well

• SDK is closed source, many open-source libs available

PRATIK PATEL | CTO

Page 7: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE II• MUST KNOW THE TOOL chain for each platform

PRATIK PATEL | CTO

Page 8: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

ANDROID

PRATIK PATEL | CTO

Page 9: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

XCODE

PRATIK PATEL | CTO

Page 10: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE III• ABILITY TO CREATE best possible app

• time & effort multiplied by platform

• obviously not cross-platform

PRATIK PATEL | CTO

Page 11: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

Page 12: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP• native wrapper

- bootstraps a webkit browser !

• open-source as “Apache Cordova”

PRATIK PATEL | CTO

Page 13: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP• provides hooks into native functions - camera, contacts, accelerometer, etc

PRATIK PATEL | CTO

Page 14: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

http://www.melablog.it/post/11421/phonegap-riceve-il-nulla-osta-di-apple-per-app-store

Page 15: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP• Must use native toolchain to build phonegap wrapper

PRATIK PATEL | CTO

Page 16: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

CROSS PLATFORM

PRATIK PATEL | CTO

http://mashable.com/2011/02/22/html-mobile-development/

Page 17: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

CODING PHONEGAP• you can develop right in a desktop browser for most of your app!

PRATIK PATEL | CTO

Page 18: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MOBILE WEB LIBS- jquery mobile - sencha touch - jo (joapp.com) - kendoui

PRATIK PATEL | CTO

Page 19: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

phonegap DIAGRAMOperating System (iOS/Android)

Phonegap native wrapper app

Webkit browser engineYour

code runs here

Page 20: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

phonegap on ios

Page 21: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS

PRATIK PATEL | CTO

Page 22: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS• Xamarin (formerly monotouch) (C#)

• Ansca Corona (LUA)

• Appcelerator TITANIUM (JAVASCRIPT)

• Only TITANIUM is open-source

PRATIK PATEL | CTO

Page 23: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS• Some do _NOT_ generate code

• bridge from LANG <X> to native

• uses native toolchain

PRATIK PATEL | CTO

Page 24: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

BRIDGE• VENDOR WRITES HOOKS to native API

• vendor marshalls / unmarshalls calls & data in both directions

PRATIK PATEL | CTO

Page 25: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

how they work

you code here

var win1 = Titanium.UI.createWindow({ url:'main.js', title:'Spice Guide', // backgroundImage:'./images/bg.png', navBarHidden: false, tabBarHidden: true});

app platform

android sdkios sdk

platform provides API

platform bridges to native

Page 26: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM

PRATIK PATEL | CTO

Page 27: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM• open source, 100% free

• IDE - titanium studio - based on eclipse

PRATIK PATEL | CTO

Page 28: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM II• code in javascript

• again, not a generator !

PRATIK PATEL | CTO

Page 29: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

CODE REUSE?• 100% Of non-UI code is reusable

• 80% of UI code is reusable

• UI code can become more reusable with experience and patterns!

PRATIK PATEL | CTO

Page 30: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM == NATIVE

PRATIK PATEL | CTO

• Titanium api calls native objects/methods

• no code generation

• native widgets

• Tons of open-source modules available!

Page 31: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

titanium live coding

Page 32: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

notice something common? !!!!

Page 33: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE TOOLCHAIN!

PRATIK PATEL | CTO

Page 34: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

you must learn the native toolchain for any of the options!

Page 35: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE TOOLCHAIN• you must learn the native toolchain

• spend a few days building a native app for each platform you’re interested in

• the time you invest in this will be paid back 100x

PRATIK PATEL | CTO

Page 36: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

COMPARING THE OPTIONS

PRATIK PATEL | CTO

Page 37: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE • no code reuse

• best possible experience

• games, low-level needs

• cost: $$$$$

PRATIK PATEL | CTO

Page 38: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP • use tech you know (HTML/JS/CSS)

• Rapid development

• user experience is hard to perFect

• bad performance

• nuances of browser tech = black hole of effort

PRATIK PATEL | CTO

Page 39: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS • can get good code reuse

• performance is very close to native

• must learn a new tool/platform

• abstraction distractions

• rapid development

PRATIK PATEL | CTO

Page 40: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

Page 41: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

Page 42: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

Page 43: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

AU REVOIR

!

Follow me on twitter: @PRPATEL

Page 44: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE

PRATIK PATEL | CTO

Page 45: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

IOS• OBJECTIVE-C language

• dispatch model is very powerful

• NOT low ceremony

PRATIK PATEL | CTO

Page 46: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

ANDROID• Java with limitations (Davlik VM)

• open source platform

• tools you know and love (?) !

PRATIK PATEL | CTO

Page 47: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE II• developing the ‘same’ app for 2+ platforms == $$$$

• “LOW LEVEL” programming

PRATIK PATEL | CTO

Page 48: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP

PRATIK PATEL | CTO

Page 49: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP• open source, 100% free

• APACHE PROJECT

• large community

• tons of plugins

PRATIK PATEL | CTO

Page 50: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MIND THE GAP II• wraps a web browser in a native project

• your code runs in the browser

• plugins allow more native functions

• provides hooks into native functions - camera, contacts, accelerometer, etc !

PRATIK PATEL | CTO

Page 51: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MIND THE GAP III• you can develop right in a desktop browser for most of your app!

• can use mobile web libs: - jquery mobile - sencha touch - jo (joapp.com) - kendoui

PRATIK PATEL | CTO

Page 52: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

phonegap demo !!!!

Page 53: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS

PRATIK PATEL | CTO

Page 54: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

BRIDGE• vendor provides proprietary API on top

• you code to this API

• VENDOR WRITES HOOKS to native API

• vendor marshalls / unmarshalls calls & data in both directions

• again, no code generation!

PRATIK PATEL | CTO

Page 55: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PRATIK PATEL | CTO

how they work

you code here

var win1 = Titanium.UI.createWindow({ url:'main.js', title:'Spice Guide', // backgroundImage:'./images/bg.png', navBarHidden: false, tabBarHidden: true});

app platform

android sdkios sdk

platform provides API

platform bridges to native

Page 56: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

MONOTOUCH• based on mono

• C#

• $600 for both ios and android

PRATIK PATEL | CTO

Page 57: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

ANSCA CORONA• based on LUA - a script lang for c

• popular with game devs

• $349 for both ios and android

• less bridGing

PRATIK PATEL | CTO

Page 58: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

RUBYMOTION• based on RUBY - but ios only

• fairly new

• $199

• live REPL, other nice features

PRATIK PATEL | CTO

Page 59: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM

PRATIK PATEL | CTO

Page 60: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM• open source, 100% free

• support contract costs $

• extra modules cost $ (ex: storekit)

• IDE - titanium studio - based on eclipse

PRATIK PATEL | CTO

Page 61: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM II• code in javascript

• again, not a generator !

PRATIK PATEL | CTO

Page 62: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PLATFORMS• iOS

• ANDROID

• Mobile web (beta)

• Blackberry 10 coming soon

PRATIK PATEL | CTO

Page 63: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Titanium SDK• Javascript to native bridge

• Code to Titanium API (proprietary)

• Write once, deploy to iOS + ANdroid

• platform specific API’s too!

PRATIK PATEL | CTO

Page 64: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

WIDGETS• Buttons, Labels, Windows, Views

• Sliders, TextFields, WebViews

• Pickers, Tables

PRATIK PATEL | CTO

Page 65: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

EVENTS• ADD / Fire events

• Very much like “web” Javascript dev

PRATIK PATEL | CTO

Page 66: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

CODE REUSE?• 100% Of non-UI code is reusable

• 50% of UI code is reusable

• UI code can become more reusable with experience and patterns!

PRATIK PATEL | CTO

Page 67: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM == NATIVE

PRATIK PATEL | CTO

• Titanium api calls native objects/methods

• no code generation

• native widgets

Page 68: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

TITANIUM MODULES• Titanium is based on modules

• Each module represents an API

• Bridge from JavaScript to native runtime

• Example modules: networking, database, Filesystem, UI, Yahoo, Media, Map, Facebook, Accelerometer

PRATIK PATEL | CTO

Page 69: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

let’s write a Titanium app

Page 70: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Layouts codevar  view  =  Ti.UI.createView({          backgroundColor:'transparent',          top:0,          left:0,          width:'100%',          height:'100%',          layout:'vertical'  });  //  create  labels,  buttons,  text  fields  !view.add(usernameLabel);  view.add(usernameField);  view.add(submitButton);

PRATIK PATEL | CTO

Page 71: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Events code

Ti.App.addEventListener('event_type',  function(e)  {          Ti.API.info('The  '+e.type+'  event  happened');  });  !Ti.App.fireEvent('click',    

{datakey:  'value'});  

PRATIK PATEL | CTO

Page 72: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Custom Controlsvar buttonView1 = Titanium.UI.createView({ top: 0, left: 0, height: 50, width: 50, borderRadius: 10, backgroundColor: '#cef7ff' });var selection1 = Titanium.UI.createLabel({ text : 'Fish', color : '#f79e18', font : {fontSize : 40}, textAlign: 'center' });buttonView1.add(selection1);

PRATIK PATEL | CTO

Page 73: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

HttpClientvar  url  =  "https://www.google.com";  var  xhr  =  Ti.Network.createHTTPClient({          onload:  function(e)  {                  Ti.API.debug(this.responseText);                  alert('success');          },          onerror:  function(e)  {                  Ti.API.debug(e.error);                  alert('error');          },  timeout:5000  });  xhr.open("GET",  url);  xhr.send();

PRATIK PATEL | CTO

Page 74: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Databasevar  db  =  Titanium.Database.open('mydb');  !db.execute('CREATE  TABLE  IF  NOT  EXISTS  DATABASETEST    (ID  INTEGER,  NAME  TEXT)');  db.execute('DELETE  FROM  DATABASETEST');  !db.execute('INSERT  INTO  DATABASETEST  (ID,  NAME  )  VALUES(?,?)',1,'Name  1');  db.execute('UPDATE  DATABASETEST  SET  NAME  =  ?  WHERE  ID  =  ?',  updateName,  updateId);  var  rows  =  db.execute('SELECT  *  FROM  DATABASETEST');  !while  (rows.isValidRow())  {     Titanium.API.info('ID:  '  +  rows.field(0)  +  '  NAME:  '  +  rows.fieldByName('name')  +  '  COLUMN  NAME  '  +  rows.fieldName(0));     rows.next();  }

PRATIK PATEL | CTO

Page 75: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Facebookvar  fbButton  =  Titanium.Facebook.createLoginButton({     'style':'wide',     'apikey':'9494e611f2a93b8d7bfcdfa8cefdaf9f',     'sessionProxy':'http://api.appcelerator.net/p/fbconnect/',     bottom:10,  height:30,  width:300  });  Titanium.Facebook.publishStream("Set  your  status",null,null,function(r)     {       Titanium.API.info("received  status  response  =  "+JSON.stringify(r));       if  (r.success)  

{Ti.UI.createAlertDialog({title:'Facebook',    message:'Your  status  was  ublished'}).show();  

    }       else       {Ti.UI.createAlertDialog({title:'Facebook',  message:'Error  '  +  

 r.error}).show();         }     });

PRATIK PATEL | CTO

Page 76: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

Animations   var  t3  =  Ti.UI.create2DMatrix();     t3  =  t3.rotate(20);     t3  =  t3.scale(1.5);  !   var  a  =  Titanium.UI.createAnimation();     a.transform  =  t3;     a.duration  =  3000;  !var  view1  =  Titanium.UI.createView({     backgroundColor:'#336699',     top:10,  left:220,  height:50,  width:50,     anchorPoint:{x:0,y:0}  });  win.add(view1);  topLeft.addEventListener('click',  function()  {     view1.animate(a);  });

PRATIK PATEL | CTO

Page 77: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

app dev platforms

PRATIK PATEL | CTO

Page 78: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

REDUX• APP dev PLATFORMS: a high level env

• reuse code

• access to native (and specific) API’s

PRATIK PATEL | CTO

Page 79: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

REDUX II• performance is near native (95%)

• drawbacks: - abstraction - must know app platform + native platform

PRATIK PATEL | CTO

Page 80: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

choosing

PRATIK PATEL | CTO

Page 81: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

NATIVE • no code reuse

• best possible experience

• games, low-level needs

• cost: $$$$$

PRATIK PATEL | CTO

Page 82: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

PHONEGAP • use tech you know (HTML/JS/CSS)

• user experience is hard to perFect

• bad performance

• nuances of browser tech = black hole of effort

PRATIK PATEL | CTO

Page 83: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

APP DEV PLATFORMS • can get good code reuse

• performance is very close to native

• must learn a new tool/platform

• abstraction distractions

• rapid development

PRATIK PATEL | CTO

Page 84: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

what would you pick? !!!!

Page 85: MOBILE DEVELOPMENT OPTIONS 2014 › mds › 2015 › ...MobileDevOptions... · TOPICS • Android, iOS, HTML5/CSS3, Phonegap, Titanium, and jQuery Mobile • native, cross-platform-to-native,

AU REVOIRPRATIK PATEL

@PRPATEL [email protected]