iPhone and Android Web Application Frameworks
OK. My head is about to explode – which isn’t that uncommon when you are as distractable as I am. The reason for my head about to explode this time is that I have now discovered a fourth web technologies based (html, css, javascript) framework for developing iPhone (and Android usually) applications. To be frank, I am struggling for time to do a “deep-dive” into each of these frameworks so would appreciate hearing some opinions about what to use.
Right, first let’s lay out the competition, with a brief overview of each. I’ll outline these in the order in which I discovered them:
Phonegap
http://phonegap.com/
I first came across PhoneGap from an Ajaxian blog post about a year ago now, and was very excited. Mainly because writing applications for mobile devices is “so hot right now”, but I really love my web technologies, and I’m a big fan of javascript. It offered me my first glimpse of being able to merge the two worlds – not to mention not having to maintain multiple codebases for the myriad of mobile devices that are going to be prevalent in the market.
Things I like about Phonegap:
- Phonegap gives you access to native functions of the smartphone through creating some bridges through a native application container and some special javascript calls. For instance, if you want to access the GPS through your javascript code that’s a relatively simple thing to do (NOTE: Part of the HTML 5 specification contains a geolocation API that has already been implemented in Safari in the new iPhone 3GS and upgrade OS).
- Using phonegap will still allow you to publish an application to the AppStore (in theory – see below)
Things that I don’t like about Phonegap:
- Apple are rejecting some applications written using PhoneGap. As I understand it this is due to the fact that once you have a PhoneGap application installed, you could reasonably easily extend the capabilities of that application simply by changing some code at an external web location. This means you can change the functionality of the application without having to route the application request through the AppStore. I’m not sure if this is resolved as yet, or whether I have the issue correct, but would be interested to hear more.
RhoMobile
http://rhomobile.com/
I became aware of RhoMobile through monitoring some of the chatter around the PhoneGap AppStore rejections. It’s another interesting application framework and uses a combination of HTML and Ruby to deliver native applications on the iPhone (and other smartphones).
Things I like about RhoMobile:
- Like PhoneGap, RhoMobile provides access to the lower level functions of the device such as GPS, while not making you code in Objective C.
- Applications written in RhoMobile seem to get published through the AppStore just fine (from what I hear).
Things that I don’t like about RhoMobile:
- It uses Ruby. There, I said it. I’m not a Ruby fan – I prefer Python anyday – mainly because I am actively using Google AppEngine to write web applications right now and I’m using Python for that.
- Something else I can’t put my finger on… you know how it is.
jQTouch
http://jqtouch.com/
I came across jQTouch from the Ajaxian Blog (Yes – it’s an excellent blog, if you haven’t subscribed then do it). jQTouch is essentially a jQuery plugin that makes simple web applications or just straight HTML feel like a native iPhone application. It’s a very simple, but effective approach.
Things I like about jQTouch:
- It’s really easy to get started, and deploying an application to the iPhone is also easy.
- It is written as a jQuery plugin, and well I love jQuery.
Things I don’t like about jQTouch:
- It’s not an application framework designed for building AppStore deployable applications. I know this is contrary to one of the things I like, but it is something to consider. I’m sure you could fairly simply wrap your application up for AppStore deployment though (maybe – could you?).
- Access to the lower level functions of the device is not provided (except for the GPS, because as mentioned before the new OS permits access to the GPS through the HTML5 geolocation API)
Appcelerator
http://www.appcelerator.com/
I just came across this today, from reading through a reply on @jonathanstark‘s twitter stream (he’s writing a book about all this stuff it would seem). Now I’ve only just finished the screencast, and I have to say um, wow. This looks really great… the ability to build desktop applications is in there as well. Man, if this framework delivers then I’m likely to have another life-changing developer moment (last one was AppEngine, and before that it was jQuery).
Things I like about Appcelerator:
- The ability to build desktop and mobile applications using very similar approaches.
- The ability to use Python or Ruby – thank you for providing choices.
- They dogfood their framework – the Appcelerator development environment is itself an Appcelerator application. Kudos.
- Developer tools available for Linux, Mac and Windows.
- Access native functionality of both the iPhone and Android handsets, as per PhoneGap.
Things I don’t like about Appcelerator:
- You so get the feeling that you can almost do iPhone development without having to go and buy a Mac, but alas it isn’t so. If you want to develop iPhone applications you will need a Mac, XCode and the iPhone SDK 3.0
- The ability to use Python (and Ruby) scripting is limited to desktop applications.
Conclusion
While I have probably prevented imminent head explosion just by writing this post, your opinions and experience would be invaluable as the only toolkit I have used to any extent yet is jQTouch (I am, however, about to run up and start playing with Appcelerator).
Without a doubt, after what I have just seen I am definitely leaning towards using Appcelerator, primarily because it caters to my needs (runs well on Linux, with the exclusion of iPhone development, ability to access Python scripting).
So now, do I start trying to talk my wife into letting me buy a new MacBook Pro 13″ Notebook so I can build and deploy native iPhone applications with Appcelerator, PhoneGap or RhoMobile? Or do I pig-headedly stay true to my roots, stick with Linux and build iPhone and Android friendly web applications with jQTouch?


Your wife says listen to all the smart people who tell you to stay pig-headed and not buy a macbook…
If you only need iPhone and Android, and you don’t need sync (offline data) and don’t need a fullon programming language on the device (not just JavaScript which they all support), then all of these frameworks are pretty similar.
If you need other device operating systems (BlackBerry, Windows Mobile, Symbian), synchronize data, or a fullon programming language locally then Rhomobile would seem to be the choice. For what its worth, Google AppEngine supports Ruby now. I like both Ruby and Python – Ruby was chosen just because its growing much faster as a community.
Yeah, there’s a lot of different alternatives and approaches — which I think is a good thing.
Unfortunately, we all suffer from the “have to buy a mac to do iPhone development” problem (cue: evil steve job laughing) — not just Appcelerator. We have heard of people being able to do this on a virtualized PC … but that’s a pain.
We hope you try out Appcelerator and the others in depth and see which one you like the most. Certainly we’d love to hear how we can improve and what you like/dislike even further. We’re growing very fast (already over 10K developers) and adding features pretty quickly.
Our source is on http://github.com/appcelerator, too if you’d like to check it out or join us on IRC at #titanium_app on freenode.
Cheers!
*disclaimer – I am co-creator of the phonegap project.
This is an excellent breakdown of the given choices. First, I would like to point out that JQtouch solves a completely different problem (UI building) than the other three mentioned frameworks and may be used along with the frameworks (at least I know it does with phonegap). You seem to understand the difference but I think people often make this mistake.
Second, PhoneGap and JQtouch are the only two FOSS choices on this list. That certainly deserves to be mentioned. The other two choices have a monetary agenda and lock you in. Phonegap is not VC funded has no obligations to any share holders or investors. Its a tool that was built to fulfill our own needs as software developers.
Things with Apple are being resolved. They misunderstood how phonegap worked and rejected a bunch of applications as a knee-jerk reaction. Phonegap is completely compliant with Apples SDK and this is now understood on their end.
The goal of Phonegap is for phonegap to not exist. This is why phonegap follows the HTML5 spec. Before geolocation was supported by iphone it had the same API in phonegap. Once apple added geolocation, we were able to quietly remove geolocation support.
I think if you are having a hard time deciding which way to go. You can’t go wrong by starting your application with JQtouch and later deciding how to get you application in the app stores (if needed). Of course every application has different needs and the appropriate solution may vary.
Hey Guys,
Firstly thanks for each taking the time to offer some additional information about the platforms you guys are involved with.
@Adam The platforms in terms of actual capabilities is definitely much the same, however, @sintaxi does make some clarification around the licensing. Admittedly I wasn’t aware that AppEngine now supported Ruby (didn’t star that issue), but agreed there is a lot that can be done in Javascript so in many ways any of the frameworks would be a good choice.
@Jeff Agreed, all of the three framework enabling native application development (PhoneGap, RhoMobile and Appcelerator) do require the use of a Mac to do iPhone development. Additionally, I’ve investigated using the virtualized PC to do iPhone development, but Apple’s stance on buying OSX and running it on “non Apple” hardware is pretty clear – you can’t do it. Still it’s an option for people getting started.
@sintaxi Great to hear that the AppStore problems have been resolved – I was worried when I heard that as I had made a few recomendations at my day job, that we should be investigating PhoneGap rather than stressing about writing iPhone apps in objective C. Thanks for reiterating the point around the differences between jQTouch and the other choices. Additionally, your advice about using jQTouch to get started and then dovetail that into one of the other frameworks to get into the AppStore is a solid approach.
Again, thanks for taking the time to comment. Your opinions and feedback as contributors on your platforms I think will help others decide which way to go. While my goal is to help others decide which of the platforms to choose (which I would expect will depend on their particular application) when developing an iPhone app; additionally I would like to highlight to decision makers in companies that frameworks such as yours are genuine alternatives to “native iPhone development”.
Cheers,
Damon.
* disclaimer: I work for Rhomobile (thanks @syntaxi for the reminder on that)
Regarding “licensing clarification”, Rhodes is available under standard GPL dual licensing: if you open source your app, you owe us nothing. If you don’t open source your app you need to purchase a commercial license: $500 for unlimited users. I personally believe that GPL is the essence of fairness: if you believe in open source then open source your own creations as well. But some people need MIT license, and I’m glad to see that there’s an option for them.
*disclaimer: I’m a contributor to jQTouch and as mentioned above, I’m writing a book for O’Reilly on building apps with jQTouch and PhoneGap.
Everyone has done a good job pointing out some of the subtleties between the projects mentioned so I won’t rehash that here.
I just wanted to chime with a general point, which is that everything is going mobile. Whatever approach you choose for your mobile development, you better get started or you’re going to get left behind.
I work for Appcelerator
Titanium and Titanium Mobile are OSS, released under the uber liberal Apache 2.0 license. As Jeff said, our source is available on Github if you want to check it out.
I don’t think focusing on developing the technology and seeking to make money from its development is a bad thing. Appcelerator’s plan has long been to get revenue from value-add services, training, and support. Having a business model and some investment dollars behind the platform should give you some confidence in its long term viability. Plus my kids are really cute – you wouldn’t want them to starve, would you? Got to pay those bills somehow…
*disclaimer: I am a contributor to iUI ( http://iui.googlecode.com )
Depending upon the nature of your application, I would definitely recommend using an Open Source web-based development solution (like iUI or jQTouch) and something like PhoneGap to deploy native apps to the devices. Keep the UI code and the code that uses native features as separate as possible. This will give you the most flexibility.
Another nice thing about PhoneGap is that it gives you the choice of a wide variety of iPhone-optimized web frameworks (there is a list here: http://phonegap.pbworks.com/ — iUI included, of course) I’m not that familiar with Rhomobile and Appcelerator — do they allow you a choice of web framework? (I see in the Rhomobile FAQ that it includes a styling library based on iUI, cool!)
Another thing to keep in mind is that the locally-cached with local storage WebApp will likely become more viable on the iPhone in the future. WebApps were Apple’s initial idea for the iPhone and I would not be surprised if Apple decides (perhaps in response to competition) to take steps to improve the iPhone’s support of these apps. Two no-brainers: (1) Allow a WebApp to have a button that says “add to home screen” and (2) Allow WebApps to be listed in the App Store. They could also offer JavaScript access to more hardware features. Don’t hold your breath waiting for it, but don’t be surprised when/if it happens.
Granted Apple’s current leadership position in native apps makes this a low priority for them, but they will respond to the competition’s offerings.
p.s. I recently put the iUI samples and tests on Google App Engine for Java using Gaelyk.
Site: http://iui-js.appspot.com/index.gtpl
Blog Entry: http://code.msgilligan.com/2009/09/iui-on-google-app-engine-using-gaelyk.html
Thanks, great post. Very usefull.
@Sean -
re: no-brainers: (1) Allow a WebApp to have a button that says “add to home screen”
I don’t know about older versions, but safari on my new ipod touch (3.1.1) does just that. “add to home screen” is one of the choices when bookmarking a web page. If you have the correctly named png in your web root, you can even have your own icon display.
Dan
Sean, you can run any legal JS on Appcelerator. You can do pure web, hybrid (mixed HTML5 + native) or pure native views on Appcelerator.
[...] Otros Frameworks: distractable.net/coding/iphone-android-web-application-frameworks/ [...]
[...] Distractable liefert eine kleine Übersicht über Frameworks zur Entwicklung von mobilen WebApps [...]
just to let you know there’s also LiquidGear, which provides access a decent amount of low level functionality! But it’s just another choice for your iPhone building!
Thanks for the heads up on LiquidGear Matt – I’ll definitely have a look at it.
Cheers,
Damon.
Hi All,
I run a digital agency in the UK and we are just weighing up what is what in terms of iPhone App Development.
Firstly I’d like to say thanks to everyone that has posted here, it’s all really very helpful and really good food for thought / further research.
But having read through it all there is one question that I still have… and I was hoping that one of you busy people might be able to tell me straight!
Is / are there any downsides to not using Objective C for iPhone developments? All of my team are fully conversant in xHTML / CSS / JavaScript / JQuery, so not having to reskill them in Objective C is really very attractive. But if it means that our applications will be in some small way compromised then maybe it’s a bitter pill that needs to be swallowed.
I hope this is not too much of a silly question and look forward to your responses.
Thanks,
Nick
Hey Nick – That is good question and I think still very relevant. Even though the maturity of web oriented development approaches are gaining ground on the Objective-C native development there is still a bit of a gap in terms of how they “feel” on the actual device itself. In my opinion, whether you were to select Objective-C for development or web technologies would largely depend on the kind of application you are building. In all honesty I probably don’t have quite enough experience with the native development to be able to answer the question properly but I’ll tweet some business contacts I have and see if they can add some clarity for you.
Cheers,
Damon.
Hey Damon,
Thanks for the speedy response. I’ll definitely keep my eye on this page and read updates with interest.
Thanks once again,
Nick
@nick As Damon says, choosing a language/tech stack depends very much on the kinds of applications you are building. While I think in the next 5+ years we will be moving towards webapps, your choice now really depends on the type of applications you are looking to build. Most of the applications we build could not easily be built as web apps.
While the web team can use JQuery etc its unlikely they were skilled enough to invent sometime like jQuery. jQuery takes something complex and makes it easier – we are beginning to see the same thing in the iPhone apps. Some are at the code level e.g. the Three20 library of useful components and some are higher e.g. the unity game SDK, the forthcoming adobe tools and tools from companies like ours, our Oompf tool makes is easy to publish news, wikis, locations and structured data. These tools will get even easier to use.
In the medium term I do believe the web will ‘win’ and you will be able to create iphone apps from web tech that you can SELL on the app store. They will have access to the entire cocoa API thru JS equivalents following W3C standards where they exist. I do think this is a few years away.
Thanks to both Tom and Keith for adding their 2 cents on this. I’m glad to hear Keith say medium term for web, because I think last time we spoke he was saying long term (but you can see he does qualify this with “a few years away”). I’m banking on it being closer to 18 months, but I’m a bit of an optimist.
[...] http://distractable.net/coding/iphone-android-web-application-frameworks/comment-page-1/#comment-80 [...]
Great post and useful comments. You got yourself a new subscriber.
[...] week I came by an article talking about application development for mobile device. One of the things that cough my attention [...]
Fount this product on a web search. However, I did not find any independent reviews or comments and never tried it myself. http://developer.openplug.com
Why is it that none of the mentioned frameworks have good documentation except short introductions on how to setup an IDE or other minimal info? I’m interested in android development and there’s scarcely any information about it. More so, the tendency is to rely on ruby or python even if javascript is the language that matters?
@florin – Great point mate. If you get a chance shoot me an email through my contact us page or connect via LinkedIn. I’ve got some stuff in the pipeline at the moment that I’ll probably blog about sometime, but it would definitely benefit from someone with your frankness and critical eye.
Cheers,
Damon.