Some of our clients face a problem of developing applications for different platforms to make their products available for more users. There are two major ways of overcoming this problem, and these include cross-platform development (one source code, re-usable on all platforms) and native development (creating separate applications for all target platforms).

In the market place developers can find many cross-platform tools. Examples include: Qt, Xamarin, PhoneGap, SenchaFiremonkey. All of these allow software development using a range of  programming languages and technologies like: C++, C#, Delphi, HTML5, JavaScript and others. Different tools have slightly different approach, some focusing on games and entertainment, other on business solutions. Some tools allow creating applications for mobile and desktop platforms, while others are made exclusively for mobile devices.

Which approach to choose?

In my recent work I have faced two major problems when creating applications for mobile devices (iOS and Android). The first application was relatively small but had to be highly secure; therefore my obvious  choice was to write two different applications. Because I took this approach, my application looks and feels appropriate to Android and iOS devices. It also means that the security is not dependent on third party tools.

The second application was rather large, and there was a lot going on behind GUI. On this occasion, I chose cross-platform development as this was quicker and easier to support later.

As our client has provided a significant portion of code prepared for PC, we are up against a task of optimising the GUI for mobile devices now.


1. Native software


+ native programming language;

+ full API support;

+ native look and feel of application.


– it is more time-consuming to create different applications from scratch;

– the need to make updates and to fix bugs for every application, separately.

2. Cross-platform software


+ the application is written only once;

+ it looks and behaves the same on every platform;

+ if the toolkit supports it, very little work is required to support a new platform.


– users’ expectations may be impacted. For example, iOS users have different expectations of behaviour compared to Android users;

– there may be some problems with device APIs, like Bluetooth.


Unfortunately, cross-platform is not a magical solution for all development problems. It will solve some of them; however, a cross-platform solution may create new issues.