When developing an app of any kind, there are many decisions to be made. One of the first and most important of those decisions is which technology or technologies to use when implementing the app.
Note: this post deals with apps for Android and iOS, which are the two most popular mobile platforms at the moment. BlackBerry, Windows Phone and others are not considered in some of the specifics, though the bulk of the considerations also apply to them.
When developing an app of any kind, there are many decisions to be made. One of the first and most important of those decisions is which technology or technologies to use when implementing the app. In the case of the mobile market, that particular decision forces us to decide whether we should go with a native app, or whether we should go for a more generic approach.
The other approach is to implement the app as native. In this case it has to be developed in a language supported by the platform: Objective-C for iOS and Java for Android. This means developers with diverse skills will be required for the project, and this also means that multiple separate apps will have to be implemented and maintained. (Note: both iOS and Android support C++, but it is used mostly for algorithms and other CPU-intensive tasks. Still, this allows in some cases to share some code.)
While the web-based approach gives us the advantages of using the same code-base for multiple platforms and requiring less diversified developer skills, native apps have some important advantages over web-based apps:
- By executing in the native language instead of being translated and passing through a web-browser/view, native apps have better performance, which might be an important consideration depending on the kind of app being developed.
- By using the native frameworks, the look and feel required by the platform guidelines will be easier to achieve (which is an important consideration when submitting the app for approval by an app store, especially for iOS).
- The native frameworks provide better support for storing data than that available to web-based apps.
- The native frameworks provide access to lower-level APIs, thus allowing the developer to interact with OS functionality and hardware drivers.
- IDEs for developing native apps usually come well equipped with many tools that help in developing, debugging, testing and profiling an app in a more integrated manner.
These are just some of the factors to consider when developing an app for the mobile market. In the end, the best approach to follow will depend on the specific requirements of the app being implemented, and even other factors such as budget, time to market, and the skills of the developers available, might play a role in going one route or another.