At my company, a few months ago, we were in a situation to re-evaluate our cross-platform technologies. We had been using a commercial version of PhoneGap and through much soul-searching and research, decided to make the jump to Titanium. Thought I would take a few minutes and lay out my feelings on these two business app titans and what made us switch.
Strengths / Weaknesses.
PhoneGap is HTML5 interpreted by the mobile device’s webkit. If you can write webpages, you can write apps in PhoneGap. If the target device can browse the web, it can probably run your PhoneGap app.
Strength. Deployment Scale.
Weakness. Lacking “native” hardware and API access.
Because PhoneGap rides on top of webkit, it only has access to webkit’s capabilities. This has a few downsides. First, native APIs are largely inaccessible (and rightfully so! native access would break the deployment scale strength of PhoneGap!). Because of this lack of access, native controls are not available. For example, the “slot machine” spinner on iOS does not exist in PhoneGap. It can be roughly emulated in some HTML5 equivalent. Native eye-candy drawing effects are not available. These all have to be mocked-up in HTML5 (JQuery). The other downer, of course, to a lack of native access is performance. No matter how you cut it, webpages are slow compared to a native application. Doing a fade effect or a smooth swipe in on PhoneGap is painful. It just doesn’t feel right.
Strength. Native Access!
Weakness. Deployment Scale.
Because Titanium’s API is written on top of the native platform API, Titanium apps can only be built for platforms supported by the API. This is currently iOS, Android, and Blackberry.
Which is better?
Neither. What matters is : What do you want to do?
First off, cross platform development entails compromise. DO NOT go into any cross-platform development expecting to write once and magically build anywhere. You will be let down. Manage your expectations and find a path that works for your needs. In the end, you may discover native is really the choice for you.
If you are developing something that is really a webpage but in a mobile form-factor that you want to sell on the AppStore or Marketplace, or make available to the largest audience as possible with minimal customization, then PhoneGap is the choice. Building for multiple platforms is relatively simple. (check out PhoneGap’s site for demos). Whereas, Titanium requires work to move from platform to platform: business logic can remain the same (a significant savings) but display work has to be tweaked per each platform. That is simply the tradeoff for a native look-n-feel.
If you are developing something that is intended for a finite set of hardware (Droid and iOS) AND you require a user experience (UX) that feels native, then forget PhoneGap and start researching Titanium. Titanium development is not as cross-platform as PhoneGap. Any use of the word “native” implies customization for a platform, but the end result is something much truer to a native look-n-feel while minimizing rework between platforms.
If you are developing a game, DO NOT CONSIDER EITHER ROUTE! There are development frameworks specifically for games. Unity is my favorite. It leverages several programming languages and builds NATIVE apps. If this is your interest, check out http://www.unity.com
Hope this was helpful.