32
Cross-Platform Native Apps with JavaScript October 22, 2015 Fokke Zandbergen @FokkeZB

Cross-Platform Native Apps with JavaScript

Embed Size (px)

Citation preview

Page 1: Cross-Platform Native Apps with JavaScript

Cross-Platform Native Apps with JavaScript

October 22, 2015

Fokke Zandbergen@FokkeZB

Page 2: Cross-Platform Native Apps with JavaScript

Agenda: Cross-Platform Native Apps with JavaScript

• Why Cross-Platform?

• Why Native?

• Why JavaScript?

• Why Titanium?

• Alloy

• Appcelerator Platform

Page 3: Cross-Platform Native Apps with JavaScript

Why Cross-Platform?

Page 4: Cross-Platform Native Apps with JavaScript

Because you can’t bet on one platform

Page 5: Cross-Platform Native Apps with JavaScript

Because there’s no such thing as one platform

1.0 1.1 1.5 1.6 2.0 2.0.1 2.1 2.2 2.3-2.3.2 2.3.3-2.3.7 3.0

3.1 3.2 4.0-4.0.2 4.0.3-4.04 4.1 4.2 4.3 4.4 5.0 5.1

2011 2012 2013 2014 20150%

20%

40%

60%

80%

100%

The white line shows the market share of the leading API level at any time

The white line shows the market shareof the leading API level at any time

iOS 957%iOS 8

33%

Earlier10%

October 5th, 2015developer.apple.com

Page 6: Cross-Platform Native Apps with JavaScript

Because these platforms run on thousands of devices

Page 7: Cross-Platform Native Apps with JavaScript

Targeting multiple platforms without Titanium

! Product Management

! Team

Team

# Team

Page 8: Cross-Platform Native Apps with JavaScript

Targeting multiple platforms with Titanium

! Product Management Team

Page 9: Cross-Platform Native Apps with JavaScript

Why Native?

Page 10: Cross-Platform Native Apps with JavaScript

What does Native mean?

⎕ The developer uses the vendor’s toolchain

⎕ The developer uses the platform’s language(s)

⎕ The developer uses the platform’s APIs

⎕ The user experience is as expected on the platform

Page 11: Cross-Platform Native Apps with JavaScript

What cross-platform for long has worked like

" #"

Page 12: Cross-Platform Native Apps with JavaScript

What it sometimes looked like

iOS TabGroup?

Android Drawer?

Uh?!

Page 13: Cross-Platform Native Apps with JavaScript

What Native means to us

⎕ The developer uses the vendor’s toolchain

⎕ The developer uses the platform’s language(s)

⎕ The developer uses the platform’s APIs

⎕ The user experience is as expected on the platform✔

JavaScript 2 Native

Page 14: Cross-Platform Native Apps with JavaScript

How JavaScript 2 Native works

!

#

Page 15: Cross-Platform Native Apps with JavaScript

How JavaScript 2 Native works

!

#

Page 16: Cross-Platform Native Apps with JavaScript

#

var Window = require('Windows.UI.Xaml.Window'), TextBlock = require('Windows.UI.Xaml.Controls.TextBlock'), Colors = require('Windows.UI.Colors'), SolidColorBrush = require('Windows.UI.Xaml.Media.SolidColorBrush');

var text = new TextBlock(); text.Text = 'Hello, world!'; text.FontSize = 50; text.Foreground = new SolidColorBrush(Colors.Red);

var window = Window.Current, window.Content = text;

window.Activate();

Hyperloop for Windows, iOS and Android

Page 17: Cross-Platform Native Apps with JavaScript

Why JavaScript?

Page 18: Cross-Platform Native Apps with JavaScript

Relatively easy to find

Page 19: Cross-Platform Native Apps with JavaScript

Relatively affordable

Page 20: Cross-Platform Native Apps with JavaScript

JavaScript is everywhere

Page 21: Cross-Platform Native Apps with JavaScript

Why Titanium?

Page 22: Cross-Platform Native Apps with JavaScript

DEVELOPERS

0

200

400

600

800

2012 2013 2014

Thou

sand

s

DEVICES

0

100

200

300

400

2012 2013 2014

Millions

IBM

KONY

SAP

PEGASYSTEMSADOBE

XAMARIN

TELERIK

SENCHA

SALESFORCE.COM

MICROSTRATEGY

APPLE

MICROSOFT

ORACLE

GOOGLE

DSI

MOTOROLA SOLUTIONS

EMBARCEDERO

CLICKSOFTWARE

VERIVO SOFTWARE

CHALLENGERS LEADERS

NICHE PLAYERS VISIONARIESCOMPLETENESS OF VISION

AB

ILIT

Y T

O E

XEC

UTE

AS OF SEPTEMBER 2014

Page 23: Cross-Platform Native Apps with JavaScript

Alloy

Page 24: Cross-Platform Native Apps with JavaScript

var text = Ti.UI.createLabel({ text: "Hello, world!", font: { fontSize: 60 }, color: 'red' });

var window = Ti.UI.createWindow();

window.add(text); window.open();

Page 25: Cross-Platform Native Apps with JavaScript

<Alloy> <Window> <Label>Hello, world!</Label> </Window> </Alloy>

'Label': { font: { fontSize: 60 }, color: 'red' }

$.index.open();

Page 26: Cross-Platform Native Apps with JavaScript
Page 27: Cross-Platform Native Apps with JavaScript

Themes & Widgets

app

controllers

views

styles

assets

widgets

controllers

views

styles

assets

themes

styles

assets

Page 28: Cross-Platform Native Apps with JavaScript

<Alloy> <Window> <Label platform="ios">Hello, world!</Label> </Window> </Alloy>

'Label[formFactor=tablet]': { color: 'red' }

if (ENV_PRODUCTION) { $.index.open(); }

$.index.open();

index.xml

index.tss

windows/index.js

Conditional Code

index.js

Page 29: Cross-Platform Native Apps with JavaScript

Appcelerator Platform

Page 30: Cross-Platform Native Apps with JavaScript
Page 31: Cross-Platform Native Apps with JavaScript
Page 32: Cross-Platform Native Apps with JavaScript

Thank youOctober 22, 2015

Fokke Zandbergen@FokkeZB