Pros and Cons of Cross-platform Mobile Development Frameworks
In the Comparing Mobile Development Framework Types article, we explored the two main general Mobile Framework types and went through each one's pros and cons. In today's follow-up, we'll evaluate the Apache Cordova and Appcelerator Titanium frameworks.
Apache Cordova (a.k.a. PhoneGap)
Sound good? It is!
- Gentle Learning Curve: Other than the framework's own idiosyncrasies, there are really no additional coding elements to learn. That allows developers to leverage their existing web development knowledge and skills. The result: reduced training and shorter development timeframe.
- No Licensing Costs: Being an open source product means that it's 100% free to use. A lot of companies are moving towards open source offerings, including mine! The open source model is not all good - for example, no dedicated support - but somehow, despite there being so many cooks in the kitchen, it works better than anyone could hope.
- Despite being written in web languages, Cordova apps install just like native applications.
- Excellent platform coverage: the same code can work for all the major mobile operating systems like Android, iOS, Windows.
- Cordova apps are distributable through the App store.
- Cordova's plugin architecture offers a wealth of plugins and modules that can provide additional services or tools.
Of course Cordova development is not all sunshine and rainbows. Here are some of the downsides:
- Cordova's cross-compilation process can sometimes result in slower performance than that of native tools. This is especially true if your mobile app includes a lot of graphics. While improvements in device hardware and WebView implementations have helped narrow the gap, you might need to implement caching or use 3rd party solutions for graphic acceleration to get your app up to speed.
- Like pretty much all open source tools, documentation tends to be lacking and either not terribly descriptive or badly written - especially when it comes to plugins.
- Speaking of plugins, with so many cooks in the kitchen it can be difficult to get current versions that all work well together.
- I've also heard that the Apple folks have been known to foster a negative attitude against hybrid apps because you're not going as "all-in" as they'd like you to!
Cordova is probably best suited for building mobile apps that don't rely too heavily on native phone features. At a certain point, native app development is likely to be a better bet.
- Appcelerator literally puts the "accelerate" in UI development, allowing their creation with a few lines of code and in a lot less time than similar frameworks. In fact, it's so good that you might want to consider using Titanium to make prototype for the user to tinker with the UI, regardless of your ultimate framework choice.
- Appcelerator has built up a community of over 200,000 developers. The Appcelerator Open Mobile Marketplace is an online gathering place for buying, selling and sharing modules, templates, design elements, and extensions for web services.
- Through investor funding, Appcelerator was able to acquire Cocoafish a Cloud services company which provides a variety of very useful services to mobile (or any) clients through a simple REST API, with no server-side code. That will soon make it even easier to build mobile apps with back-end data services for persistence, notifications, social features, etc…
- Less-than-perfect Scalability: It's certainly one of the great truisms of program development that development complexities and costs rise proportionally (if not more so) to increases in application complexity. That being said, there has been plenty of anecdotal evidence of application complexity leading to a multitude of technical glitches from random crashes, unusual behaviors, annoying bugs, and others. Moreover, having to manage target platform SDKs locally can lead to versioning and build-related issues - especially if you target multiple platforms.
- StoreKit, the Appcelerator module to enable In-App Purchase to Apple's App Store is known to be buggy, poorly documented, and only partially functional, making it perhaps too unstable for production use! The alternative is to drop the "freemium" pricing model - whereby apps that are free to download, but require an in-app purchase to be expanded - and say goodbye to a lot of revenue, since almost three quarters of total App Store revenue comes from in-app purchases.
- Some developers have complained that the Titanium Studio IDE can "go crazy" sometimes and is more of a hindrance to productivity that a benefit.
You might not want to commit to a specific Mobile App Development Framework just yet because there are still several more to look at! Next week, we'll move on to two more heavy hitters: Adobe AIR and Sencha Touch.