Web, Hybrid, Native Part II—Native

In the previous blog post in this series we learned all about a web application. In this blog post we are going to the complete opposite end to learn about native applications.

Native Application:

On the completely opposite end of the spectrum of a web application sits a native application. A native application is an application that is installed on your phone that was built or compiled using it’s native programming language. For iOS the native language is Objective C and Android is Java. Both are similar in that you need to install an integrated development environment (IDE) in order to develop and ultimately install the applications. A native application is platform specific. An application built for iOS cannot be installed on an Android device or a Windows Phone device and vice versa. Because the developed apps are platform specific, development time and expertise is greatly increased over using a web application. It is necessary to have a development team that is well versed in each platform in order to build the applications.

So why would someone want to go the route of a native application if the costs and work associated with building the application are greatly increased over a web app? The simple answer is because a native application has the best performance and user experience. A native application has a fast graphics API so all of the in-application animations and graphics will be smooth and appear effortless. A native application also has built in components. What this means is the user will be using UI components within the application that they are familiar with. They will be the same components used by other native and system applications. This makes the learning curve for learning how to use the new application quite a bit easier. Native apps use the least amount of battery power over any other alternative. This is due to the fact that the app’s are running how they were meant to be running and because less data is being used due to only needing to download only the information and not the interface.

Native apps also have full access to all the devices hardware and system resources. With the newer phones this can range from camera, gps, accelerometer, barometer, gyroscope, Wi-Fi, Bluetooth, NFC, and any other type of hardware sensor or component. The system resources include contacts, address book, other applications (to an extent), accessibility options, account management, and a variety of others. This allows the developer/designer be as creative as possible in developing unique and innovative solutions. In a sense, the device becomes the limitation with native apps as opposed to the software being a limitation with web apps.

To recap a native application is an application that is installed on your device. It is device specific and run OS specific code. You have full access to build any solution as long as it conforms to the hardware. It is the most efficient and easy to use application for the end user but it is the most costly application to write with the steepest learning curve.