This is part 3 of a multiple part series on Mobile Development. The first Introductory blog can be found here. Part 2 of the series can be found here. I will keep updating the introduction page whenever I add a new blog post in this series. Keep visiting!!!
The mobile application architecture dictates how quickly and cost-effectively a new app will be released and updated mobile apps to your user base. Many factors come into play when choosing the best mobile application architecture for your app. Mobile applications are mainly divided into following types.
- Developers only need to maintain one code base
- The app is immediately available to users regardless of their device platform or underlying operating system
- Developers familiar with web app technologies can build this type of app New versions are instantly available
- Users do not have to install the app
Disadvantages of developing a mobile web app
- Developers have limited access to device native features and functionality
- Web technologies offer limited performance in very complex user interactions, such as animations
- Does not support offline data applications
- The app cannot be distributed via the app stores, where users are accustomed to looking for new apps
A native app is designed to run on one specific mobile operating system, such as iOS, Android or Windows Phone. For example, native Android apps are usually built in Google Android Studio using Java, native iOS apps are built in Apple’s XCode using the Swift or Objective-C, while Windows apps are build using C# programming languages. This approach allows developers to use device features and capabilities, such as a camera, GPS etc.
Native apps connect to external systems for data and functionality via standard API web technologies, such as REST, exposed by backend application servers.
Benefits of developing a native app
- Developers have access to all device features and functionality
- Developers can deliver a very complex user experience such as gaming or multimedia
- Support offline data applications
- The app can be distributed via the Apple, Windows or Google store
Disadvantages of developing a native app
- Development costs are high and timelines can be long, due to extensive hand-coding
- Organizations must build and maintain a different code base of the same app for each mobile operating system
- Developers must learn a different programming language for each version of the same app
- Version distribution can be slow due to the app stores approval processes
In web apps we have minimum access to a device and operating system features with one code base running on all types of mobile operating systems, whereas Native apps have full access to device and operating system features but we have to write different code for each operating system. Hybrid apps are code once and build for all philosophy. A hybrid application combines the best attributes of native and mobile web apps and offline support.
There are two types of Hybrid applications:
1. Hybrid Native Apps
A hybrid Native app is similar to a hybrid web app but the code is written using a technology/programming language which is closer to Native code. Normally it is written in a language which sits on top of native layer and when compiled converts the code to the native code. The code written takes full advantage of device features and capabilities. Example are Xamarin, ReactNative, Titanium Studio etc.
Benefits of developing a hybrid native app
- The performance of hybrid native apps is nearly same as native apps
- Most of the app consists of a single code base for all devices, new and old
- Developers have to know only the selected packaging language or programming language
- The app can use device features and capabilities
- The app can be distributed via app stores
- New versions can be released quickly
Disadvantages of developing a hybrid native app:
- May need license for using the technology.
- Need to learn and maintain a new language or package.
- Each new native component added needs to be maintained for multiple code bases
- Some performance and user experience limitations
- Access to the device is limited to what’s supported by the vendor
2. Hybrid Web Apps
Benefits of developing a hybrid web app
- Most of the app will be built using a single code base with web standards
- Developers are more likely to have some of the necessary web development skills
- The app can run on existing web infrastructures
- Most new versions can be released immediately since the vast majority of changes will be on the web app
- The app can access device sensors and functionality
- The app can be distributed via the app stores
Disadvantages of developing a hybrid web app
- Organizations must develop, maintain and deploy several code bases of the native shell to support multiple devices and operating systems
- There are some limitations in terms of performance and user experience that make this approach impractical for some apps, like games