PhoneGap Cordova is a mobile development framework used to develop cross-platform mobile apps for most of the OSs on the market: iOS, Android, Windows Phone, BlackBerry and Bada. While many cross-platform development frameworks are based on a logic of “translation”, from a dedicated language to the various OSs’ native languages, PhoneGap Cordova takes a very different approach that merits some explanation.
Smartphones’ native browsers and, more specifically, their rendering engines, are used to perform this work, all of which are supposed to be able to do so in the same way.
Unfortunately for us, non-web functionalities are an entirely different story. These include native smartphone functions like: camera, flash, vibrator, gyroscope, calendar, push notifications, local storage, 3D engine, and so on. Today, these functions are reserved for mobile applications that are distributed and downloadable from stores (e.g. App Store and Google Play). They need to be called via developments in their native languages.
For example, to take a picture, regardless of the OS on which the development takes place, the function “camera.getPicture()” will be used in a JS script on an HTML page, and the framework will make sure the right command line (with the right native language) is used, depending on the OS.
Use and results
Development of a project using PhoneGap Cordova begins with the development of a mobile web app in HTML, CSS and JS, which is then integrated with PhoneGap Cordova, to gain access to all the available plug-ins. At the end of the day, this plug-in based structure gives the tool unlimited possibilities. If the tool does not do what you want, simply develop the missing brick in your native language and integrate it with the project, in the form of a new plug-in.
On output, after conversion, you will find yourself with an application that can be sold on app stores. It willcontain all the data needed for its operation and can be installed on smartphones like any other mobile app. In other words, it is not a shell that displays web pages. Those pages are, indeed, contained within the app and do not require an Internet connection in order to be displayed. When a user launches the app, the call to the browser’s rendering engine is completely transparent, as is the call to PhoneGap Cordova.
In terms of visuals and effects, anything that can now be obtained through HTML5 or CSS3 is possible, within the limits of what browsers and OSs are able to interpret. Thus, it provides a compromise between rendering / performance and cover rates, which are tending toward simplicity, the more browsers evolve.
An open source project in the hands of the Apache Foundation, supported by Adobe
Historically, PhoneGap (open source under the Apache v2 Licence) was published by Nitobi. That company was purchased in late 2011 by Adobe System. In the continuation of its recent positioning on the open source market, Adobe turned the project over to the Apache Foundation, to ensure its longevity and its open source status. The project was re-baptised Apache Cordova, to differentiate it from Adobe’s PhoneGap product. Whence the two names.
A quick glance at its contributors reveals a clear consensus that has developed around the project: Adobe, IBM, Google, Android, SalesForce, RIM (BlackBerry), Microsoft, Intel and more.
On our end, Smile is contributing to the effort by supplying plug-ins and different bricks, the first of which are presented on our GitHub: https://github.com/Smile-SA/.
Feedback and vision after two years of use at Smile
First and foremost, PhoneGap Cordova provides a very attractive approach to mobile developments, one that is aligned with the web orientation observed in the mobile world today (see MWC 2013). Its plug-in structure makes it very flexible and powerful, in that, if anything is missing, it can simply be developed. As a result, the tool itself has very few facets that are open to criticism.
However, one might expect more from the OS and browser end... The homogeneity and universality of their interpretation of web languages is still relative in some cases, such as when a shading effect changes its appearance completely from one OS version to the next, or when an OS decides not to interpret a finger movement in the same way as other OSs, etc. In these cases, the developers’ experience is important, as is their ability to plan ahead, work around or fix these shortcomings, which will be vital to the project’s success.
In terms of performance, or at least of impressions, everything is linked to the browser, but also to the quality of the code and the libraries used. The traditional desktop web has become extremely permissive, with development habits often neglecting good practices. Too much bandwidth and too much calculating power have reduced optimisation efforts.
With PhoneGap and smartphones, there is a need for a return to those good practices, to offer a result that is truly representative of the mobile capabilities of web technologies.
In conclusion, PhoneGap Cordova responds to both a short term need for cross-platform mobile developments AND a choice of standardised, durable technologies. PhoneGap Cordova is merely a complement to web technologies, not a framework that locks developers in.
Moreover, as mentioned by its historical vendor, its chief purpose is, in the long term, to disappear, once mobile browsers are able to provide complete access to smartphone “gadgets”. When that happens, you will be able to do without the framework, removing your HTML, CSS and JS code from it, ready to target most devices and browsers.