In this blog we will look into the differences between native, mobile and hybrid mobile applications.
We will start by looking into native mobile apps, which are the conventional mobile apps. We will then look into web apps, which are written in HTML and are run using the browser. Then we will look into hybrid apps which are basically a combination of the two.
Native mobile app
Native apps have binary executable files which are downloaded and installed into the device and stored in the device memory. We can download native apps by visiting their specific app store such as iTunes for iOS and google play store for android applications. Once the app is installed on the device, the user can launch it like any other application by just tapping the application icon. Once the native app is launched, it can directly interact with the mobile operating system without any intermediary in between. The app can access all the native frameworks made available to it by the native mobile operating system. Native apps also have a look and feel typical to that of the specific mobile OS.
The mobile operating system provides some tools and utility kits for software development which are commonly called the SDK (Software Development Kit) of the mobile OS. The developers write the source code of the application in the tools provided by the OS and integrate additional resources such as images, audio, etc. Then they use the tool to compile the source code and package it with the resources in order to create an executable file which can be distributed and run on the mobile devices.
Lets take a quick look on how this is done on iOS. To create native iOS apps for iPhone / iPad, the developers write the code in Swift or objective C. They then compile and package the apps using Apple’s native tools. They all come bundled in a single IDE called XCode. The output from XCode is a .app file which can be directly submitted to the apple app store. Users can then download the .app file from the app store in the form of an application and run on their iOS devices. This complete process of developing an application is different for different operating systems. For android, blackberry and windows phone there exist separate tools for development.
So as we can see, the process and tools required for developing native apps are different for various platforms. If we write the code for one platform we cannot use it for others. This means that the process of developing and maintaining native apps for multiple platforms is very expensive. So why write native apps at all? . . Well, there are certain benefits.
Once the native apps are installed on the native device, it can access all the available hardware components of the device like the touch screen, NFC, GPS, camera, speakers, etc. This functionality is provided by the native API (Application Programming Interface) of the device. Each mobile operating system has its own unique API for each function. These APIs are very fast and powerful and lets you use the full potential of the mobile device. Therefore native mobile applications are more fast and fluid in their functionalities. On the other hand, since these APIs are unique for each operating system, porting a native application to another operating system becomes a more hard and expensive task.
Another set of APIs that the operating system provides is the GUI toolkit. Each mobile OS comes with its own set of user interface tools such as buttons, tab bars, text fields, etc. Native apps can use these components and inherit the look and feel of that mobile OS. These native UI components provide a very smooth user experience. Also if you need powerful computation, 3D graphics, or a highly responsive interface such as games, then native apps are preferred.
Web apps can run only in the browser, which itself is an in-built native app. They tend to need to be connected to a Web server in order to function. Therefore web apps can run only when the device is connected to the Internet. Web app can access native mobile APIs only through the browsers. However there are many features that web apps can only access in a limited fashion. Moreover web apps are highly dependent on the browser capabilities. Users do not need to think about how the application was developed, but users always prefer native apps over web-based applications. There were many research done on this. The real answer seems to be that most users want a great, seamless and fast user experience. They really don’t care how the application was developed.
Hybrid apps generally have two components – one native portion, which has free access to everything the device offers. The second component is the web portion of the app. This part is written using web technologies. However the native portion of the app has control over the web portion, which is provided by a Bridge such PhoneGap, ionic, sencha touch, etc.
Characteristics of Native apps:
- Native apps gets a full access to all the features of the device.
- They have a native look and feel.
- Fast and responsive
- Highly expensive for development and maintenance.
- Available on major app stores.
- When you submit an app or release an update, the app must go through all the mandatory approval formalities of that app store.
Characteristics of Web apps:
- Web apps have limited access to the features of the device.
- The native look and feel can only be achieved partially on many phones.
- Not as fast and responsive as native apps
- Less expensive for development and maintenance when compared with native apps.
- Not available on app stores.
- No mandatory formalities required to submit or update a web app. The app can be used as soon as the development process gets over.