A native application is a software program that is developed for use on a particular platform or device.
Because a native app is built for use on a particular device and its OS, it has the ability to use device-specific hardware and software. Native apps can provide optimized performance and take advantage of the latest technology, such as a GPS, compared to web apps or mobile cloud apps developed to be generic across multiple systems.
Native applications and platforms
The term native app is used to refer to platforms such as Mac and PC, with examples such as the Photos, Mail or Contacts applications that are preinstalled and configured on every Apple computer. However, in the context of mobile web apps, the term native app is used to mean any application written to work on a specific device platform.
The two main mobile OS platforms are Apple's iOS and Google's Android. Native apps are written in the code preliminarily used for the device and its OS. For example, developers write iOS applications in Objective-C or Swift, while they create Android-native apps in Java.
Native apps work with the device's OS in ways that enable them to perform faster and more flexibly than alternative application types. If the app is marketed to users of various device types, developers create a separate app version for each one.
For example, the Facebook application was once written in HTML5 to use the same code for iOS, Android and mobile web. However, the app was slower for iOS users, leading Facebook's app developers to create separate code for iOS. Complex tasks can be rebalanced, such as networking done in the background of the main thread or program, which drives the UI.
Examples of native apps
With the ability to tap into specific resources, native apps can quickly access multiple services on a device, such as the microphone, accelerometer or push notifications. Examples of native applications range from navigation programs, such as Waze, to social apps, such as Twitter, or games, such as Pokémon Go.
Pokémon Go efficiently accesses system functionalities -- GPS for mapping locations, the camera for augmented reality, and the accelerometer to measure acceleration -- for the best possible user experience. Pokémon Go can also take advantage of push notifications, which are designed to bring users back to the game over time.
A native app installs directly on a mobile device. Data associated with the native app is stored on the device or remotely -- such as in cloud-based storage.
Native application pros and cons
Advantages of native applications include:
- broad functionalities due to using the capabilities of the underlying device;
- fast and responsive software performance;
- push notifications;
- a UI that better matches with user experiences of the OS; and
- quality assurance though ratings in application stores.
Disadvantages of native applications include:
- multiple code bases because each device has its own version of the app;
- the cost for additional developers to build and manage a code base for each platform; and
- time spent on multiple builds for separate platforms in each feature update.
Native vs. web apps
A web app is an application that the user does not download and instead accesses via a web browser over a network. Example web browsers include Google Chrome, Safari and Mozilla Firefox. Web apps provide functionality from bank account access to YouTube video viewing via, for example, Safari on an iPhone.
Native vs. hybrid apps
Hybrid applications are a combination of native and web apps. The inner workings of a hybrid application are similar to a web app, but it installs like a native app. Hybrid applications have access to internal device APIs, which means they can use resources such as the camera, storage and GPS. Yelp and Instagram are examples of hybrid apps.
Hybrid applications are built with HTML and CSS. Developers create one code base, then make small changes to tailor the app to each platform. Fewer developers are dedicated to each platform with a hybrid app than with a fully native app. Hybrid apps typically run a web app through a container or WebView, a browser that can be contained inside of a mobile app.
Hybrid applications perform differently than native apps in several ways. Hybrid applications are based on web apps and contain the same navigational elements as web applications. Additionally, there is no offline mode for a hybrid application -- it only works with an internet connection. Native apps, by contrast, can operate offline.
Cost differences between native and hybrid applications are minimal. In both application types, developers must write code to launch on multiple platforms. In general, if the development time of an application is less than four to six months, a hybrid application is preferable, as you can construct them faster.
Native application tools
Swift and Java are open source, and they are the main programming languages used by Apple and Google.
Xamarin is a cross-platform software development tool used for native app development on iOS and Android and other platforms that rely on C# as a programming language.