SlideShare a Scribd company logo
Mobile Development
by Alan Uthoff
an Overview
Who is Alan
Uthoff?
• Works as Lead Developer at GameSalad Inc.
• Professional game developer for 8+ years.
• Has been doing mobile development for 3 years.
• Enjoys working in Linux or Mac
The Mobile Landscape
Source comScore Reports November 2014 U.S.
Smartphone Subscriber Market Share
iOS Android Other
iOS Android
Windows Phone Other
Android Captured Record 85 Percent Share
of Global Smartphone Shipments in Q2 2014
OS That These Platforms are
Really Running
• iOS is based on
Darwin (a flavor of
Unix)
• Android is built on top
of the Linux kernel
• Blackberry 10 is
based on QNX (Unix-
like POSIX compliant)
Mobile Development
Problems
• Native APIs in different languages
• Constrained resources (Memory, CPU/GPU, and
Battery)
• App store and their rules
• Multiple screen resolutions
• Multiple screen orientations
Mobile Development
Problems cont.
• User base using different API level and OS versions
• Creating rendering contexts is different on all
platforms and requires calling in to the native API
• OS is not forgiving on excessive resource usage and
may take away resource if needed elsewhere
• Native APIs are deprecated and removed with each
new OS release
• App store limits the size your app can be
iOS Things to Know
• Requires an Apple developer account
($99/Year)
• iOS store has submission guidelines
• Apple will and has changed iOS app
store submission guidelines without
notice
• Every year Apple updates the OS and
API (deprecating and removing old
ones)
• Requires a Mac to submit an app to
the iOS store
• All libraries have to be statically linked
iOS Things to Know cont.
• Many restraints on scripting
run time engines
• No generated code is
allowed.
• JIT (Just in Time Compiling )
is not allowed
• App file size can be 2GB with
binary being less than 60MB
• Downloads over cell
networks is limited to 100MB
iOS Version Distribution
Source Apple, as of Feb 16 2015
Android Things to Know
• Multiple app stores with some
requiring a fee (Google Play
$25 one time)
• Tool chain can be difficult to
work with (especially C++ and
NDK) and is very unpolished
• Apps have very little control
over resource usage and the
OS may take away resources
at any time
• Debugging can be very
difficult, especially C++ code
Android Things to Know
cont.
• Max app file size depends on
store
✤ Google Play
★ Main app has to be
under 50MB with
optional expansion file
up to 4GB
✤ Amazon
★ No limit but
recommends less then
100MB
• OS version fragmentation
Android Fragmentation
Source Google January 27 - February 2 2015 device using google play
What to do
• Make app that looks and feel good on each
platform
• One code base and easy to maintain
What the Pros Do
• Code base per platform
• Abstract the platform layer to share as much
code as posable
Multiple Code Bases
• Pro
• Short term faster development
• Very native look and feel
• Cons
• Adding new platforms is very costly
• Long term new features take a long time to add
• Hard to release new features across all platforms at the same
time
Multiple Code Bases
• In the long term the
maintenance and new
platform cost will out weigh
all of the pros.
Abstraction and Core Code
• Pro
• Sharing code brings down maintenance cost and scales
with new platforms
• Long term easy to add features across all platforms
• Easy to add new platforms
• Cons
• UI may not look and feel native
• Short term is slow to develop first platform
• The core should be
cross platform and
easy to maintain
• The platform
abstraction layer
needs to be easy to
port to new
platforms
Structure of an App
Platform Abstaction Level
Core Code
OS API
Mobile Native API Language
Platform
Native API
Language
Other Options
iOS Objective-C/Swift C/C++
Android Java C/C++
BlackBerry C/C++ and QML
Java, HTML5, and
Adobe AIR
Windows Phone 7 C# None
Windows Phone 8 C# C++, HTML5
What Language Should the
Core Be In
• JavaScript
• C#
• C++
Javascript
• Pros:
• Easy to develop in and easy to find developers
• Will run on most platforms
• Can use same language for core and abstraction layer
• Cons
• Does not perform well on the mobile devices
• Garbage Collector can impact performance
C#
• Pros
• Easy to develop in and easy to find developers
• Can use same language for core and abstraction layer
• Cons
• Reliant on one company.
• Code may not be portable to platforms out side the ecosystem
• Garbage Collector may impact performance
• Overhead of the .net framework
C++
• Pro
• Very fast
• Very portable and will run on almost any platform
• Can interface with all native platform layers
• Cons
• Can be hard to find developer or train current ones
• Can be slower to develop in than higher level languages
Abstraction Layer
• Core in C#
• Xamarin (Mono Touch)
• Core in Javascript
• Titanium
• Cordova (Phone Gap)
• Roll Your own
• Core in C++
• Marmalade
• QT
• Roll Your own
3rd Party Framework
• Pro
• Will take less development time to produce a product
• Can choose the programming language
• Cons
• Can not control performance
• Most of the time will not have native UI look and feel
• Usually have no control over the SDK code base
Roll your own
• Pros
• Control the code base
• Performance
• Can get perfect native look and feel
• Cons
• Slower to develop
• Keep up and integrate with native APIs
• Limited programming language options
Roll Your Own
• Write a cross platform
framework in C++
• Most mobile platforms
support C++ and allow
calling to native API in
some fashion
• Write as small a platform
layer as possible to keep
code portable
Tips
• Stay away from Java, Objective-C and Swift. They are not
portable on mobile devices.
• Remember to program within the constraints of the
device.
• Games
• Write the core in C++ or C++ and a scripting
language like Lua
• If the scripting language has a Garbage Collector
make sure you have full control of it
Conclusion
• Android still has the market share
• Try to avoid multiple code bases
• Use an abstraction platform layer to interact with the OS
API
• Use a third party framework for quicker development
• Roll your own framework if you need more control and
customization of your code base
• Don’t use a language that will lock you into a platform
Alan Uthoff
Mobile Development
an Overview
Q&A

More Related Content

What's hot

New Frontiers in Motion and Interactivity
New Frontiers in Motion and InteractivityNew Frontiers in Motion and Interactivity
New Frontiers in Motion and Interactivity
Joseph Labrecque
 
AIR Mobile Application Development: Package, Building, Design & Skinning
AIR Mobile Application Development: Package, Building, Design & SkinningAIR Mobile Application Development: Package, Building, Design & Skinning
AIR Mobile Application Development: Package, Building, Design & Skinning
Renaun Erickson
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
NITIN GUPTA
 
Android Technology
Android TechnologyAndroid Technology
Android Technology
deepankarsingh26
 
Android system
Android systemAndroid system
Android system
Pankaj Kumawat
 
Windows phone 7
Windows phone 7Windows phone 7
Windows phone 7
Amal Dev
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
Awok
 
Mobile Learning Development Tools
Mobile Learning Development ToolsMobile Learning Development Tools
Mobile Learning Development Tools
Upside Learning Solutions
 
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
Aimee Maree Forsstrom
 
Tcdnug xamarin
Tcdnug xamarinTcdnug xamarin
Tcdnug xamarin
Joe Koletar
 
Android
AndroidAndroid
Android
Jindal Gohil
 
Enhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osEnhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_os
Arnav Gupta
 
Aandroid
AandroidAandroid
Aandroid
jyoti_prakash
 
How Android is different from other systems – An exploration of the design de...
How Android is different from other systems – An exploration of the design de...How Android is different from other systems – An exploration of the design de...
How Android is different from other systems – An exploration of the design de...
IndicThreads
 
Android Versions
Android VersionsAndroid Versions
Android Versions
Kamran Zahid
 
Cross-Platform Mobile Development with PhoneGap-Vince Bullinger
Cross-Platform Mobile Development with PhoneGap-Vince BullingerCross-Platform Mobile Development with PhoneGap-Vince Bullinger
Cross-Platform Mobile Development with PhoneGap-Vince Bullinger
Mobile March
 
Xamarin Mobile March 2014
Xamarin Mobile March 2014Xamarin Mobile March 2014
Xamarin Mobile March 2014
Joe Koletar
 
1319571 634635606205391250
1319571 6346356062053912501319571 634635606205391250
1319571 634635606205391250
MadNor Exe
 
Automated mobile application porting
Automated mobile application portingAutomated mobile application porting
Automated mobile application porting
e27
 
Appium: Prime Cuts
Appium: Prime CutsAppium: Prime Cuts
Appium: Prime Cuts
Sauce Labs
 

What's hot (20)

New Frontiers in Motion and Interactivity
New Frontiers in Motion and InteractivityNew Frontiers in Motion and Interactivity
New Frontiers in Motion and Interactivity
 
AIR Mobile Application Development: Package, Building, Design & Skinning
AIR Mobile Application Development: Package, Building, Design & SkinningAIR Mobile Application Development: Package, Building, Design & Skinning
AIR Mobile Application Development: Package, Building, Design & Skinning
 
Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA Android Application Development Training by NITIN GUPTA
Android Application Development Training by NITIN GUPTA
 
Android Technology
Android TechnologyAndroid Technology
Android Technology
 
Android system
Android systemAndroid system
Android system
 
Windows phone 7
Windows phone 7Windows phone 7
Windows phone 7
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
Mobile Learning Development Tools
Mobile Learning Development ToolsMobile Learning Development Tools
Mobile Learning Development Tools
 
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
FirefoxOS and its use of Linux (a deep dive into Gonk architecture)
 
Tcdnug xamarin
Tcdnug xamarinTcdnug xamarin
Tcdnug xamarin
 
Android
AndroidAndroid
Android
 
Enhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_osEnhancing and modifying_the_core_android_os
Enhancing and modifying_the_core_android_os
 
Aandroid
AandroidAandroid
Aandroid
 
How Android is different from other systems – An exploration of the design de...
How Android is different from other systems – An exploration of the design de...How Android is different from other systems – An exploration of the design de...
How Android is different from other systems – An exploration of the design de...
 
Android Versions
Android VersionsAndroid Versions
Android Versions
 
Cross-Platform Mobile Development with PhoneGap-Vince Bullinger
Cross-Platform Mobile Development with PhoneGap-Vince BullingerCross-Platform Mobile Development with PhoneGap-Vince Bullinger
Cross-Platform Mobile Development with PhoneGap-Vince Bullinger
 
Xamarin Mobile March 2014
Xamarin Mobile March 2014Xamarin Mobile March 2014
Xamarin Mobile March 2014
 
1319571 634635606205391250
1319571 6346356062053912501319571 634635606205391250
1319571 634635606205391250
 
Automated mobile application porting
Automated mobile application portingAutomated mobile application porting
Automated mobile application porting
 
Appium: Prime Cuts
Appium: Prime CutsAppium: Prime Cuts
Appium: Prime Cuts
 

Viewers also liked

Rubrics
RubricsRubrics
Rubrics
Rowan Wagner
 
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARKSPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
Tsuyoshi Horigome
 
Educación y Sociedad
Educación y SociedadEducación y Sociedad
Educación y Sociedad
BeaDiaz23
 
MAP%INS
MAP%INSMAP%INS
MAP%INS
Jamyee Lee
 
Ciencia y metafisica
Ciencia y metafisicaCiencia y metafisica
Ciencia y metafisica
Ignacio Cigliutti
 
Sane english letter c
Sane english letter cSane english letter c
Sane english letter c
Rowan Wagner
 
經費類分錄
經費類分錄經費類分錄
經費類分錄lys167
 
diagrama causa afecto del suelo
diagrama causa afecto  del suelodiagrama causa afecto  del suelo
diagrama causa afecto del suelo
Juana Berlinda Becerra Hinestroza
 
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
Diego Rodriguez
 
Publications_Sefik_Tunc
Publications_Sefik_TuncPublications_Sefik_Tunc
Publications_Sefik_Tunc
Sefik Tunc
 
Organizational Behavior Chapter 9
Organizational Behavior Chapter 9Organizational Behavior Chapter 9
Organizational Behavior Chapter 9
Dr. John V. Padua
 
LinkedIn Executive Playbook
LinkedIn Executive PlaybookLinkedIn Executive Playbook
LinkedIn Executive Playbook
Brett Mikoy
 
Creating and executing a strategy to preserve your company’s scale advantage
Creating and executing a strategy to preserve your company’s scale advantageCreating and executing a strategy to preserve your company’s scale advantage
Creating and executing a strategy to preserve your company’s scale advantage
Wilson Perumal and Company
 
Fabrication additive - Impression 3D
Fabrication additive - Impression 3DFabrication additive - Impression 3D
Fabrication additive - Impression 3D
CYB@RDECHE
 
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
Daniel Teoh Tan
 

Viewers also liked (16)

Rubrics
RubricsRubrics
Rubrics
 
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARKSPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
SPICE MODEL of 2SK3863 (Professional+BDP Model) in SPICE PARK
 
080503手帳TSUKUBA
080503手帳TSUKUBA080503手帳TSUKUBA
080503手帳TSUKUBA
 
Educación y Sociedad
Educación y SociedadEducación y Sociedad
Educación y Sociedad
 
MAP%INS
MAP%INSMAP%INS
MAP%INS
 
Ciencia y metafisica
Ciencia y metafisicaCiencia y metafisica
Ciencia y metafisica
 
Sane english letter c
Sane english letter cSane english letter c
Sane english letter c
 
經費類分錄
經費類分錄經費類分錄
經費類分錄
 
diagrama causa afecto del suelo
diagrama causa afecto  del suelodiagrama causa afecto  del suelo
diagrama causa afecto del suelo
 
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
Articulo Cientifico: Lineamientos para el desarrollo del Ámbito Pedagógico Cu...
 
Publications_Sefik_Tunc
Publications_Sefik_TuncPublications_Sefik_Tunc
Publications_Sefik_Tunc
 
Organizational Behavior Chapter 9
Organizational Behavior Chapter 9Organizational Behavior Chapter 9
Organizational Behavior Chapter 9
 
LinkedIn Executive Playbook
LinkedIn Executive PlaybookLinkedIn Executive Playbook
LinkedIn Executive Playbook
 
Creating and executing a strategy to preserve your company’s scale advantage
Creating and executing a strategy to preserve your company’s scale advantageCreating and executing a strategy to preserve your company’s scale advantage
Creating and executing a strategy to preserve your company’s scale advantage
 
Fabrication additive - Impression 3D
Fabrication additive - Impression 3DFabrication additive - Impression 3D
Fabrication additive - Impression 3D
 
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
5-Chloro-8-hydroxy-6-methyl-1,4-naphthoquinone
 

Similar to Mobile Development

Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
webprogr.com
 
Building Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
Building Cross-Platform Mobile Apps with PhoneGap and Sencha TouchBuilding Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
Building Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
Axel Buerkle
 
Top 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App DevelopmentTop 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App Development
techugo
 
WIPJam Cross Platform Tools - Dec 2013
WIPJam   Cross Platform Tools - Dec 2013WIPJam   Cross Platform Tools - Dec 2013
WIPJam Cross Platform Tools - Dec 2013
Mark Arteaga
 
Development of a mobile app for Android
Development of a mobile app for AndroidDevelopment of a mobile app for Android
Development of a mobile app for Android
AlexJReid
 
Cross-platform development frameworks
Cross-platform development frameworksCross-platform development frameworks
Cross-platform development frameworks
Carlo Bernaschina
 
Cross platform mobile application devlopment
Cross platform mobile application devlopmentCross platform mobile application devlopment
Cross platform mobile application devlopment
Prabhat gangwar
 
Why Flutter.pdf
Why Flutter.pdfWhy Flutter.pdf
Why Flutter.pdf
Randal Schwartz
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
Cross Platform Development in C# (DDDNorth 2013)
Cross Platform Development in C# (DDDNorth 2013)Cross Platform Development in C# (DDDNorth 2013)
Cross Platform Development in C# (DDDNorth 2013)
ross.dargan
 
MobApp development 01 application platform.pptx
MobApp development 01 application platform.pptxMobApp development 01 application platform.pptx
MobApp development 01 application platform.pptx
sanaiftikhar23
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Development
thedumbterminal
 
Flutter talkshow
Flutter talkshowFlutter talkshow
Flutter talkshow
Nhan Cao
 
Developing Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGapDeveloping Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGap
Amar Mesic
 
Synapse india reviews on mobile application development
Synapse india reviews on mobile application developmentSynapse india reviews on mobile application development
Synapse india reviews on mobile application development
saritasingh19866
 
Mobile App Landscape for the Non-Technical
Mobile App Landscape for the Non-TechnicalMobile App Landscape for the Non-Technical
Mobile App Landscape for the Non-Technical
James Quick
 
Advance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdfAdvance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdf
percivalfernandez2
 
Qa extreme 2011 eran kinsbruner
Qa extreme 2011 eran kinsbrunerQa extreme 2011 eran kinsbruner
Qa extreme 2011 eran kinsbruner
Eran Kinsbrunner
 
Compilation Of C/C++ program in Android
Compilation Of C/C++ program in AndroidCompilation Of C/C++ program in Android
Compilation Of C/C++ program in Android
rahulverma1080
 
Android Seminar || history || versions||application developement
Android Seminar || history || versions||application developement Android Seminar || history || versions||application developement
Android Seminar || history || versions||application developement
Shubham Pahune
 

Similar to Mobile Development (20)

Cross platform mobile application development
Cross platform mobile application developmentCross platform mobile application development
Cross platform mobile application development
 
Building Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
Building Cross-Platform Mobile Apps with PhoneGap and Sencha TouchBuilding Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
Building Cross-Platform Mobile Apps with PhoneGap and Sencha Touch
 
Top 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App DevelopmentTop 4 Cross Platform tools for Mobile App Development
Top 4 Cross Platform tools for Mobile App Development
 
WIPJam Cross Platform Tools - Dec 2013
WIPJam   Cross Platform Tools - Dec 2013WIPJam   Cross Platform Tools - Dec 2013
WIPJam Cross Platform Tools - Dec 2013
 
Development of a mobile app for Android
Development of a mobile app for AndroidDevelopment of a mobile app for Android
Development of a mobile app for Android
 
Cross-platform development frameworks
Cross-platform development frameworksCross-platform development frameworks
Cross-platform development frameworks
 
Cross platform mobile application devlopment
Cross platform mobile application devlopmentCross platform mobile application devlopment
Cross platform mobile application devlopment
 
Why Flutter.pdf
Why Flutter.pdfWhy Flutter.pdf
Why Flutter.pdf
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
 
Cross Platform Development in C# (DDDNorth 2013)
Cross Platform Development in C# (DDDNorth 2013)Cross Platform Development in C# (DDDNorth 2013)
Cross Platform Development in C# (DDDNorth 2013)
 
MobApp development 01 application platform.pptx
MobApp development 01 application platform.pptxMobApp development 01 application platform.pptx
MobApp development 01 application platform.pptx
 
Apache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application DevelopmentApache Cordova, Hybrid Application Development
Apache Cordova, Hybrid Application Development
 
Flutter talkshow
Flutter talkshowFlutter talkshow
Flutter talkshow
 
Developing Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGapDeveloping Windows Phone 8 apps using PhoneGap
Developing Windows Phone 8 apps using PhoneGap
 
Synapse india reviews on mobile application development
Synapse india reviews on mobile application developmentSynapse india reviews on mobile application development
Synapse india reviews on mobile application development
 
Mobile App Landscape for the Non-Technical
Mobile App Landscape for the Non-TechnicalMobile App Landscape for the Non-Technical
Mobile App Landscape for the Non-Technical
 
Advance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdfAdvance C# Programming Part 1.pdf
Advance C# Programming Part 1.pdf
 
Qa extreme 2011 eran kinsbruner
Qa extreme 2011 eran kinsbrunerQa extreme 2011 eran kinsbruner
Qa extreme 2011 eran kinsbruner
 
Compilation Of C/C++ program in Android
Compilation Of C/C++ program in AndroidCompilation Of C/C++ program in Android
Compilation Of C/C++ program in Android
 
Android Seminar || history || versions||application developement
Android Seminar || history || versions||application developement Android Seminar || history || versions||application developement
Android Seminar || history || versions||application developement
 

Recently uploaded

Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 

Recently uploaded (20)

Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 

Mobile Development

  • 1. Mobile Development by Alan Uthoff an Overview
  • 2. Who is Alan Uthoff? • Works as Lead Developer at GameSalad Inc. • Professional game developer for 8+ years. • Has been doing mobile development for 3 years. • Enjoys working in Linux or Mac
  • 3. The Mobile Landscape Source comScore Reports November 2014 U.S. Smartphone Subscriber Market Share iOS Android Other iOS Android Windows Phone Other Android Captured Record 85 Percent Share of Global Smartphone Shipments in Q2 2014
  • 4. OS That These Platforms are Really Running • iOS is based on Darwin (a flavor of Unix) • Android is built on top of the Linux kernel • Blackberry 10 is based on QNX (Unix- like POSIX compliant)
  • 5. Mobile Development Problems • Native APIs in different languages • Constrained resources (Memory, CPU/GPU, and Battery) • App store and their rules • Multiple screen resolutions • Multiple screen orientations
  • 6. Mobile Development Problems cont. • User base using different API level and OS versions • Creating rendering contexts is different on all platforms and requires calling in to the native API • OS is not forgiving on excessive resource usage and may take away resource if needed elsewhere • Native APIs are deprecated and removed with each new OS release • App store limits the size your app can be
  • 7. iOS Things to Know • Requires an Apple developer account ($99/Year) • iOS store has submission guidelines • Apple will and has changed iOS app store submission guidelines without notice • Every year Apple updates the OS and API (deprecating and removing old ones) • Requires a Mac to submit an app to the iOS store • All libraries have to be statically linked
  • 8. iOS Things to Know cont. • Many restraints on scripting run time engines • No generated code is allowed. • JIT (Just in Time Compiling ) is not allowed • App file size can be 2GB with binary being less than 60MB • Downloads over cell networks is limited to 100MB
  • 9. iOS Version Distribution Source Apple, as of Feb 16 2015
  • 10. Android Things to Know • Multiple app stores with some requiring a fee (Google Play $25 one time) • Tool chain can be difficult to work with (especially C++ and NDK) and is very unpolished • Apps have very little control over resource usage and the OS may take away resources at any time • Debugging can be very difficult, especially C++ code
  • 11. Android Things to Know cont. • Max app file size depends on store ✤ Google Play ★ Main app has to be under 50MB with optional expansion file up to 4GB ✤ Amazon ★ No limit but recommends less then 100MB • OS version fragmentation
  • 12. Android Fragmentation Source Google January 27 - February 2 2015 device using google play
  • 13. What to do • Make app that looks and feel good on each platform • One code base and easy to maintain
  • 14. What the Pros Do • Code base per platform • Abstract the platform layer to share as much code as posable
  • 15. Multiple Code Bases • Pro • Short term faster development • Very native look and feel • Cons • Adding new platforms is very costly • Long term new features take a long time to add • Hard to release new features across all platforms at the same time
  • 16. Multiple Code Bases • In the long term the maintenance and new platform cost will out weigh all of the pros.
  • 17. Abstraction and Core Code • Pro • Sharing code brings down maintenance cost and scales with new platforms • Long term easy to add features across all platforms • Easy to add new platforms • Cons • UI may not look and feel native • Short term is slow to develop first platform
  • 18. • The core should be cross platform and easy to maintain • The platform abstraction layer needs to be easy to port to new platforms Structure of an App Platform Abstaction Level Core Code OS API
  • 19. Mobile Native API Language Platform Native API Language Other Options iOS Objective-C/Swift C/C++ Android Java C/C++ BlackBerry C/C++ and QML Java, HTML5, and Adobe AIR Windows Phone 7 C# None Windows Phone 8 C# C++, HTML5
  • 20. What Language Should the Core Be In • JavaScript • C# • C++
  • 21. Javascript • Pros: • Easy to develop in and easy to find developers • Will run on most platforms • Can use same language for core and abstraction layer • Cons • Does not perform well on the mobile devices • Garbage Collector can impact performance
  • 22. C# • Pros • Easy to develop in and easy to find developers • Can use same language for core and abstraction layer • Cons • Reliant on one company. • Code may not be portable to platforms out side the ecosystem • Garbage Collector may impact performance • Overhead of the .net framework
  • 23. C++ • Pro • Very fast • Very portable and will run on almost any platform • Can interface with all native platform layers • Cons • Can be hard to find developer or train current ones • Can be slower to develop in than higher level languages
  • 24. Abstraction Layer • Core in C# • Xamarin (Mono Touch) • Core in Javascript • Titanium • Cordova (Phone Gap) • Roll Your own • Core in C++ • Marmalade • QT • Roll Your own
  • 25. 3rd Party Framework • Pro • Will take less development time to produce a product • Can choose the programming language • Cons • Can not control performance • Most of the time will not have native UI look and feel • Usually have no control over the SDK code base
  • 26. Roll your own • Pros • Control the code base • Performance • Can get perfect native look and feel • Cons • Slower to develop • Keep up and integrate with native APIs • Limited programming language options
  • 27. Roll Your Own • Write a cross platform framework in C++ • Most mobile platforms support C++ and allow calling to native API in some fashion • Write as small a platform layer as possible to keep code portable
  • 28. Tips • Stay away from Java, Objective-C and Swift. They are not portable on mobile devices. • Remember to program within the constraints of the device. • Games • Write the core in C++ or C++ and a scripting language like Lua • If the scripting language has a Garbage Collector make sure you have full control of it
  • 29. Conclusion • Android still has the market share • Try to avoid multiple code bases • Use an abstraction platform layer to interact with the OS API • Use a third party framework for quicker development • Roll your own framework if you need more control and customization of your code base • Don’t use a language that will lock you into a platform