Modern Mobile Development
July 2017
- David Fekke
- Building mobile native app for 9 years
- Swyft Technology L.L.C.
- Chief Mobile Architect
- Twitter: @davidfekke | @jaxnode
- Skype: davidfekke
Fun Facts
- 7 Billion people in the world
- 4.8 Billion have smartphones
- 4.2 Billion have toothbrushes
Developing for the World
- 100 of millions of PCs
- Billions of Mobile devices
- Developing world skipped land lines and PC revolution
Mobile First Web Dev
- If you are a web developer, you are a mobile developer
- Use Mobile first design
- Bootstrap 3 is a mobile first framework
- Mobile CSS should load first
- Use tools like WebPack to minimize JS and CSS content
Hybrid
- HTML/CSS/JS in a native container
- PhoneGap/Cordova
- Native functionality available through plugins
- Publish to AppStores
Native
- Build native using native languages
- Vendor supplied toolchains
- Best Performance
- APIs and languages more difficult to learn
JS bound Native apps
- React Native
- Native Script
- Uses native components bound by JavaScript
- Create truly cross platform native apps
- React is a Facebook OSS project
- Native Script is a Telerik OSS project
Unity
- Game Development
- Game Engine supports 2D and 3D
- Unity IDE
- Supports C#, UnityScript (i.e. JavaScript)
- iOS/Android OpenGL|ES Abstraction
Xamarin (Visual Studio)
- Started by Miguel De Icaza from Mono project
- Rebranded Visual Studio
- Now Visual Studio for macOS
- Write code in C#
- Share code between iOS, Android and Windows Phone
- Xamarin Forms shares native UI between platforms
- Sold to Microsoft last year
Mobile platforms
- iOS
- Android
- BlackBerry OS (moving to Android)
- Windows Phone (nevermind)
- Apple and Google own Smartphone space
You will target over 90% of the world smartphone market if you build for iOS and Android.
iOS
- Based on BSD Unix, Mach microkernel
- Core foundation came from NextStep
- Obj-C primary language
- C and C++ also supported
- Swift to the rescue
- Xcode IDE/Interface Builder
- $99 a year for developer membership
Android OS
- Based on Linux
- Purchased by Google
- Java Dalvik/Android Runtime (ART)
- Ahead of Time compiler with JIT
- Android Studio
- Can use native code w/ NDK
- Not posix compliant ☹️
- Hard to test because of thousands of Android devices
Windows Phone
- Build native apps with .NET and Xaml
- Less than 1% market share
- Build w/ Visual Studio
- Microsoft AppStore
Publishing to AppStores
- Apple Developer membership $99
- Google Play one time $25
- Requires certificates
- Many Rules to follow
- Need bank account and business to collect revenue
- App approval on iTunes Connect less than 2 days, Google a couple of hours
So Many Choices
- Web Only
- Hybrid
- Native
- React Native
- Xamarin
Languages
- Web/Hybrid: HTML5/CSS/JavaScript
- iOS Native: Obj-C/Swift
- Android Native: Java/Kotlin
- React-Native: JSX/JavaScript ES2016
- Xamarin: C#/F#
Uncanny Valley
Avoiding Uncanny Valley
- UI elements different between OSes
- JQuery Mobile shares same elements between operating systems
- Web, PhoneGap and Cordova bad choices for avoiding Uncanny Valley
Native Development
- Best user experience
- Superior performance
- Better Support for tools
- Sucks to have to write the same app twice
React-Native
- Use native UI
- 10-20% tradeoff in performance vs fully native
- You can use Web developers to build native apps
- Best code reuse between platforms
- Layout based on FlexBox
- Still new and buggy
Picking a framework
- Which OSes do I need to support?
- What kind of development experience does my team have? C++, .NET, Java?
- Is most of your development experience Web based?
- Is Best of breed more important than cross-platform?
Demo
Questions?
Resources
- developer.apple.com
- developer.android.com
- cordova.apache.org
- Tal Kol talk at ReactConf 2016
- https://www.youtube.com/watch?v=abSNo2P9mMM
Modern Mobile Development
By David Fekke
Modern Mobile Development
This is a presentation I gave to the Python User Group on Modern Mobile Development
- 1,346