cross platform mobile developement introduction
TRANSCRIPT
Cross Platform Mobile
Development - Introduction
#ISMOBILE
What strategy works best for my apps?
@marcelv
Cross Platform Mobile Development - Introduction
AgendaMobile space– Market shares– Research predictions
Building mobile apps– What are my options?– What is native app development?– Hybrid solution with Mono
What strategy works best for my app?
Cross Platform Mobile Development - Introduction
Market research# of mobile devices sold now exceeds # of PC’s!
Cross Platform Mobile Development - Introduction
Market researchIn a few years the number of mobile devices will dwarf the number of PC’s
Market SharesRight now it is a two horse race
Cross Platform Mobile Development - Introduction
Market sharesThe game is not over, there is still a big market to gain!
Cross Platform Mobile Development - Introduction
Android23%
BlackBerry 13%iOS
16%
Symbian38%
Windows Phone
4%
Others4%
2010
Source: Gartner (http://www.gartner.com/it/page.jsp?id=1622614)
Smart Phone OS predictions
Cross Platform Mobile Development - Introduction
Android39%
BlackBerry 13%
iOS19%
Symbian19%
Windows Phone
6%
Others4%
2011
Android49%
BlackBerry 13%
iOS17%
Symbian0%
Windows Phone20%
Others3%
2015
Tablet Market shares predictions
2010Android
17%
iOS73%
Others10%
2011Android
22%
Windows4%
iOS67%
Others7%
2012Android
35%
Windows11%
iOS45%
Others9%
2015
Source: Gartner (http://www.gartner.com/it/page.jsp?id=1800514)
Cross Platform Mobile Development - Introduction
Cross Platform Mobile Development - Introduction
Building mobile apps
Building apps for the Mobile Space
Cross Platform Mobile Development - Introduction
User Experience Developer
productivity
Which platforms
?Application
Lifecycle Management
Distribution: Public or private
Corporate?Security & privacy
User interface designGraphical design– How does the app look?
Interaction design– How do I create an effective and efficient user
interface?– How do I create a natural experience that people
understand without training?
Cross Platform Mobile Development - Introduction
User ExperienceEmotionSenseSometimes almost a religion!Must closely match the native device experience!
Cross Platform Mobile Development - Introduction
Touch interface
Cross Platform Mobile Development - Introduction
USABILITY RESEARCH
How target size influences error rate
1/25
1/100
1/1000
Use touch target sizeRecommended size– 7x7mm
Optimized for accuracy– 9x9mm
Optimized for small size– 5x5mm
Each target has 2mm padding
touch target padding
Microsoft: 9x9mmApple HIG: 44x44px
Technology options for building apps
Application types
Cross Platform Mobile Development - Introduction
HTML 5 mobile websites
Runs from the webMaximum reachNo native user interfaceOptional shortcut on the device with offline support
Cross Platform Mobile Development - Introduction
HTML5 mobile apps
Can be purchased from AppStoreInstalled on the deviceNetwork connection not required to runNo native user interface
Cross Platform Mobile Development - Introduction
Native mobile apps
Can be purchased from AppStoreInstalled on the deviceNetwork connection not required to runNative interfaceMaximum richness
Cross Platform Mobile Development - Introduction
Native mobile apps
Different development environments– Java for Android– Objective-C for iPhone– XAML/C# for Windows Phone
Cross Platform Mobile Development - Introduction
Application types
Cross Platform Mobile Development - Introduction
Native look & feel -- -- ++Camera Access -- +- ++GPS ++ ++ ++
Secure service communication JSON/REST JSON/REST JSON/SOAP
Access to calendar -- -- ++Twitter integration +- +- +Distribution ++ AppStore presence AppStore presence
Building native apps, the options
Cross Platform Mobile Development - Introduction
Objective-CC / C++
C / C++Different CPU architectures
C# / Silverlight 3+
Java
Building native apps, the optionsReally?Write an app for each device?I need to master Objective C, Java and C#?Any alternatives?
Cross Platform Mobile Development - Introduction
3 types
Cross Platform Mobile Development - Introduction
App Logic
Vendor tools “Magic Box” Hybrid
XCodeObjective-
C
WP7 Silverlight
C#
Android SDKJava
Appcelerator Titanium
JavaScript > Native
PhoneGapHTML5 / CSS /
JS
Adobe AIRActionScript
AntennaRapid Scripting
Language
Service2MediaLua
C#
XamarinMonoTouch
WP7 Silverlight Xamarin
Mono for Android
RhodesRuby + HTML
Sybase Unwired
“4GL” code gen Shared languageKony
Javascript Lua
What is native?
What is the meaning of “native”?
Native = use the frameworks and libraries of the OS, regardless of the language or toolsNative = User experience 100% aligned with default OS device experience+ Leveraging all device capabilities
Cross Platform Mobile Development - Introduction
Hybrid - .NET Multi platform
Cross Platform Mobile Development - Introduction
Mono for AndroidMonoTouch C# / Silverlight
• Wrappers on OS framework/API• .NET feel: properties, events, LINQ, PLINQ, XML, WCF, etc.• App & UX 100% native!
But aren’t apps built with mono slow?
Comparison Mono & Objective-C / Java
Cross Platform Mobile Development - Introduction
Perceived performanceYes there is overheadNative-to-Managed causes overheadMono has a garbage collectorCPU-intensive: use LLVM compiler
But it’s no problemMost of us don’t build real time 3D gfx
Make the app feel fastKeep download size smallCut startup time by offloading tasks ASAPUse background tasks & activity indicators
…is in the eye of the beholder
Performance…
Even game developers choose Mono!
Delta engine
Cross Platform Mobile Development - Introduction
But can I access all device capabilities?
iOSMonoTouch.CoreLocationMonoTouch.CoreMotionMonoTouch.AVFoundationMonoTouch.AddressBookMonoTouch.EventKit…
Android: Android.Hardware.SensorAndroid.LocationAndroid.BluetoothAndroid.Nfc…
Windows Phone: Microsoft.Devices.Sensors.GyroscopeMicrosoft.Devices.Sensors.AccelerometerMicrosoft.Devices.Sensors.CompassMicrosoft.Devices.Sensors.Motion…
You can access all device capabilities!For each platform there is a set of namespaces that enable full device access
Use device abstractions!
Ok, but coding models differ significant.
How much code can I share?
Code sharing ISKE app
Re-us-
able20%
Shared
app logic20%
Windows813%
iOS18%
WP712%
Android16%
Shared65%
Specific35%
Per App
...and that’s without the back end
As long as you do proper design
What strategy works best for my app?
Business reasons for your app– Presence– I really want to add value to my product / brand
The tradeoff’s– Always Connected
• HTML, Native– Occasionally connected
• Disconnected HTML, Native– What device capabilities do you need?
• GPS => HTML still an option• Phone book, dial integration, Accelerator, compass, etc
– HTML + Magic box can be used– Native
Cross Platform Mobile Development - Introduction
What strategy works best for my app?
So I choose for HTML– Will I pick pure HTML or use magic box– Magic box adds capabilities to access device
sensors
So I choose Native– Will I pick a new development strategy for each
device?– Will I use one uniform platform and programming
language• Code sharing capability up until 70-80%!
– Bottom line: Native != 3 stacks
Cross Platform Mobile Development - Introduction
Call to actionRevisit your app development strategyWhat are the reasons I choose my current implementation strategyConsider going native, since native provides the best experience– But don’t accept vendor multi stack as the only
solution
If going native consider the use of Mono– Provides all capabilities you have with vendor tools– Adds code sharing capability and will reduce
development cost significantly!
Cross Platform Mobile Development - Introduction
Questions?
Cross Platform Mobile Development - Introduction
Questions?