THE HYPE
“HTML5 takes the internet by
storm”
BBC News (Technology), 8 May 2012
“New York Times and Burberry join the
HTML5 brigade”
The Guardian Technology Blog, 3 Oct 2012
… AND SOME ‘ANTI’-
HYPE
“Why HTML5 Is Still Not Ready For
Prime Time”
Business Insider, 7 Nov 2012
“The biggest mistake we made as a
company was betting too much on
HTML5 as opposed to native”
Mark Zuckerberg
“Why LinkedIn dumped HTML5 & went
native for its mobile app”
Kiran Prasad
NATIVE vs. HTML5 vs.
HYBRID
• Native
• HTML5
– Accessed via the browser
– Some phone features not accessible
– App-like experience is possible (but not via app-store)
• Hybrid
– HTML5 content rendered within a browser control
– Distributed through app-stores / marketplaces
– Best of both worlds
SELECTING A
FRAMEWORK
• Usual principles apply
– Cost
– Maturity
– Support / community
• What is the end-user experience?
• What is the developer experience like?
• How much code is shared?
• Which platforms do I care about?
… now go and start testing
• A realistic application
• Create apps that are ready for app-store
distribution
• Matches the native look and feel for each
platform
• Well designed / structured
JQUERY MOBILE –
THOUGHTS
• Some UX compromises
• Android uses iOS theme
– Android and iOS share the same code
• Windows Phone experience was very
was poor
• Some friction between frameworks
• Tooling was ‘standard’ web approach
SENCHA TOUCH
• Popular commercial framework
• Built using Ext JS
• An end-to-end solution
• Creators of Fastbook
SENCHA TOUCH -
THOUGHTS
• ‘Thick’ UI abstraction – no HTML
• Android and iOS use the same theme
• Almost declarative feel to the
application code
• Impressive user experience
• Steep learning curve
• No Windows Phone support
• Commercial framework from Appcelerator
• Creates a native UI
• Written in JavaScript that runs in an interpreter
• Titanium Studio IDE
• Relies on native build tools
• Abstraction layer hides Android / iOS differences
TITANIUM
TITANIUM - THOUGHTS
• Native UI gives the best UX
• Why JavaScript?
• Friction due to the ‘thick stack’
• Leaky abstraction
• Application was developed quickly
• No Windows Phone support
XAMARIN
• C# and the .NET framework
• Very thin abstraction layer
• MonoTouch and MonoDevelop
• Native UI
XAMARIN - THOUGHTS
• Matches the native experience exactly
• More code – yet strongly typed
• Lacks a UI abstraction layer
• Planning is required to optimise code
sharing
– You could easily end up with zero code
shared
AND THE REST …
• Adobe Air
• jQTouch
• RhoMobile
• KendoUI
• mgwt
• Intel App Framework
• DXTREME
• Enyo
• Emy
CONCLUSIONS
• HTML5 is a viable technology
• HTML5 is a route of compromise
• HTML5 is not the only cross-platform
technology
CHOOSING A
FRAMEWORK
• Determine what is important for your
application
– Cost? UX? Which platforms?
• Use PropertyCross to narrow the selection
• Prototype your application
• Evaluate
– Code sharing
– Developer experience
– User experience
+ Highlight differences compared to a native UI
+ Android is a second class citizen
+ WP version is terrible!
+ Titanium IDE
+ (leaky) abstraction layer for UI code
+ JavaScript compiled into native code
+ Titanium IDE
+ (leaky) abstraction layer for UI code
+ Highlight differences compared to a native UI
+ Android is a second class citizen
+ WP version is terrible!
+ Highlight differences compared to a native UI
+ Android is a second class citizen
+ WP version is terrible!
My personal approach for choosing a platform for a specific development is as follows: * Determine exactly what platforms you want to reach, iPhone, Android (which version numbers), BlackBerry, WindowsPhone ... * Define the requirements that you feel will be the most challenging. * Take these requirements and turn them into a few representative screens or UIs. In other words, do a little bit of your app design. * Use PropertyCross ( http://www.propertycross.com ) to help select a few frameworks that you think might work for you, in that they deliver a user experience you are happy with and that the tools / language are suitable for your development team. * Prototype your application using the frameworks you want to test out. * Place these prototypes in the hands of your users, stakeholders, developers - your wife and mother-in-law. See what the users reaction is to each framework. * Take a view on delivered user experience versus cost for each frameworks. * Choose one and go for it! Prototyping with a few frameworks might sound costly, but with so many options, each of which are quite different, I feel it is the only way to be sure you have made the right decision. Making the wrong decision can be very costly. You don't want to do a 'Facebook' and have to throw away your whole application because you are the wrong choice! Finally, in step (4) above make sure you also consider native and non HTML5-based frameworks (Xamarin, Titanium, AdobeAir). HTML5 is not the only way to make a cross-platform application!