Overview
UPDATE: This was originally posted January 18th, 2011. All 3 platforms have changed immensely since.
UPDATE: If have updated and more detailed information about Appcelerator and PhoneGap at this link: https://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap
I have been charged with deciding on a mobile framework for deploying a single code base to multiple devices (iPhone, iPad, Android, Blackberry). Naturally, I was gravitating towards Adobe Air since most of my personal work these days has been in AS3. I wanted to see what else was out there, though, and was pretty surprised that Adobe Air wasn’t my choice in the end.
In addition to one other commercial platform I did not fully assess (too expensive), I looked at Adobe Air for mobile, Titanium Appcelerator and PhoneGap. All are free to use frameworks for centralized mobile development. The gist is to be able to create apps for multiple devices off the same code base. With iPad & Blackberry support, speed to market, and the ability to use Contacts & Multitouch as my critical points, I began digging.
General Functionality
Titanium Appcelerator | PhoneGap | Adobe Air for Mobile | Notes | |
Android Support | Adobe Air requires Android 2.2+ | |||
iPhone/iPad | Adobe Air creates iOS apps with the Packager for iPhone | |||
Blackberry Phone | Appcelerator support is currently beta. | |||
Blackberry Playbook | Appcelerator support is currently beta. | |||
Symbian | ||||
Palm | ||||
Windows Phone 7 | is a 3rd party attempt for PhoneGap. | |||
Native UI support | PhoneGap and Adobe Air both require 3rd party libraries. PhoneGap has UIControls for PhoneGap. Adobe Air has and android-components | |||
Native code support | Appcelerator allows module development. PhoneGap uses . | |||
Desktop deployment | PhoneGap has 3rd party libraries on Github: & | |||
Deploy without Mac? | Adobe Air uses the Packager for iPhone/iPad | |||
IDE & Tools | Titanium Developer | PhoneGap Tools | Flash Builder, FDT, FlashDevelop | Appcelerator has no current IDE, but recently acquired Aptana |
Interpreting | Javascript mapped to native code | Rendered in web view control | Adobe Air runtime | |
Community Resources | Developer Center | Docs, Wiki, , and | Mobile and Devices Development Center | |
Languages used | JS | HTML, JS, CSS | Actionscript3 | Appcelerator also uses PHP, Ruby, and Python for desktop app development |
Support | $2,189 per year per developer | ranges from $1,000 – $25,000 per year | Adobe Support | Adobe offers no professional mobile support for apps, just their products. |
Device APIs
Beyond the overall support structure of the frameworks I wanted to get into the specific device API functionality. This was a little harder to track down, but the list here should be accurate as of the writing of this post. As I said earlier, contacts and multitouch were the only criticals, but I wanted to know what else these frameworks offered. I’m assuming anyone reading this far would find this information valuable as well.
Titanium Appcelerator | PhoneGap | Adobe Air for Mobile | Notes | |
Accelerometer | ||||
Geolocation | ||||
Vibration | ||||
Camera | Not yet supported Adobe Air for iPhone/iPad | |||
Contacts | ||||
Multitouch | ||||
SQLite | ||||
File System IO | ||||
SMS | All support SMS via the “sms:” URL prefix. | |||
Phone API | ||||
Copy/Paste | ||||
Sounds | PhoneGap cannot record sounds. Adobe Air cannot record sound for iPhone/iPad | |||
Bluetooth | ||||
Video Capture | Adobe Air cannot record video for iPhone/iPad. |
Summary
That’s what I’ve got so far. Let me know if and when some of these assessments change. I’m also eager to hear other people’s thoughts. Feel free to chime in.
The long and short of my recommendations:
- Go Adobe Air if performance isn’t critical and you have AS3 experience. The tools and workflow for using pure AS3 or Flex Hero make turning out mobile apps very smooth. Watch out for performance, particularly on iOS.
- Go PhoneGap if you needed the widest range of support for devices. If you need it to run everywhere, this is your framework. Beware of the less than stellar documentation and wiki, though.
- Go Appcelerator everything else. The native UI and ability to access native code is a big win. Also, the community, IDE, and documentation are top notch. Appcelerator was my choice in the end, but that doesn’t mean its right for you.
You may take a look at Corona SDK as well, I’ve been trying and it looks really nice.
http://www.anscamobile.com/corona/
cheers.
Christian,
I’m not a big fan of the Mac requirement for development. It’s bad enough I have to do that to deploy to iOS. I don’t want to have to develop on one as well if I don’t want.
Cool Tony!
Nice to see a side-by-side comparison of those 3.
I’d most definitely choose for Titanium for the following simple matter. It runs a native application, with native platform components (the business logic (your javascript app) is run through a webview that calls the native apis).
This allows you to create apps that ‘feel’ natural to any of your users, be it an iOS user, an Android user or Blackberry (soon)
Phonegap is more like a wrapper for a webapp that adds a few platform api’s. It doesn’t give you native components, you have to build everything from scratch which is kind of a killer (imo). I don’t think it’s the way to go for any feature-rich application. And I don’t think it’s the way to go for any ‘simple’ app as well, since web-apps can do most of these things.
And well: Air is just not ready for iOS yet, and that’s just too much of a downside to neglect.
Ronny,
Yeah, its pretty unfortunate that Adobe and Apple have such a hard time playing nice together. They are both really freaking good at what they do. Some collaboration (beyond Jobs NOT banning 3rd party packaging) could result in some really nice work. Oh well, I dream.
Thank you for putting together this list Tony.
In talking to some people at Adobe, apparently iOS packager should be updated to AIR 2.5 in the first half of 2011 (the sooner the better, but they like to keep these kind of release dates vague). Hopefully that will mean speed improvements, but that should mean access to the camera on iOS. Right now you can add images to the CameraRoll, but that’s it as far the camera goes for AIR for iOS.
Matthew,
I purposely didn’t include upcoming or roadmap functionality in any of these comparisons. I thought it would unfairly tip the scales in the direction of Adobe since I am much more in tune with their community than I am with that of Appcelerator or PhoneGap.
That said, getting the iOS packager up to 2.5 will be a big deal I think. The camera, video, and microphone functionality are APIs that developers expect to be there, especially on the most popular phone out there.
That’s a pretty interesting article. Thanks for the comparison. I had a quick browse through the Appcelerator documentation – is it any good for casual game development (of course I have no 3D titles in mind)?
Does anyone know?
benny,
Most of what I’ve heard is that when performance is critical, go native. That said, it depends on the type and scope of your game. Turn based games and games with basic 2D graphics will probably work. Once you get more advanced graphics, 3D, or physics, you will probably start to suffer in the performance department if you aren’t developing native.
@Benny: I wouldn’t recommend Titanium (or Flash) for gamedev. (Since Phonegap is Webbased, i don’t think it allows a lot of fancy stuff can be done).
If you’re looking into gamedev: I recommend going native (objective-c in xCode, Java for Android, etc) or Unity3D (cross platform capable game dev platform) (that’s not free, but if you’re serious about your business: totally worth it) but I’m not an expert on the subject.
Ronny,
Good call on Unity3d. Its getting a lot of buzz lately and is a GREAT framework for game development that will target multiple platforms, be it phone, tablet, web, or even Xbox.
Thanks for your answer.
Personally, I think since OpenGL ES2.0 becomes the standard on mobile devices and even on the browser (WebGL) – I “hoped” that there will be some additional abstraction layer that allows cross-device development for games/multimedia apps, too.
Of course you are right, if you want to push the target hardware to the edge you have to go native.
Anyway, this topic is really hot IMHO – and I guess there will be a lot of going on in the near future.
@Ronny/@Tony:
Thanks for the hint. I know Unity3d already and it is indeed a great tool and relatively cheap, too. However, personally I do not like the toolchain/visual approach Unity3d takes to create programs. In addition, I am currently highly interested in HTML5 and web technologies in general (Javascript/Flash). That’s why I really did like this article.
Being interested in casual 2d games mostly – personally I think there will be a lot of going in this field, especially having all that hardware acceleration in mind which seems to come sooner or later to the browsers (Adobe’s molehill, WebGL, IE9.0 canvas etc).
Well, I will have an eye on those and other frameworks.
In regards to Titanium – It would be good to mention that Titanium offers a rich set of native UI API’s as well. (not to be confused with UI’s generated using HTML/JS).
Here’s the long list of native API’s Titanium supports: http://developer.appcelerator.com/apidoc/mobile/latest
Including the UI – http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI-module.
Also worth noting, Titanium has locale / language support and native map support.
Great post.. Thanks for sharing your findings.
I have been looking into Titanium as well. While its API set is great, it seems like its operational tools are just not there yet.. For example: how can I use the crash logs to find the backtrace in my code when I have used Titanium.
On a different note, when you suggest going native for performance reasons, how bad is performance with these frameworks – 20% slower or 50% slower or 200% slower?
RM,
Like I mentioned to benny, its highly dependant on what your app will do. Basic UI performance will be very similar among frameworks and native. Occaisonally there’s a little responsiveness hiccup, but nothing major.
Games and other processor intensive stuff will vary from framework to framework, device to device. There’s just too many variables to consider. And I guess that’s the trade-off, what you save in development time you might have to use up in QA. But all this again is highly dependant on your app and target device/audience.
Thanks for the comparison. Titanium looks best from my research too, but that also needs a Mac for iOS apps (you have that in the matrix, but I’m confused by your response #2 above).
Also: for many apps HTML5 might be the best bet and it’s getting better each day. I’ve built with GWT for iPhone/Android, and they worked surprisingly well.
And on the opposite end: if you’re a native coding guy (C/C++/Java), you might want to also check out apps like MoSync.
As Christian said – check out Corona SDK. I’m a user of both, although my recent project uses Titanium. I think Titanium is more appropriate for apps (productivity/utils) while Corona is more appropriate for games.
@RM: I can tell you a bit about performance in Titanium (as part of the anwer to your question). The thing you have to consider is that only a ‘small’ part of the performance of titanium is down to the titanium framework itself.
Example: Let’s say we have a list of 20 000 people which we’d like to show in a tableView. The part where the titanium framework would (probably, and I’m not sure about how much) logically be slower, is the part where the javascript webview (which is essentially the bridge between your JS application logic and the Android/iOS native components) calls the native tableView creation routines and sends the 20 000 records. From that point on everything is managed by the native Android/iOS component, because the data (those 20 000 records) is now *there* in _that_ component. Scrolling, displaying, rendering, animating etc is all done using the native instructions of the platform (therefor being as optimized as possible). Whenever an event is triggered, it works the same way: Titanium captures it and sends it over the Webview bridge to your Javascript logic, where you handle the event.
Bottomline, this means: 99% of ‘general’ apps you’re building (not talking about games, complex image-transforming stuff, etc) will perform almost identical to a native app either written in Java (Android) or Objective-C (iOS). At least that’s what the end-user will (or will not) notice
I hope this helps you understand a bit about performance in Titanium
Very well done Tony. I was actually surprised as well not seeing Corona in the mix. In my opinion, it’s the first choice when it comes to doing 2D game development. That 14 year old kid from Utah recently wrote Bubble Ball which beat out Angry Birds on the app store using Corona. I have also dabbled with it and was amazed on how easy it was to create simple physics based games.
Now as far as doing other stuff (non games), if I was to use one of the ones you listed, it would definitely be Titanium. I’ve found that the native touch makes a huge difference in the feel of the app.
Thanks again!
Sorry to all the Corona supporters, but my main focus when starting this comparison was finding a framework to facilitate UI and data driven interactions. No games necessary for me for the time being. With all this support though, I will definitely consider it when the time comes that I start building a game. Perhaps an entirely new comparison would be in order.
Hoping that Appcelerator will continue to embrace the ADOBE AIR plugin framework that Aptana so successfully incorporates now. My interest lies in Web apps that have little or nothing to do with games/facebook etc etc…..
Heard of http://www.anscamobile.com/corona/ ? A friend sent it to me…
Tony,
Nice comparison.
Correct me if I’m wrong, I undesrstand that in order to deploy an Air-Android app you need Flash Player installed in the phone.
If this is true, it would be worth mentioning in the Notes colume of the first table that Android Support in Adobe Air for Mobile is restricted to version 2.2+. That means you are reaching only half of the market (see http://developer.android.com/resources/dashboard/platform-versions.html)
Jose,
Actually, you need Adobe Air installed, not Flash. And if you attempt to install an app that requires Adobe Air and you don’t already have it, you will automatically be directed to download it.
Good point on the 2.2 requirement.
Nice article. You might also look at Rhodes (http://rhomobile.com/products/rhodes/) which is a ruby based MVC-like framework for the major smart phones. I’ve seen an internal app developed with it and it looks super easy and seems pretty nice.
Your other option is to develop an html5 webapp using a framework like senchatouch.
Thanks for the great comparison!
On WP7 – many PhoneGap platforms are implemented by 3rd parties. The WP7 support is about 80% of the way there, it’s just late to the game and we haven’t had a lot of interest from Nitobi clients.
On native UI support there a number of plugins in the wild and in development if you choose to go this way. There’s also tonnes of JS libs like jQuery Mobile, Sencha Touch, Sproutcore, WinkJS etc that aim to deliver a native like experience with web tech in a cross platform manner. I think support for popular JS libs is actually a very important thing to factor into any comparison.
Deploying/building without a Mac is coming soon to http://build.phonegap.com
IDE Tools. There’s an eclipse plugin, Textmate bundle and Dreamweaver extension coming soon.
Community resources: IRC and Mailing list as well.
Audio and Video recording. Of course this can be implemented as a plugin across platforms and there are plugins to do so already.
Bluetooth can also be implemented via plugin.
We’re working to make the docs better all the time and there are online training events every couple months to help out!
Great piece man! I was wondering if you evaluated (and thought too expensive) Elips Studio by OpenPlug? It seems to be slightly ahead of Adobe AIR in features and is also cross platform mobile. I started with it, then just switched to AIR for mobile. Interested in your thoughts and experience.
[...] frameworks that allowed you to deploy to multiple devices beyond Adobe AIR. Tony Lukasavage had written about a few recently, and Matt Guest had written about his quick experience using Corona for games based on the buzz [...]
Andre,
Do you have links to the audio/video recording plugins, as well as to a bluetooth plugin? I understand part of the appeal of phonegap is its extensibility, but I’m trying to keep this chart specific to existing functionality.
Documentation isn’t everything, but having someplace you can go and possibly ask for some advice BEFORE you start banging your head against the wall is a plus. I can see how Go Appcelerator looks very attractive.
So, has apple backed down off their stance on using App creation tools to create App Store Applications?
My understanding was, and this is from over a while ago, that they wanted you to code in C and did not allow for tools like Adobe Air. I thought these were against TOS for getting an App in the App Store?
Victor,
Things have changed in the last few months: http://www.tuaw.com/2010/09/09/apple-loosens-reigns-allows-3rd-party-ios-dev-tools-with-caveat/
it’s so cool. but I think more nice deploy is native development.
Hi everyone,
I am just jumping into this and I chose PhoneGap last night. I built an entire application from nothing including UI. It was so easy I couldn’t believe it. All I did was include the JQuery JavaScript in my HTML header along with JQuery mobile UI and I was on my way to developing and application with 100 ui elements from JQuery. If you like writing in JQuery Phone Gap is the way to go. It was so quick and easy. Hope this helps someone.
[...] Un article qui a fais un jolie buzz dans la communauté! Un comparatif entre appcelerator, phonegap et adobe air. Je vous laisse découvrir ce tableau en cliquant ici! [...]
Dan could you show us what it looks like. Does it look like an App?
[...] comparison table between Adobe Air for mobile, Titanium Appcelerator and [...]
I would be interested in an update reflecting the new cost structure of Appcelerator, which in my opinion is extraordinarily high and Air 2.6, which were both just announced.
Thanks
> but my main focus when starting this comparison was finding a framework to facilitate UI and data driven interactions. No games necessary for [...]
As mentioned here before by someone else: in this case you should really check out Rhomobile !
@Dan: I think the challenge is not in building a mobile website for one or more mobile platforms. The goal is to program once and deploy natively (!) everywhere. And as easy as possible.
Rhomobile promised WM7 support for Q2.
@gijs – thanks for the shoutout for Rhodes (http://rhomobile.com/products/rhodes). I think you will be pleasantly surprised by our Windows Phone 7 release date!
hi, do somebody use titanium for business? I think, it is ‘no go’, because of less data privacy. appcelerator collect user/customer as third party.
Br kai
[...] SavageLook [...]
tony ,
what do you think of sencha ? can you include that in your next review ?
But Titanium is quite costly … minimum $49/month if you want to have a debugger … and who can code without debugger??
Also Titanium will always send usage data to their own servers, thus compromising user privacy.
Isn´t that contradictions to the newer articles stating that appcelerator does ONLY support JavaScript with no access to DOM-based html… ?
@Chillie: You’re absolutely right. I made the change to the chart.
Under native UI support you mentioned two libraries for AIR that look good. However I stumbled across this, which looks like it does it all for you: http://e-skimo.com/
@Hello: The integrated debugger in Titanium Studio is now available for free!
@Bryce: Never heard of it, but it may be worth looking into for people doing Adobe Air mobile dev.
You have 2 great comparison articles here. Thank you for taking the time to post this information. I do have a question for you and your readers.
If I want to develop a educational learning title with custom interface elements (does not require native UI components), what would be the best development direction be?
Requirements: Read/write mySQL, play sounds(stories, questions, answers, fx), basic game logic(click correct answer, dragNdrop, fill in blank).
Platforms: Mac OSX, Windows XP +, iOS (iPad only) and Andriod (tablets only). Currently no plans to deploy to phone size devices do to screen size requirements of content.
I have used Director, Flash, Flex and html based AIR to deploy similar titles in the past, but my client would like to support tablets.
I am leaning towards HTML,CSS,JS dev using AIR for desktop deployment and phoneGap for tablet deployment.
I value your opinions and as I am new to developing for devices. Suggestions?
[...] Appcelerator vs. PhoneGap vs. Adobe Air – summary comments on performance is concerning [...]
[...] https://savagelook.com/blog/portfolio/appcelerator-vs-phonegap-vs-adobe-air This entry was posted in Uncategorized and tagged mobile frameworks by admin. Bookmark the permalink. [...]