I would like to share with you today an excellent article below from the Bit Cows blog of my colleague Darren who has 15 plus years of software development experience and great expertise in MADP solutions acquired through dozens of customer project implementations.
Selecting your application architecture for a mobile application depends on a variety of factors, including user experience, integration, and speed. This article will help explain which application architecture to consider for your next project.
In 2016 according to data released by StatCounter, 51.3% of all web visits last month came from mobile devices compared to 48.7% of visits from traditional computing platforms. By the end of 2017, business demand for enterprise mobile applications will grow at least five times faster than internal IT organization’s capacity to deliver them, according to Gartner. They recommended several best practices to overcome these challenges.
Usability, security, integration, connectivity and speed are some of the challenges you will face in mobile application development. Rapid development of complex applications, if not carefully executed, can quickly lead into major support issues.
A key best practice in Gartner’s list is the usage of Rapid Mobile Application Development tools. Various platform options are available for developing applications targeted for iOS, Android and Windows mobile devices. Mobile applications are classified into different types based on the mobile development architecture employed to create them.
The first step in selecting mobile development technology is to decide the mobile architecture to be used. User experience can vary based on the application architecture used.
Platform Specific Application Architecture – Native apps
These mobile applications are written specifically for each target platform using programming languages and tools specific to that platform allowing full usage of the device specific features. A Native iOS application is developed using Objective-C or Swift, and runs only on iOS devices, whereas, a native Android application is developed using Android Studio in Java and runs only on Android devices.
Here are some pros and cons on platform specific native application development:
- Full access to device features
- Rich user experience
- Fluid animations and heavy graphics
- Can quickly take advantage of OS updates
- Longer development timeline when multiple platforms (iOS, Android, Windows) are required.
- Higher maintenance and upgrade cost
- Higher resource costs due to various skillsets needed
Code Shared Application Architecture – Native Compile apps
Here are some key considerations on code shared native application development:
- Common business logic
- Native compilation for each target platform
- Full access to device features
- Code duplication can be avoided up to 70%leading to better time market and lower maintenance cost.
- Rapid development timeline across platforms
- Even if those solutions offer a free entry plan, there is often a cost associated to premium features.
Hybrid Application Architecture – Mobile Web apps
Hybrid mobile applications are developed using standard HTML5 mobile web technologies and then packaged into a fully native application. Once packaged this application can be downloaded onto the device and function very similar to a native application. Apache Cordova is the most commonly used mobile development framework that provides the wrapper required for hybrid mobile applications to access device functionality. An advantage of this approach is that there is one single code base from which it is possible to produce several versions of your application for each target mobile platform.
Here are some key considerations on hybrid mobile application development:
- Built using standard web technologies
- Device agnostic client development
- Access to common device features
- Pre-built integrations with web services, data sources
- Rapid application development
- Limited access to advanced device features (no access to sensors, GPS, camera, phone …)
- UI not specific to a device type
- Sometimes a slower user experience.
Platform native application architecture is best suited for consumer applications and games that need to attract customers with rich UI, heavy graphics and animations and other device specific features.
Code shared native application architecture in theory can achieve all the benefits of platform specific architecture with the additional advantage of needing a single skill set to develop.
Hybrid architecture is best suited for applications that do not need rich UI, heavy graphics and animations.