Mobile Multiplattform-Apps
5. c-Akademie
Mark Zuckerberg: Our Biggest Mistake
Was Betting Too Much On HTML5
http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-
betting-too-much-on-html5/
Antwort Fastbook
• http://fb.html5isready.com/
http://vimeo.com/55486684
http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story
Ablauf
• Einführung Apps
• Architecture Frameworks
• UI Frameworks
• Hybrid Frameworks
• Demo
• Fazit und Ausblick
Was Analysten sagen
• Gartner -> bis 2015 Grossteil aller Enterprise
Apps werden als Hybrid entwickelt
http://www.gartner.com/newsroom/id/2429815
0%
20%
40%
60%
80%
100%
Consumer Enterprise
Web
Hybrid
Native
Möglichkeiten eine App zu
erstellen
NativeApplication
• Voller Zugriff auf
Geräte API
• Programmiersprachen
• Java
• Objective-C
• C# WebApplication
• Eine Codebasis
• Zugriff auf Hardware
nur durch HTML5
Browserunterstützung
(GPS, Camera)
• Programmiersprachen
• HTML5
• JavaScript
• CSS 3
HybridApplication
• JS-Native
Communication
• App in einem Container
verpackt
• Programmiersprachen
• HTML5
• JavaScript
• CSS3
Hybrid Application?
• Entwickelt mit HTML5; in einen nativen
Container gewrapt
• Keine plattformspezifischen Sprachen wie
Objective-C oder Java
• Kann über einen AppStore vertrieben werden
• Möglichkeit zum Zugriff auf native
Komponenten (Kamera, Mikrofon, Kontakte
oder Notification System)
Pro & Contra - Native App
+ Bessere Performance
+ Flüssigere
Animationen,
Übergänge und
schnellere Startzeit
+ Kann mehr Daten
offline speichern
+ Voller Zugriff auf
Hardware und OS
Features
 Keine gemeinsame
Codebasis
 Unterschiedliche API
und
Programmiersprachen
für Zielplattform
 App Updates müssen
jedes Mal den
Approval-Prozess neu
durchlaufen
Pro & Contra - Web App
+ Eine Codebasis, welche von
jedem browserbasierten
Mobilgerät aufgerufen
werden kann
+ Performance Problem
werden immer mehr
minimiert, da Mobilegeräte
und Javascript Engines
schneller werden
+ Kein Approval-Prozess
benötigt; Apps können
sofort geupdatet werden
 Interpretierter Code
 Kein voller Zugriff auf alle
gerätespezifischen
Möglichkeiten
 Nicht im AppStore
auffindbar
Pro & Contra - Hybrid App
+ App kann über die
bedeutenden AppStores
vertrieben werden
+ Eine Codebasis für alle
unterstützten
Plattformen
+ Zugang über die API auf
einige, oder sogar alle
gerätespezifischen
Features, welche über
den Browser nicht
aufrufbar sind
 Abhängig vom Store
Approval-Prozess
 App Performance
abhängig durch die
Browsercontrol-
Leistungsfähigkeit des
Mobilgeräts
Users don’t care if it’s native or
web as long as the app is fast and
responsive
Kristofer Joseph, Javascript
Frameworks Lead, Adobe
Consider a Framework
UI
Dojo Toolkit
jQuery mobile
Sencha Touch
KendoUI
Twitter Bootstrap
Zurp
Ratchet
Topcoat
Ionic
…
Architecture Backbone.JS
AngularJS
EmberJS
KnockoutJS
Full Stack Custom Stack
Hybrid Framework
Architecture Frameworks
UI Frameworks Twitter Bootstrap
Zurp
Ratchet
Topcoat
Ionic
…
Architecture
Frameworks
Backbone.JS
AngularJS
EmberJS
KnockoutJS
Custom Stack
Hybrid Frameworks
Anforderungen an (Web-)App
• Möglichst viel Logik auf dem Client
• Serverzugriff möglichst nur für Daten
• Andere Ansicht soll nicht zu komplettem
Laden der Seite führen
• Gegenläufig zu klassischem HTML
• Kommunikation über AJAX
Single Page Application Frameworks
Single Page Applications
• Nur benötigte Bereiche werden neu geladen
– Ideal für responsive Designs
– Komplexere User-Interfaces
– Weniger Datenverkehr
• Clientseitiges MVC
– NUR Client zuständig für:
• Darstellung
• App-Status
– Klare Strukturen/Kapselung
• Vorgehen wie bei nativer App
SPA Frameworks Vergleich
AngularJS Backbone.js Ember.js Knockout
Dependency Injection X X
Data Binding X X X
RESTful Web Services X X
Promises X X
Localization X X X
Template Engine X X X
Routing X X X
Einfache JS-Objekte X
Benutzerdefiniertes HTML X tlw.
Benutzerdefinierte Events X X X
SPA Frameworks Vergleich
Quelle: Google Trends
AngularJS
BackboneJS
EmberJS
KnockoutJS
Suchanfragen:
Was ist AngularJS
• JavaScript Framework für Single-Page
Applikationen
• MVC/MVVM Framework
– Komponenten basiert
– Bidirektionales Binding
• Entwickelt und verwendet von Google
– Auf Testbarkeit ausgelegt
– Open Source Projekt
AngularJS Aufbau
AngularJS Vorteile
• Vereinfachung von wiederkehrenden
Aufgaben
• Optimiert auf Test- und Wartbarkeit
• Arbeiten mit Komponenten
• Keine JavaScript Abhängigkeiten
• Rich-Client Architektur: Webserver wird nur
zum Bereitstellen von Daten benötigt
Bsp. Codereduzierung
• Ausgabe von:
var hello = "Hallo Welt!";
• „Klassischer“ Ansatz:
<span id=„msg"></span> document.getElementById(„msg“)
.textContent = hello;
• The jQuery way:
<span id=„message"></span> $("#message").text(hello);
• The Angular-way:
<span ng-bind="hello"></span>
AngularJS
Dependency Injection
• Services können über eindeutigen Namen global
registriert werden
• Derselbe Service wird überall im Programm
verwendet („Singleton“)
• Framework stellt bestimmte Services bereit
– $http AJAX requests
– $filter Such und Sortierfunktionen
– $location Navigation zwischen Views
– $q Promise API
– …
AngularJS
Dependency Injection
Deklaration an einer Stelle im Programm:
Verwendung an anderer Stelle:
moduleA.factory('valueConverter', function() {
this.convert = function() { … };
}]);
moduleB.factory('testService', ['valueConverter', function(vc) {
this.abc = function() {
return vc.convert();
}
}]);
AngularJS
Scopes und Events
• Bindeglied zwischen Controller und View
• Definiert Methoden und Properties die in View
bereitstehen
• Setzt Änderungen an Properties in View um
• Erlaubt es Änderungen zu überwachen
• Hierarchisch organisiert
AngularJS
Scopes und Events
$scope.$broadcast(‚event1‘)
$scope.$on(‚event1‘)
$scope.$on(‚event1‘)
$scope.$emit(‚event2‘)
$scope.$on(‚event2‘)
UI Frameworks
UI Frameworks Twitter Bootstrap
Zurp
Ratchet
Topcoat
Ionic
…
Architecture
Frameworks
AngularJS
Custom Stack
Hybrid Frameworks
UI Frameworks
• Responsive CSS3 Frameworks
UI Frameworks
• Mobile optimierte CSS3 Frameworks
Vergleich Mobile UI Frameworks
Framework Android iOS WindowsPhone Blackberry OS
ChocolateChip-UI + + +
KendoUI + + + +
Ratchet + +
Ionic + +
Topcoat + +
PhoneJS + + +
OnsenUI + +
Ionic
• Designed für leichtgewichtige Mobile Apps
– Keine Web Pages
• Built mit LESS
• Basiert auf AngularJS
Hybrid Frameworks
UI Frameworks Ionic
Architecture
Frameworks
AngularJS
Custom Stack
Hybrid Frameworks
Cross Mobile Möglichkeiten
Native Android, iOS,
Windows Phone
Skills wird für jede Plattform und Sprache
benötigt
Cross Compiled AppLause
Mono/Xamarin
Non-UI Code kann wiederverwendet werden
UI muss teilweise neu geschrieben werden
Interpreted Appcelerator
RhoMobile
App wird gegen eigene API entwickelt
Hybrid PhoneGap
Cordova
Web App wird innerhalb eines nativen
Container gehostet
Web Apps Twitter
Bootstrap
Responsiver Aufbau der Website
Kein «Native»-Look&Feel
Vergleich
Phonegap Titanium Mono/Xamarin
Zugriff auf Gerätefunktionen X X X
Natives User Interface ~ X
Programmiersprache JavaScript,
HTML, CSS
JavaScript C#
Plattformen iOS
Android
Blackberry
Windows Phone
Ubuntu Phone
Firefox OS
Tizen
iOS
Android
Blackberry
iOS
Android
Windows Phone
Phonegap Geschichte
• Entwickelt von Nitobi 2009
• Aufgekauft durch Adobe 2011
• Aktuell unter Apache Software Foundation
– Apache Cordova
• Phonegap == Apache Cordova
Phonegap
• Container für Web-Apps
– Startet Webanwendung wie eigene native App
– Icon im Menü
– Keine Internetverbindung nötig
– Zusätzliche Funktionalität wird bereitgestellt
• Genauso als Website einsetzbar
Phonegap Module
• Accelerometer
• Camera
• Compass
• Contacts
• File
• Geolocation
• Media
• Network
• Notifications
• Storage
Phonegap Entwicklungsprozess
• App nur mittels HTML, CSS und JavaScript
erstellen
• Konfiguration mittels XML-Datei
• Wenige spezielle Anpassungen für einzelne
Plattformen vornehmen
• Install-Pakete kompilieren und installieren
– Je nach Plattform unterschiedlich
– Teils abhängig vom Entwicklungs-PC
– Oder…
Phonegap Build
• Online Compiler
• Erstellen von Apps für versch. Plattformen
– Ohne spezielle Hardware
– Entwickler Lizenzen weiterhin benötigt
• „Hydration“
– Neue Version wird online erstellt
– Bei App-Start wird automatisch nach Update
gefragt
Phonegap Beispiele
• Wikipedia
Phonegap Beispiele
• Logitech Squeezebox Controller
Demo
TodoApp mit AngularJS, Ionic
und Phonegap
UI Ionic
Architecture AngularJS
Custom Stack
Phonegap
Fazit
• Soll meine App als Hybrid erstellt werden?
– Nein, wenn bereits in native Technologien
investiert wurde und kein Bedarf vorhanden ist
auf neue mobile Plattformen zu wechseln
– Nein, wenn die App komplex und hoch interaktiv
ist
– Ja, wenn die App einfache Funktionen
unterstützen soll
– Ja, wenn die App mehrere Plattformen
unterstützen soll
Fazit
• Hybrid Ansatz weil,
– Wartungskosten
– Zugang zu Entwicklern
– Time to market
The Future
• Besserer Support für HTML5
• Zunahme von optimierten JS Engines
• Optimiertes Rendering
• Leistungsstärkere Mobilgeräte
• Ease of development
• Cross-Plattform
Fragen?
Vielen Dank für Ihre Aufmerksamkeit

Creasoft-Akademie - Mobile Multiplattform Apps

  • 1.
  • 2.
    Mark Zuckerberg: OurBiggest Mistake Was Betting Too Much On HTML5 http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was- betting-too-much-on-html5/
  • 3.
  • 4.
    Ablauf • Einführung Apps •Architecture Frameworks • UI Frameworks • Hybrid Frameworks • Demo • Fazit und Ausblick
  • 5.
    Was Analysten sagen •Gartner -> bis 2015 Grossteil aller Enterprise Apps werden als Hybrid entwickelt http://www.gartner.com/newsroom/id/2429815 0% 20% 40% 60% 80% 100% Consumer Enterprise Web Hybrid Native
  • 6.
    Möglichkeiten eine Appzu erstellen NativeApplication • Voller Zugriff auf Geräte API • Programmiersprachen • Java • Objective-C • C# WebApplication • Eine Codebasis • Zugriff auf Hardware nur durch HTML5 Browserunterstützung (GPS, Camera) • Programmiersprachen • HTML5 • JavaScript • CSS 3 HybridApplication • JS-Native Communication • App in einem Container verpackt • Programmiersprachen • HTML5 • JavaScript • CSS3
  • 7.
    Hybrid Application? • Entwickeltmit HTML5; in einen nativen Container gewrapt • Keine plattformspezifischen Sprachen wie Objective-C oder Java • Kann über einen AppStore vertrieben werden • Möglichkeit zum Zugriff auf native Komponenten (Kamera, Mikrofon, Kontakte oder Notification System)
  • 8.
    Pro & Contra- Native App + Bessere Performance + Flüssigere Animationen, Übergänge und schnellere Startzeit + Kann mehr Daten offline speichern + Voller Zugriff auf Hardware und OS Features  Keine gemeinsame Codebasis  Unterschiedliche API und Programmiersprachen für Zielplattform  App Updates müssen jedes Mal den Approval-Prozess neu durchlaufen
  • 9.
    Pro & Contra- Web App + Eine Codebasis, welche von jedem browserbasierten Mobilgerät aufgerufen werden kann + Performance Problem werden immer mehr minimiert, da Mobilegeräte und Javascript Engines schneller werden + Kein Approval-Prozess benötigt; Apps können sofort geupdatet werden  Interpretierter Code  Kein voller Zugriff auf alle gerätespezifischen Möglichkeiten  Nicht im AppStore auffindbar
  • 10.
    Pro & Contra- Hybrid App + App kann über die bedeutenden AppStores vertrieben werden + Eine Codebasis für alle unterstützten Plattformen + Zugang über die API auf einige, oder sogar alle gerätespezifischen Features, welche über den Browser nicht aufrufbar sind  Abhängig vom Store Approval-Prozess  App Performance abhängig durch die Browsercontrol- Leistungsfähigkeit des Mobilgeräts
  • 11.
    Users don’t careif it’s native or web as long as the app is fast and responsive Kristofer Joseph, Javascript Frameworks Lead, Adobe
  • 12.
    Consider a Framework UI DojoToolkit jQuery mobile Sencha Touch KendoUI Twitter Bootstrap Zurp Ratchet Topcoat Ionic … Architecture Backbone.JS AngularJS EmberJS KnockoutJS Full Stack Custom Stack Hybrid Framework
  • 13.
    Architecture Frameworks UI FrameworksTwitter Bootstrap Zurp Ratchet Topcoat Ionic … Architecture Frameworks Backbone.JS AngularJS EmberJS KnockoutJS Custom Stack Hybrid Frameworks
  • 14.
    Anforderungen an (Web-)App •Möglichst viel Logik auf dem Client • Serverzugriff möglichst nur für Daten • Andere Ansicht soll nicht zu komplettem Laden der Seite führen • Gegenläufig zu klassischem HTML • Kommunikation über AJAX Single Page Application Frameworks
  • 15.
    Single Page Applications •Nur benötigte Bereiche werden neu geladen – Ideal für responsive Designs – Komplexere User-Interfaces – Weniger Datenverkehr • Clientseitiges MVC – NUR Client zuständig für: • Darstellung • App-Status – Klare Strukturen/Kapselung • Vorgehen wie bei nativer App
  • 16.
    SPA Frameworks Vergleich AngularJSBackbone.js Ember.js Knockout Dependency Injection X X Data Binding X X X RESTful Web Services X X Promises X X Localization X X X Template Engine X X X Routing X X X Einfache JS-Objekte X Benutzerdefiniertes HTML X tlw. Benutzerdefinierte Events X X X
  • 17.
    SPA Frameworks Vergleich Quelle:Google Trends AngularJS BackboneJS EmberJS KnockoutJS Suchanfragen:
  • 18.
    Was ist AngularJS •JavaScript Framework für Single-Page Applikationen • MVC/MVVM Framework – Komponenten basiert – Bidirektionales Binding • Entwickelt und verwendet von Google – Auf Testbarkeit ausgelegt – Open Source Projekt
  • 19.
  • 20.
    AngularJS Vorteile • Vereinfachungvon wiederkehrenden Aufgaben • Optimiert auf Test- und Wartbarkeit • Arbeiten mit Komponenten • Keine JavaScript Abhängigkeiten • Rich-Client Architektur: Webserver wird nur zum Bereitstellen von Daten benötigt
  • 21.
    Bsp. Codereduzierung • Ausgabevon: var hello = "Hallo Welt!"; • „Klassischer“ Ansatz: <span id=„msg"></span> document.getElementById(„msg“) .textContent = hello; • The jQuery way: <span id=„message"></span> $("#message").text(hello); • The Angular-way: <span ng-bind="hello"></span>
  • 22.
    AngularJS Dependency Injection • Serviceskönnen über eindeutigen Namen global registriert werden • Derselbe Service wird überall im Programm verwendet („Singleton“) • Framework stellt bestimmte Services bereit – $http AJAX requests – $filter Such und Sortierfunktionen – $location Navigation zwischen Views – $q Promise API – …
  • 23.
    AngularJS Dependency Injection Deklaration aneiner Stelle im Programm: Verwendung an anderer Stelle: moduleA.factory('valueConverter', function() { this.convert = function() { … }; }]); moduleB.factory('testService', ['valueConverter', function(vc) { this.abc = function() { return vc.convert(); } }]);
  • 24.
    AngularJS Scopes und Events •Bindeglied zwischen Controller und View • Definiert Methoden und Properties die in View bereitstehen • Setzt Änderungen an Properties in View um • Erlaubt es Änderungen zu überwachen • Hierarchisch organisiert
  • 25.
  • 26.
    UI Frameworks UI FrameworksTwitter Bootstrap Zurp Ratchet Topcoat Ionic … Architecture Frameworks AngularJS Custom Stack Hybrid Frameworks
  • 27.
  • 28.
    UI Frameworks • Mobileoptimierte CSS3 Frameworks
  • 29.
    Vergleich Mobile UIFrameworks Framework Android iOS WindowsPhone Blackberry OS ChocolateChip-UI + + + KendoUI + + + + Ratchet + + Ionic + + Topcoat + + PhoneJS + + + OnsenUI + +
  • 30.
    Ionic • Designed fürleichtgewichtige Mobile Apps – Keine Web Pages • Built mit LESS • Basiert auf AngularJS
  • 31.
    Hybrid Frameworks UI FrameworksIonic Architecture Frameworks AngularJS Custom Stack Hybrid Frameworks
  • 32.
    Cross Mobile Möglichkeiten NativeAndroid, iOS, Windows Phone Skills wird für jede Plattform und Sprache benötigt Cross Compiled AppLause Mono/Xamarin Non-UI Code kann wiederverwendet werden UI muss teilweise neu geschrieben werden Interpreted Appcelerator RhoMobile App wird gegen eigene API entwickelt Hybrid PhoneGap Cordova Web App wird innerhalb eines nativen Container gehostet Web Apps Twitter Bootstrap Responsiver Aufbau der Website Kein «Native»-Look&Feel
  • 33.
    Vergleich Phonegap Titanium Mono/Xamarin Zugriffauf Gerätefunktionen X X X Natives User Interface ~ X Programmiersprache JavaScript, HTML, CSS JavaScript C# Plattformen iOS Android Blackberry Windows Phone Ubuntu Phone Firefox OS Tizen iOS Android Blackberry iOS Android Windows Phone
  • 34.
    Phonegap Geschichte • Entwickeltvon Nitobi 2009 • Aufgekauft durch Adobe 2011 • Aktuell unter Apache Software Foundation – Apache Cordova • Phonegap == Apache Cordova
  • 35.
    Phonegap • Container fürWeb-Apps – Startet Webanwendung wie eigene native App – Icon im Menü – Keine Internetverbindung nötig – Zusätzliche Funktionalität wird bereitgestellt • Genauso als Website einsetzbar
  • 36.
    Phonegap Module • Accelerometer •Camera • Compass • Contacts • File • Geolocation • Media • Network • Notifications • Storage
  • 37.
    Phonegap Entwicklungsprozess • Appnur mittels HTML, CSS und JavaScript erstellen • Konfiguration mittels XML-Datei • Wenige spezielle Anpassungen für einzelne Plattformen vornehmen • Install-Pakete kompilieren und installieren – Je nach Plattform unterschiedlich – Teils abhängig vom Entwicklungs-PC – Oder…
  • 38.
    Phonegap Build • OnlineCompiler • Erstellen von Apps für versch. Plattformen – Ohne spezielle Hardware – Entwickler Lizenzen weiterhin benötigt • „Hydration“ – Neue Version wird online erstellt – Bei App-Start wird automatisch nach Update gefragt
  • 39.
  • 40.
    Phonegap Beispiele • LogitechSqueezebox Controller
  • 41.
    Demo TodoApp mit AngularJS,Ionic und Phonegap UI Ionic Architecture AngularJS Custom Stack Phonegap
  • 42.
    Fazit • Soll meineApp als Hybrid erstellt werden? – Nein, wenn bereits in native Technologien investiert wurde und kein Bedarf vorhanden ist auf neue mobile Plattformen zu wechseln – Nein, wenn die App komplex und hoch interaktiv ist – Ja, wenn die App einfache Funktionen unterstützen soll – Ja, wenn die App mehrere Plattformen unterstützen soll
  • 43.
    Fazit • Hybrid Ansatzweil, – Wartungskosten – Zugang zu Entwicklern – Time to market
  • 44.
    The Future • BessererSupport für HTML5 • Zunahme von optimierten JS Engines • Optimiertes Rendering • Leistungsstärkere Mobilgeräte • Ease of development • Cross-Plattform
  • 45.
    Fragen? Vielen Dank fürIhre Aufmerksamkeit