Mobile Development -Native or Cross Platform

I. Introduction

There are more than two billion smartphone and tablet users worldwide. According to latest trends, it is being expected that anything and everything will be available as a mobile application.

This brings another major question into mind of an app developer or an organization that which technology/platform should they use to develop their mobile application to attract users or provide them a better functionality along with availing maximum features provided by the mobile platform.

This discussion of choosing platform starts with two major and well advanced technologies, Native development and Cross Platform Development, but the major issue is which one to go with.

  • What are those key points one should keep in mind while choosing an appropriate platform for mobile app development at an enterprise level?
  • Which platform would be better for an enterprise and why?
  • What will be the factors affecting an app and what impact will they have on the app?
  • Will there be any limitation? If yes, is there any alternative for that?

II. Overview

Before choosing a perfect platform for mobile app development, one should know the platforms, their benefits and limitations over one other.

The major operating systems which an app developer keeps in his mind while designing and developing an app are Android, iOS and Windows.

They all provide their platforms for their native app development along with a well matured IDE (Integrated Developing Environment). The benefit of any native platform is that it is specially designed for app development of that particular platform and is capable enough to integrate any possible functionality in application of that particular OS. It is even capable of integrating third party libraries or functionalities being provided by that particular OS provider without much complications like google maps in Android, Maps in iOS and many more. Compatibility issues are very few apart from the different devices resolution and features or hardware unavailable in any particular device of that OS. But when we look from a developer or organization perspective, they have to code thrice for a single app. Even that is also not a major issue, the biggest problem is that all three OS have different IDEs (Android Studio for Android, Xcode for iOS and Visual Studio for Windows) with different coding languages (Java for android, Swift for iOS and C# for Windows).

Whereas in cross platform development, we have lots of technologies and IDEs to go with. A combination of HTML, CSS and Java Script is mainly used by most of the platforms in cross platform development. The basic logic behind any cross platform app is that they make a web based app which runs in the browser as an app having similar functionalities same as a native app can have (Mobile website + native app shell for each of the platform).

This type of app may look attractive because both android and iOS supports javascript code without a web view but such apps usually suffer from poor performance because javascript components are too slow and heavier for mobiles and also users themselves don’t feel natural. But the major benefit is code reusability. Write once and it will be compiled for three different platforms so the costing and resource consumption will be low and maintenance will also be easy in comparison to native app development.

III. Proposed Solution

There are several factors that make cross platform development seem attractive to some app publishers. Perhaps, the most persuasive is a reduced development cost. Standard-based web technologies that bridge web applications and mobile devices allow companies to get an app into different platforms without having to invest in a team or a developer specific to the ecosystem.

When we look from a user perspective, users prefer their native app look, like in iOS, users have a habit of looking tabs at the bottom while users from android will prefer it at the top which is usually being provided by native android. In Short, user tastes are different.

Users don’t have anything to do with the platform on which the app is developed. All they look for is its performance, UI (User Interface), compatibility and size of application.

After Google’s android lollipop release, they have set a bench mark in terms of implementation of UI with a new concept of material design. It has defined some standards in terms of UI and animations which enhance user experience but this material design concept is currently only for android.

It’s a limitation for cross platform. Cross platform development won’t be able to provide such UI and animations, particularly for android.

Similarly, Apple had replaced their official coding language for native app development from objective C to swift which is extremely powerful and capable of providing animation and great user experience with an optimized code.

Apart from look and feel of an app, when we talk about performance, native development is much better in terms of performance as it(that app) is being designed and developed for that particular OS only. They have particular hardware integrated in their devices to perform specific task. One of the major example of hardware are sensors. All the three OS devices have different sensors having different efficiency for same task. So it’s really hard to achieve a common functionality for all the OS devices with same piece of code with almost same efficiency.

But when we look from a developer perspective, cross platform development attracts more. In order to implement a single functionality, developer has to code at one place only and that too in a single IDE with same user interface and the cross platform development will take care of it for all the OS platforms. It reduces cost of development and the resources that are being used in development. Simple functionalities like service calling, login and many more can be easily achieved with the help of cross platform development and these too provide a similar appearance in all the OS platforms.

When we talk about development at a higher level like developing games or putting 3d object in front of user in an app, Game developers use Corona and Cocos2d-X SDKs, which make it easy to add physics to 2D games with the underlying engine built around Box2d. And then, there is Unity — a powerful game development ecosystem fully integrated with intuitive tools and rapid workflows. This allows the app developer or particularly the game developer to create interactive 3D games. These provide such a realistic user experience that the platform (either native or cross platform) hardly matter.

It can happen than even in cross platform development, we need to check the OS and write some OS specific code which can be either HTML (which is being used to create a UI) or it can be a piece of code to achieve any special functionality. This OS specific code will be useless for other OS and will simply increase the build size.

There are a few companies which have tried using HTML5 to build their mobile products. Facebook, for example, lost time it could have spent focusing on bigger and better app development, Zuckerberg admitted.

LinkedIn also decided to go native after trying HTML5 in action.

Many new technologies like Xamarin have come into picture which provide a different concept of mobile development. They disintegrate all the business logic, service calling and data access in a separate project common to all platforms. On top of that, they provide a separate native project for each platform in the same IDE which consist of all the native codes and native UI (which is platform specific). Though a developer has to code thrice for UI but the benefit is it is only for UI and for hardware interaction that too in the same language and even it will provide users a complete native look. Code maintenance cost will be low as it will be in the same language for all the three major platforms and within the same IDEs.

Apart from its own IDE (Xamarin Studio), it also provides a plugin for Visual Studio so that developer can even develop a cross platform app in Visual Studio using Xamarin.

As all the three codes are in same environment or IDE, it’s even easy for an organization to maintain it.

IV. Future Direction / Long-term focus

Now the major issue to ponder upon is that do we really need all the functionalities present in any particular OS platform or we can even use only the common functionalities?

One thing is clear from the above points that we cannot achieve all the functionalities present in any particular OS through cross platform development as it will first check its compatibility with other OS.

A basic rule of coding states that it should be extensible so that in future if any functionality is to be added in an existing application, it should not affect too much to the existing one.

This extensible feature cannot be assured in cross platform development.

Once you start up with cross platform, you may feel limited access over the OS platform at later point of time. Though Xamarin is an exception. Xamarin provides even the feature of extensibility so that there is no point of limitation.

Performance of app developed on Xamarin platform is nearly equal to native app developed for all OS. It can be one of the major benefit of Xamarin over other cross platform development platforms. And it’s even capable of integrating all the native components consisting concepts like material design concept of android for android apps and native animation for iOS. All these things are being achieved in Xamarin by wrapper classes present in Xamarin.

V. Results / Conclusions

Depending completely on the requirements of any organization or developer or both, native and cross platforms have some benefits and limitations.

Native requires more resources but has a better user experience whereas cross platform has low costing and resource utilization but it may run the risk of getting limited access to APIs along with a compromise with performance.

Perhaps technologies like Xamarin can also be a better option for mobile app development as it provides completely native feel with comparatively low costing and maintenance.

Developer’s interest towards Xamarin is increasing day by day due to its performance, compatibility and the support provided. Xamarin can even lead cross platform development in the field of enterprise level development.

VI. Appendices

The major sources behind collecting these facts are

- Wikipedia.org

- Developer community android

- Developer community apple

- Xamarin.com