A Perennial Debate
The debate about the advantages and disadvantages of differing approaches to mobile device application development is one without resolution. Each approach – native, web or hybrid – has specific pros and cons that determine its fit with an organization’s resources and the goals for a specific app.
With regard to portability across multiple platforms, this debate often comes down in favor of web-based apps that can theoretically be written once and run on both mobile platform leaders, iOS and Android, with minimal modification. However, with the advent of highly efficient cross-platform tools, the possibility of a wider market for write-once native apps is now a reality.
Whether or not the app is to be a workforce productivity app or for general public consumption, however, it is wise to consider key advantages of developing it natively versus taking a lowest-common-denominator path.
What are Native Applications?
It is generally understood that for a mobile application to be considered a native app that it executes directly within the OS for which it was written. In the vast majority of smartphone apps that would be either iOS or Android. If the programmer is not using a cross-platform kit, then he or she develops the app using a native programming language directly plus development tools and user interface guidelines developed specifically for the platform. In the case of Apple products, the languages are Objective-C or Swift. For Android, the language would be Java.
Another definition is that a native mobile app is any directly downloadable application package that installs and runs solely on the platform for which it is intended. In the case of iOS that would be a .APP file and for Android it would be a .APK file. Using this definition based on the end product of app development, there is a great deal more leeway available to developers in terms of which programming languages, development tools and even UI guidelines that they can use to create a native app.
There is one caveat, however, which is that to truly be considered native, any app must have full access to all the capabilities of the native hardware platform. This capability comes automatically in the case of writing directly to iOS or Android via their APIs, but may vary if a development environment is utilizing abstraction layers to natively run code.
Native App Advantages
Native mobile applications have three fundamental advantages over web-based apps:
- Since the applications are built utilizing the native platform interface components and adhere to platform UI guidelines, they appear as natural extensions of the platform, which provides a visually seamless user experience. Since UI guidelines also include conventions regarding app behavior, the user’s interactions and manipulation of the app is smooth and easy to comprehend. For instance, a platform’s specific, native hand gestures will work as expected across all the device’s native apps, which would not necessarily be the case for a web-based app.
- Because native apps, by definition, must have full access to the platform APIs, they have direct access to all platform-specific capabilities including embedded hardware, peripherals and specialized UI libraries or components. Native apps can, for instance, directly access a smartphone’s GPS, USB, cameras and networking hardware. Examples of UI components available for native applications are iBeacons and Fragments for iOS and Android, respectively.
- Native applications written with platform-standard languages and toolkits achieve the highest possible runtime performance because they are compiled to run directly on the hardware without intervening abstraction layers. Native applications that are developed with non-standard languages and tools but use a native abstraction layer will run as fast or nearly as fast as a standard native app depending on how efficient is the abstraction layer upon which it was built. Even non-standard native apps will almost always exceed web-based app performance, because the latter must execute within a web browser that adds another level of execution indirection.
From a user’s point of view, native applications generally appear more responsive, reliable and behave in accordance with other native apps on the device. Furthermore, more memory and hardware-acceleration are available to native applications. They also have the potential to communicate with other native apps installed on the device if programmed to do so.
Native Application Frameworks
Development of mobile applications for Apple’s iOS consists of using Objective-C or Swift or both languages in combination to program the application. Applications are written within Apple’s proprietary integrated development environment named Xcode, which includes the Swift and Objective-C compilers, 4,000 iOS SDKs, an interface builder, iOS simulator, testing platform and hardware instrumentation. Apple also supplies specific UI guidelines.
The Android development environment is Google’s Android Studio. It is built upon the IntelliJ IDE. Android Studio is itself cross-platform as it runs on Windows, Mac OS X and Linux. It replaces Google’s Eclipse IDE as the primary platform for native Android apps.
It includes a live coding and real-time app rendering capability, trouble-shooting and performance tools plus a rich layout editor for UI development. All development is done with Java, which is considered by most programmers to be easier to comprehend than Objective-C, but on par with Swift. Android Studio performs regular background compilation, which results in faster defect detection compared to Xcode, which only builds a project by explicit command.
Read Part 2 of our article on the Advantages of Native Mobile App Development Thursday.