What are the benefits of using Cordova?

advertisements

I just knew about Apache Cordova and it seems very useful mostly because, from the documentation, it gives the possibility to create a cross-platform app

And because these JavaScript APIs are consistent across multiple device platforms and built on web standards, the app should be portable to other device platforms with minimal to no changes.

I wanted to ask to the experts here,can you list what are the advantages and disadvantages of using Cordova instead of programming apps using only Java or Objective-C/Swift?


Pros

  • You don't have to learn any new languages if you're already a decent web developer

  • It's very quick to prototype

  • Though we didn't end up using it, jQuery mobile is pretty neato and makes it even faster prototype

  • Lots of library options for pretty much everything you could possibly want

  • It's really cool and fun

  • If you so wanted to, you can bypass the app store by hosting the files on a server, and utilize app cache to make things speedy. Changing your app is just changing a web page and its cache manifest file

  • Managing images for multiple devices is a lot easier with CSS and media queries than it is for an iOS xcode project and an Android project with its ldpi, hdpi, xdpi, and whatever dpi.

  • Easier to create vector graphics to design spec

  • Hell, it's just easier to get things to be exactly like the design (except if you care about cross-browser compatibility)

Cons

  • There are a lot of mobile browsers out there (the state of browsers is worse than its ever been in terms of how many different crappy ones we have to support - it used to be just ie, but guess how many people are on android 2.x)

  • There are a lot of mobile devices out there with varying hardware, screen sizes, and network speed

  • Some features you're used to using aren't there for all devices (position: static for instance) and since those are likely the crappy devices, using a javascript shim (like iScroll) is out of the question if you care about performance

  • There seems to be some version issues with the facebook-connect plugin for phonegap (cordova) and the latest versions of phonegap on iOS only - To get facebook connect and PhoneGap to work I had to use an older version of PhoneGap

  • Documentation for PhoneGap itself is pretty decent, but it's still new, so not a whole lot of people have reliable information on current versions (at least this was the case 3-4 months ago)

  • Since I had to use an older version of PhoneGap, I found that some of their api functions would cause javascript errors. I had to bypass the sugar they provide and call PhoneGap.exec directly on their com.phonegap.whateverFunctionality - It was ugly, but it worked

  • There are complications with linking to other apps like Google maps

  • I found that saving contacts did not work on all versions of iOS

  • jQuery Mobile + Backbone is more of a pain in the ass than you think

  • Getting neato transitions can be a pain

  • There are less facilities in javascript for modularization of large-scale applications than Objective-C or Java