Recently, I started to learn how to do mobile apps. Instead of classic ToDo app, that everyone is so fond of, I decided I will do a bit more realistic application. It would include, for starters a first time initialization, that would run (what a surprise!) at first run of installed app. This initialization would check connection, register account on my server (using web api) and use SQLite as local persistent storage.

But, first things, first. To start developing mobile apps, you first need to choose a suitable development environment. And, there are plenty of options to choose from. Naturally, when you are running on tight budget, you get stuck with more or less three options:

  • write code in native development environment (Java, Swift, .NET…)
  • use Xamarin (.NET languages)
  • use Cordova (JavaScript).


The best option here would be to go ahead and install Xamarin. But, there is a catch. Free version of Xamarin is hardly worth downloading, since you cannot even compile a sample app. You could go for what they call indie license, but for about $300 a year you then get stuck with developing in Xamarin Studio. For Visual studio support, you need about $1000 a year, which is a bit too much for playing around.

So, with Xamarin out of the game, you are left with writing apps in native development environment or use Cordova framework. The decision which to use is harder than it looks and it depends on your app requirements. While native development environment might offer best tools to do the job, it doesn’t scale well to other platforms. On the other hand, Cordova scales well (provided you do not use device specific plugins), but does not offer full set of tooling and has some performance disadvantages.

For my application I decided to use Cordova as it allows me to write one code base for multiple platforms.