Upload
vladimir-kotov
View
104
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
DITF LDI Lietišķo datorsistēmu programmatūras
profesora grupa
e-Business Solutions
Basic Trends of Modern Software Development
Vladimir Kotov Basic Trends of Modern Software Development
Mobile Development Trends
Vladimir Kotov Basic Trends of Modern Software Development 3
Need an App ...
Vladimir Kotov Basic Trends of Modern Software Development 4
Popular Devices in Latvia
Versions in Latvia
Version Statistics
December 2012
Version Statistics
December 2012
Vladimir Kotov Basic Trends of Modern Software Development 13
Smartphone OS Market Share
IDC, 2012 v. 2011
Vladimir Kotov Basic Trends of Modern Software Development 14
Cross-platform Mobile Development
Application types● Native● Web● Hybrid● Cross-compile
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
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
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)
Vladimir Kotov Basic Trends of Modern Software Development 18
The Mobile “Server-side” Web
Uses HTML, JavaScript, CSS and runs in a devices browser
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)
Vladimir Kotov Basic Trends of Modern Software Development 20
The Mobile “Server-side” Web
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
Vladimir Kotov Basic Trends of Modern Software Development 22
The Mobile “Client-side” Web
Uses HTML5 + JavaScript and runs in a devices browser
Vladimir Kotov Basic Trends of Modern Software Development 23
The Mobile “Client-side” Web
● Sencha Touch● JQueryMobile
● JQTouch● KendoUI
● GWT Mobile
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
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)
Vladimir Kotov Basic Trends of Modern Software Development 26
Hybrid App
HTML5 + JavaScript with a wrapper that gives it native capabilities
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
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
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
Vladimir Kotov Basic Trends of Modern Software Development 30
Interpreted and cross-compile
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
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
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
Vladimir Kotov Basic Trends of Modern Software Development 34
Decision
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
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
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
Vladimir Kotov Basic Trends of Modern Software Development 38
Android Anatomy
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
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"
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
Vladimir Kotov Basic Trends of Modern Software Development 42
Android Native Libraries
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
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
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