13. Vladimir Kotov Basic Trends of Modern Software Development 13
Smartphone OS Market Share
IDC, 2012 v. 2011
14. Vladimir Kotov Basic Trends of Modern Software Development 14
Cross-platform Mobile
Development
Application types
● Native
● Web
● Hybrid
● Cross-compile
15. Vladimir Kotov Basic Trends of Modern Software Development 15
Native Apps
Built for a specific platform with the platform SDK, tools and
languages, typically provided by the platform vendor
16. Vladimir Kotov Basic Trends of Modern Software Development 16
Native Apps
+
● Speed and reaction
● Native look'n'feel
● Native API
● Debug + Profile
-
● Only 1 platform
● New language?
● Costs
● App review time
17. Vladimir Kotov Basic Trends of Modern Software Development 17
When to use native app ?
● Use native app if ...
● You want to achieve native look and feel
● You need top performance
● You want to be on the app store(s)
18. Vladimir Kotov Basic Trends of Modern Software Development 18
The Mobile “Server-side” Web
Uses HTML, JavaScript, CSS and runs in a devices browser
19. Vladimir Kotov Basic Trends of Modern Software Development 19
The Mobile “Server-side” Web
● Responsive Design
● Dynamically loads HTML content and assets
● Serves same HTML content and assets for every
device and then scales via CSS using media queries
– e.g. @media screen and (max-width: 650px)
20. Vladimir Kotov Basic Trends of Modern Software Development 20
The Mobile “Server-side” Web
21. Vladimir Kotov Basic Trends of Modern Software Development 21
The Mobile “Server-side” Web
+
● Existing tools
● No license fees
● All platforms with
browser, even your
old Nokia
● Search engine
-
● No app stores
● Limited platform
access (camera,
calendar, etc)
● As fast as your
browser, network
latency
22. Vladimir Kotov Basic Trends of Modern Software Development 22
The Mobile “Client-side” Web
Uses HTML5 + JavaScript and runs in a devices browser
23. Vladimir Kotov Basic Trends of Modern Software Development 23
The Mobile “Client-side” Web
● Sencha Touch
● JQueryMobile
● JQTouch
● KendoUI
● GWT Mobile
24. Vladimir Kotov Basic Trends of Modern Software Development 24
The Mobile “Client-side” Web
+
● Existing tools
● No license fees
● All platforms with
browser
● Search engine
-
● No app stores
● Limited platform
access (camera,
calendar, etc)
● As fast as your
browser, network
latency
25. Vladimir Kotov Basic Trends of Modern Software Development 25
The Mobile “Client-side” Web
● Use the client-side web if ...
● Need something that looks like an app, but
care less for the sensors of your phone
● You want to prototype a service
● You need crossplatform app (not native)
26. Vladimir Kotov Basic Trends of Modern Software Development 26
Hybrid App
HTML5 + JavaScript with a wrapper that gives it native
capabilities
27. Vladimir Kotov Basic Trends of Modern Software Development 27
Hybrid App
● Run inside a native
container to leverage the
device’s browser engine
(but not the browser)
● Web-to-native
abstraction layer
enables access to
device capabilities
28. Vladimir Kotov Basic Trends of Modern Software Development 28
Hybrid App
+
● Existing tools
● No license fees
● All platforms with
browser
● Search engine
-
● As fast as your
browser, network
latency
29. Vladimir Kotov Basic Trends of Modern Software Development 29
Hybrid App
● Use hybrid approach if ...
● You want to build your app based on HTML5
● And need access to the phone's hardware
30. Vladimir Kotov Basic Trends of Modern Software Development 30
Interpreted and cross-compile
31. Vladimir Kotov Basic Trends of Modern Software Development 31
Interpreted and cross-compile
● Appcelerator Titanium
– JavaScript -> Native + Hybrid JS
● MonoTouch
– C# -> Native
● Apache Thrift
– Thrift definition -> Native
● QT
32. Vladimir Kotov Basic Trends of Modern Software Development 32
Interpreted and cross-compile
● Use interpreted or cross-compiled app if ...
● You want to use “one language to build them
all”
● Need access to the phone's hardware
● Need semi- or truly native look and feel /
performance
33. Vladimir Kotov Basic Trends of Modern Software Development 33
Decision
● Factors
● App size and type
● Platforms
● Developers skills
● Budget
● Monetization
● User experience
● Importance of updates
35. Vladimir Kotov Basic Trends of Modern Software Development 35
Android platform
Android is a Linux-based operating system and a
software stack designed for mobile devices
Key Applications
Home, Phone, Browser
Application Framework
Java layer system services
Middlewares
Libraries, Dalvik VM
Operating system
Linux kernel
36. Vladimir Kotov Basic Trends of Modern Software Development 36
Android platform
Developed by Google*
2005 – purchased Android Inc
2007 – established Open Handset Alliance (OHA)
2012 – Oracle v. Google on Java API
Compatibility
Definition
Document
to certify devices
SDK + tools
to create
applications
37. Vladimir Kotov Basic Trends of Modern Software Development 37
Android platform
Main hardware platform for Android is ARM
● support for x86 from the Android x86 project
Advanced RISC Machine
● 7.9 billion shipped in 2011
– 95% smartphones
– 90% hard disk drives
● Reduced instruction set computing (RISC)
● Lower costs, Less heat, Less power usage
● Reduced complexity and simpler design
● Good interfacing to many devices
39. Vladimir Kotov Basic Trends of Modern Software Development 39
Android Linux Kernel
Android kernel based on Linux 2.6 and 3.x (Android 4.0)
● Why Linux?
● Great memory and process management
● Permissions-based security model
● Proven driver model
● Support for shared libraries
● Open source
40. Vladimir Kotov Basic Trends of Modern Software Development 40
Android Linux Kernel
Android “is not Linux”
● Users never see Linux sub system
● Not the full set of standard Linux utilities
● August 2011, Linus Torvalds - "eventually Android and
Linux would come back to a common kernel, but it will
probably not be for four to five years"
41. Vladimir Kotov Basic Trends of Modern Software Development 41
Android Linux Kernel
Android patch of kernel enhancements
● Power Management
● Ashmem
● Binder IPC
● Low Memory Killer
December 2011 - Android Mainlining
Project to put some Android drivers,
patches and features back into the
Linux kernel
42. Vladimir Kotov Basic Trends of Modern Software Development 42
Android Native Libraries
43. Vladimir Kotov Basic Trends of Modern Software Development 43
Android offer
The first open* and comprehensive platform for mobile
devices
● an operating system, user-interface and applications
● a mobile phone without the proprietary obstacles that
have hindered mobile innovation
● an open-source development platform
44. Vladimir Kotov Basic Trends of Modern Software Development 44
Android offer
● Apps are equivalent parts of the phone
using the same API
● Reuse and replacement of application
components
● GSM, EDGE, 3G, 4G, LTE data transfer
● Comprehensive location-based APIs
● Wi-Fi hardware access and peer-to-peer
connection
45. Vladimir Kotov Basic Trends of Modern Software Development 45
Android offer
● Full multimedia hardware control, media
libraries
● APIs for sensor hardware
● Libraries for Bluetooth and NFC
● Shared data stores and APIs for contacts,
social networking
● Background Services, applications, and
processes
● Home-screen Widgets and Live Wallpaper