Wishing to create your first App? Cordova is your framework
21/05/2018

One of the first issues that we face when developing mobile applications, Apps, is what model, technology and programming language to use for development.

Of course there is no single and unanimous answer in this regard, it will depend on the economic resources available, the teams prior knowledge, the general architecture of the solution, as well as exogenous elements such as interests, passions, agreements, etc.

The first thing we should know is that the universe of Apps is divided into three large groups according to the technique with which they were developed:     

  • Natives     
  • Native Hybrids     
  • Generated Natives.

1. Native Apps:

It means that for its development the native programming language of the device was used, Objective C or Swift for iOS, Java for Android and .Net for Windows Phone. It is a hundred percent model dependent on the platform and the Apps are not portable, you have to develop one per platform. The main paradigms associated with the native Apps are:     You can achieve the best possible performance.     You can achieve an optimal look & feel according to the operating system.     All device capabilities can be accessed.      

2. Native Hybrid Apps:

They are applications developed using HTML5, CSS and JavaScript, deployed within a native container such as Phonegap / Cordova which provides access to the capabilities of the device in a completely neutral with respect to the operating system. It is a neutral model with respect to the platform and with maximum portability

3. Generated Apps:

These are applications developed using tools such as Xamarin or Genexus (among many others), where the development is done using specific techniques and languages ​​of the tool and then the App is generated in the target platform language to be compiled with the native tools. They are what are called false natives, because although their manufacturers claim to generate native Apps, they do not even meet closely with any of the three paradigms of the native Apps. For this reason we call them Generated. After having seen the three large groups, we will focus on the second, "Native Hybrid Apps" which is where we find Phonegap / Cordova.  

Differences between Phonegap and Cordova:

Currently there is no difference between PhoneGap and Apache Cordova, except for the name and where they are downloaded from. Both are free, Open Source and are used in the same way. PhoneGap is nothing more than a distribution of Apache Cordova. The difference between both is that Adobe has the power to extend if you want the product and provide it with tools or features, which can decide to charge. Today, and for many years, PhoneGap the only thing that has greater is the integration with Adobes compilation services, if you want to use them and if you do not want no. On the other hand Apache Cordova updates are usually more frequent, since it is the base product. It is because of all this that, in practice, one speaks indistinctly about one or the other, as if it were the same product, when it is not (but almost). Once we have seen the differences between the two, lets see what exactly Cordova is and why we recommend it for those who are interested in getting started in the world of mobile development:

What is Cordova?

Apache Cordova is a framework for the development of mobile applications owned by Adobe Systems that allows programmers to develop applications for mobile devices using generic web tools such as JavaScript, HTML5 and CSS3, resulting in hybrid applications. Hybrid applications share the same interface while "below" is still the native code of each operating system, hence they are considered hybrid. Cordova also provides a series of open source libraries that allow communication between this common interface and the different native functions of the device.

If we compare Cordova with Native apps we would have the following:     

Times and cost of development: The simplicity of HTML + JavaScript, added to the layer of abstraction provided by the Phonegap plugins, makes it easier to access native functions such as geolocation, push notifications, accelerometer, etc., with respect to native development . This added to the infinite resources available on the web for this technology (all through a 100% neutral API with respect to the operating system) makes developing an App with this technology between 30% and 50% of the cost compared to native (a platform).     

Learning curve: The simplicity of HTML, CSS and JavaScript, together with the simple API of MobileUI (open source framework optimized for Phonegap for the development of apps), makes a resource is quickly trained in this platform. If we add the extreme simplicity of Phonegap Build to compile in the cloud, once again the hybrid option takes the first place, allowing a much better learning curve in Phonegap / Cordova than in native apps.     

Human resources available in the market: With the existence of the web it is indisputable that the abundance of resources in HTML, CSS and JavaScript greatly exceeds that of the other platforms, especially considering the very low learning curve of this alternative, such as it was seen in the previous point.     User experience: In the solutions with HTML5 the controls, with the exception of those natively provided by the WebView, must be simulated using HTML5 and CSS3, something that is achieved quickly with good level.     Performance: A common query about Phonegap is relative to its speed. From version 3 and with the evolution of the WebView, added to projects such as crosswalk for Android, the performance of these applications has been transformed into optimal, smooth transitions and JavaScript is an ideal language for the treatment of REST / JSON services. Integrated with MobileUI, excellent performance is achieved, similar to the native ones.