SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Mobile web technologies
- an overview
Martin Naumann
Hi there!

|
There’s only one web

|
Let’s talk about performance

|
DOM Performance
Repeat after me:

The DOM isn’t slow
|
DOM Performance
•Beware of layout thrashing!
•Read first, Write second
•Batch up writes
•Test test test!

|
Reflow, Paint & the browser
Reflow
•If dimensions or positions changed
•reconstruction of the render tree
Examples:
elem.style.display = “none”;
elem.addChild(childElem);

|
Reflow, Paint & the browser
Repaint
•If there was a reflow or appearance changed
•repainting the screen content, tile- and layer-based*
Examples:
elem.style.backgroundColor = “red”;
elem.style.visibility = “hidden”;

|
3 nice ’n’ hackety hacks!
•Use canvas (> 256px width or height) for complicated graphic elements
•Use translateZ(0) to bring elements on their own layer
•Use CSS 3D Transitions for HW acceleration
•Using FastDOM (https://github.com/wilsonpage/fastdom)

|
And now...

Let’s go hybrid!

|
What’s hybrid?

|
What technology can I use?
MoSync
PhoneGap
Calatrava
M Project Titanium RhoMobile
Sencha Trigger.io
AppFramework Steroids.js
|
What technology can I use?
MoSync
PhoneGap
Calatrava
M Project Titanium RhoMobile
Sencha Trigger.io
AppFramework Steroids.js
|
Woah! Wait - what?
|
The rest of the stack
•Javascript MV* Libraries / Frameworks
○ Backbone
○ Ember
○ Knockout
○ Angular
•UI Frameworks
○ Lungo
○ TopCoat
○ jQTouch
○ jQuery mobile

|
Find a combo that works together
●

●

Our toolset:
○ Phonegap: Fully agnostic container
○ Angular: Fully agnostic MV*-Framework
○ Lungo: Pretty agnostic UI Framework
Other potential candidates:
○ Knockout + Phonegap + Lungo
○ Angular 1.2 + Phonegap + TopCoat

|
Case study: The C-App
●
●
●

Internal app to do the various admin tasks
Users are on iOS, Android, Blackberry and the web
Prototype rapidly, iterate quickly, roll out often

|
Thanks for the attention!
Follow @olivertupman
martin.naumann@centralway.com | @avgp |
engine.centralway.com
www.centralway.com

Contenu connexe

Plus de jazoon13

JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScript
JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScriptJAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScript
JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScriptjazoon13
 
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone before
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone beforeJAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone before
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone beforejazoon13
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Javajazoon13
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Developmentjazoon13
 
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...jazoon13
 
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teams
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed TeamsJAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teams
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teamsjazoon13
 
JAZOON'13 - Kai Waehner - Hadoop Integration
JAZOON'13 - Kai Waehner - Hadoop IntegrationJAZOON'13 - Kai Waehner - Hadoop Integration
JAZOON'13 - Kai Waehner - Hadoop Integrationjazoon13
 
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next GenerationJAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generationjazoon13
 
JAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedJAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedjazoon13
 
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experience
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experienceJAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experience
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experiencejazoon13
 
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !jazoon13
 
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Software
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling SoftwareJAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Software
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Softwarejazoon13
 
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great MigrationJAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great Migrationjazoon13
 
JAZOON'13 - Stefan Saasen - Real World Git Workflows
JAZOON'13 - Stefan Saasen - Real World Git WorkflowsJAZOON'13 - Stefan Saasen - Real World Git Workflows
JAZOON'13 - Stefan Saasen - Real World Git Workflowsjazoon13
 

Plus de jazoon13 (14)

JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScript
JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScriptJAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScript
JAZOON'13 - Oliver Zeigermann - Typed JavaScript with TypeScript
 
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone before
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone beforeJAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone before
JAZOON'13 - Andres Almiray - Spock: boldly go where no test has gone before
 
JAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled JavaJAZOON'13 - Andres Almiray - Rocket Propelled Java
JAZOON'13 - Andres Almiray - Rocket Propelled Java
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
 
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
JAZOON'13 - Nikita Salnikov-Tarnovski - Multiplatform Java application develo...
 
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teams
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed TeamsJAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teams
JAZOON'13 - Pawel Wrzeszcz - Visibility Shift In Distributed Teams
 
JAZOON'13 - Kai Waehner - Hadoop Integration
JAZOON'13 - Kai Waehner - Hadoop IntegrationJAZOON'13 - Kai Waehner - Hadoop Integration
JAZOON'13 - Kai Waehner - Hadoop Integration
 
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next GenerationJAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation
JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation
 
JAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronizedJAZOON'13 - Andrej Vckovski - Go synchronized
JAZOON'13 - Andrej Vckovski - Go synchronized
 
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experience
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experienceJAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experience
JAZOON'13 - Paul Brauner - A backend developer meets the web: my Dart experience
 
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !
JAZOON'13 - Anatole Tresch - Go for the money (JSR 354) !
 
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Software
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling SoftwareJAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Software
JAZOON'13 - Abdelmonaim Remani - The Economies of Scaling Software
 
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great MigrationJAZOON'13 - Stefan Saasen - True Git: The Great Migration
JAZOON'13 - Stefan Saasen - True Git: The Great Migration
 
JAZOON'13 - Stefan Saasen - Real World Git Workflows
JAZOON'13 - Stefan Saasen - Real World Git WorkflowsJAZOON'13 - Stefan Saasen - Real World Git Workflows
JAZOON'13 - Stefan Saasen - Real World Git Workflows
 

JAZOON'13 - Martin Naumann - Mobile web technologies - an overview

  • 1. Mobile web technologies - an overview Martin Naumann
  • 4. Let’s talk about performance |
  • 5. DOM Performance Repeat after me: The DOM isn’t slow |
  • 6. DOM Performance •Beware of layout thrashing! •Read first, Write second •Batch up writes •Test test test! |
  • 7. Reflow, Paint & the browser Reflow •If dimensions or positions changed •reconstruction of the render tree Examples: elem.style.display = “none”; elem.addChild(childElem); |
  • 8. Reflow, Paint & the browser Repaint •If there was a reflow or appearance changed •repainting the screen content, tile- and layer-based* Examples: elem.style.backgroundColor = “red”; elem.style.visibility = “hidden”; |
  • 9. 3 nice ’n’ hackety hacks! •Use canvas (> 256px width or height) for complicated graphic elements •Use translateZ(0) to bring elements on their own layer •Use CSS 3D Transitions for HW acceleration •Using FastDOM (https://github.com/wilsonpage/fastdom) |
  • 12. What technology can I use? MoSync PhoneGap Calatrava M Project Titanium RhoMobile Sencha Trigger.io AppFramework Steroids.js |
  • 13. What technology can I use? MoSync PhoneGap Calatrava M Project Titanium RhoMobile Sencha Trigger.io AppFramework Steroids.js |
  • 14. Woah! Wait - what? |
  • 15. The rest of the stack •Javascript MV* Libraries / Frameworks ○ Backbone ○ Ember ○ Knockout ○ Angular •UI Frameworks ○ Lungo ○ TopCoat ○ jQTouch ○ jQuery mobile |
  • 16. Find a combo that works together ● ● Our toolset: ○ Phonegap: Fully agnostic container ○ Angular: Fully agnostic MV*-Framework ○ Lungo: Pretty agnostic UI Framework Other potential candidates: ○ Knockout + Phonegap + Lungo ○ Angular 1.2 + Phonegap + TopCoat |
  • 17. Case study: The C-App ● ● ● Internal app to do the various admin tasks Users are on iOS, Android, Blackberry and the web Prototype rapidly, iterate quickly, roll out often |
  • 18. Thanks for the attention! Follow @olivertupman martin.naumann@centralway.com | @avgp | engine.centralway.com www.centralway.com