Making a Case for Apache Cordova
Having spent the past several years of my career developing web solutions on the .NET platform, I haven't devoted much time to native mobile. I've been able to piece together a few very small apps for Android, due to my experience with C-based languages, but iOS and Objective-C were a bit too daunting with what little time I seemed to have. However, that itch still remained. Mobile is almost a necessary skill to have for a developer these days and I certainly want to remain competitive.
A few years ago I heard people talking about PhoneGap. The concept was intriguing, but I really wasn't sure how effective it would be at providing that native experience. After all, a web site pretending to be an app just seemed so devious. Users would surely catch on to your game and you would be ostracized for your attempt to mislead. Would major brands use it? Would our market competitors use it? How could I possibly present that concept to our clients?
Well, I'm here to set things straight and make a case for hybrid-app development. The past few years have seen tremendous gains in this arena. PhoneGap (which is developed by Adobe Systems) spawned a new project within the Apache Software Foundation named Cordova. Development on this platform has flourished. There is an entire community involved in its growth and I feel as though I've become a supporter - at least in the shadows for now. In addition, the need to provide a native look and feel has been supported by growing UI frameworks, such as OnsenUI and Ionic.
So, what made me change my mind? What was it about these technologies that took me from skeptic to supporter? The simple answer is cost. Let's face it… apps are expensive to build and support. In addition to paying top-dollar for experienced app developers, you have the added costs of project time and on-going maintenance. If you're looking for cross-platform then your budget just jumped - considerably if you have to account for more than just Android and iOS. Now, there is another option for .NET developers in the form of Xamarin, which allows for cross-platform, native development using .NET technologies. It's a great platform - it really is. However, it's a little pricey for small companies with a few developers and it still requires a fair amount of skill on each of the mobile platforms you wish to support. Cordova is free and simple. So are OnsenUI and Ionic. That's a huge bonus when your client sees the project's budget.
Let's take a quick look at a few reasons why I'm a growing fan of Cordova:
Your app runs in a WebView, encapsulated in a native application. You can use common packages and frameworks, such as Bootstrap and AngularJS.
- Native device access
Cordova provides several, incredibly easy-to-use plugins that allow your app to access device hardware, such as the camera, GPS, and accelerometer.
- Platform support
Currently, Cordova supports iOS, Android, Blackberry, Windows Phone, Palm WebOS, Bada, and Symbian. Your app can be deployed to multiple platforms with minimal changes.
- Community growth
Cordova has been a top-level project within the Apache Software Foundation since 2012. The community loves it and it's growing.
- Third-party support
UI frameworks like OnsenUI and Ionic are just two of the products that have emerged. Depending on your needs, you can find many others.
Microsoft fully supports the technology and even provides an extension called Visual Studio Tools for Apache Cordova for users of Visual Studio 2013 (Update 4) or Visual Studio 2015.
That's not all. Did I mention it's free? How about free? It's free!
Now that I've told you all of the wonderful things about Cordova, let me take a step back and say that I do not think it's the right fit for every project. The bottom line is that it's still a web application running through a Web View. It's not perfect, but it's close. It's certainly not going to out-perform native applications. If you're a large, big-market player, it probably wouldn't make sense to build your flagship app on it. However, where I think Cordova shines is in smaller, niche-market apps and as a prototype platform for larger-scale development. I'm on board and plan to use it whenever I feel like it fills a need. I would definitely recommend checking it out if you haven't done so already.