Have you ever had a terminology brain freeze – so much terminology all for what is basically the same thing that you just get confused?
What do I need?
Searching on the Internet gives me a bunch of things:
There are others, but these are the main ones. So, what’s in jargon? What are optional versions of each other and what are the dependencies. I got confused – quickly.
That’s the first thing. All of this software are methodologies for running an HTML5 application on a mobile device natively. Mostly, that’s Apple iOS and Google Android. Microsoft Windows Phone has something else up its sleeve (see Project Westminster).
PhoneGap == Apache Cordova
More appropriately, PhoneGap is a product by Adobe that includes a distribution of Apache Cordova. Adobe donated PhoneGap to the Apache Software Foundation and part of that acceptance included getting rid of any complicating patent and trade mark issues. As a result, when it was accepted into Apache, it was renamed. Cordova wasn’t the first name, but the first name was terrible, so we won’t go there.
The major problem with Apache Cordova seems to be performance. There are a lot of posts around the Internet about poor performance of Apache Cordova apps. However, there are also a lot of posts on how you can make your Cordova apps “perform like native”. A lot of the blame is placed on the libraries – like Angular and jQuery Mobile – that you use. jQuery Mobile, in particular, gets a lot of bad reviews for the amount of DOM manipulations it does.
Other Base Systems
All of these other base systems seem to be commercial. If you are developing on your own dime (as I am), then these are probably less desirable.
Frameworks on top of Apache Cordova
The Ionic Framework is a framework on top of Apache Cordova. You can think of Angular as a framework on top of the browser. Ionic is basically Angular on top of Apache Cordova.
Sencha Touch is a commercial MVC framework built on top of Apache Cordova. It has it’s own native packaging as well if you don’t feel like using Apache Cordova. The key word here is Commercial.
Of course, you don’t have to use a mobile-specific framework on top of Apache Cordova – you could use any framework. Want to use Aurelia or Polymer or React on top of Apache Cordova – it’s doable. That’s because Apache Cordova uses the built-in capabilities of the mobile device to produce the render of the page. It’s like running a little web application inside of your device. React is known for its performance so perhaps that would fare better?
React Native is, well, different
Given Apache Cordova is such a bad performer because of the libraries, it makes sense to use a library that has performance at its core. That would be React – a framework by Facebook that handles the V in MVC. The rest of their suggested framework is Flux, which isn’t MVC. Flux/React implements a new paradigm – Reactive Programming – and is probably the first “big thing” in frameworks since MVC and MVVM were suggested.
So what’s the catch? Well, no Android support as yet. It’s promised, but it isn’t there. Until it is, I think React Native is not worth the effort. Despite Apples best efforts, Android is still the dominant mobile device out there.
If you want to develop mobile apps, then you need to support two or three platforms (depending on your requirements) – iOS and Android are slam dunks for support. That means you are going to be worried about cross-platform development.