App Development: Appcelerator vs (Phonegap + (JQuery Mobile vs Sencha))

Mobile apps are all the rage now, but to create cutting edge solutions on mobile platforms, at least for now, you need to adopt native development. So, as I have an idiosyncrasy  for Java and never developed on (not even used) an Apple platform, and lacking a real motivation to start, until now I kept myself away from this field.

Last week though, after reading once again a couple of inspiring article on Hacker News, I started thinking that trying out one of the various cross platform, javascript based solutions for mobile development on a lightweight app could be a pleasant distraction from my current main (night) projects. I even started fantasizing that, if it was really possible to create a web app using just “html5″ technologies, I could have been able to create a complete app (without too much polish) over just one weekend.

A fairly simple yet useful candidate for a lightweight app was to create a mobile front end for my adjustable rate mortgage calculator. Since all the complicated financial stuff is done on the server, and I already created a simplified web service for the free embeddable version (widget), if I could really use the usual web technologies on the phones my “aggressive” (ie, crazy) deadline seemed feasible.

So this is why, on a Friday evening after my day job, I started studying in depth all those solutions that I had just lazily kept an eye on during the last months. I think that what I learned can be interesting to others, so I’ll expose my findings here.

The contenders

My requirements for the ideal development platform were simple: To be as close as possible to usual web development, good enough for the job at hand, able to work on both Android and the iPhone, and possibly free or at least very cheap (as this was just a side show).

After some hours doing a literature review (ie, googling around), I came up with a short list of three candidates:

  1. Phonegap + JQuery Mobile (JQM)
  2. Phonegap + Sencha Touch
  3. [Appcelerator Titanium]

The order of the above list isn’t random. The first combination (Phonegap + JQM) was, on paper, my perfect solution: Based on JQuery, it really is web development for the phone, and it would have allowed me to even reuse part of my current code base.

Sencha Touch is another “html5″ solution (meaning that it creates html GUI objects, not native ones), and from what I read it is quite faster than JQM, but on the downside GUIs have to be created procedurally – something I started hating with the MFC, and never got myself to like.

Last, Appcelerator Titanium is javascript based, but it uses native controls. This should guarantee the best performance of the three, but, in addition to having only procedural GUI programming like Sencha, this also means that things sometimes have to be different on Android and on iOS, so this isn’t cross-platform of the “write once-run anywhere” kind. And, last but not least, I had found an alarming article about some nasty memory leaks that seemed almost a show stopper (that’s why I used the square brackets on the list – at one point Appcelerator was more out of the list than in).

There were also other interesting propositions (like rhomobile – I love Ruby), but they looked less viable for one reason or another and I won’t go over them here.

Testing

What I wrote until now is only based on my “literature review”. With my preferences made up, I decided to try the Phonegap/JQM solution hands on.

Setting everything up was easy enough. The problems came when I tried the “kitchen sink” test app on my Android phone (HTC Wildfire). The performance was terrible, and the rendering often incorrect. The same happened with a showcase app downloaded from the Android Market.

So, that was it for me. As much as I wanted this solution to work, my conclusion is that it is just not production ready yet, at least not for my goals and not for the current generation of not high-end phones. Good bye, reuse of existing code…

I then went on to Sencha. This time, I wanted to check the performance before doing any installation. So I looked for any success story for Sencha on Android, and luckily I found a very recent and very relevant article on techcrunch. When I read that “… it wasn’t easy, performance was a huge issue [and] at times it took days to figure out, and simple things like too much logging and poorly constructed ‘for’ loops actually made our app unusable during our journey.” I didn’t feel very optimistic.

So I installed on my phone the Diary app from the android market. Better than JQM, but still sluggish and with layout problems on my screen size too. And this after a long and painful optimization work, according to the article… not for me, not now. So, Sencha too wouldn’t fit my requirements.

At this point I was pretty disappointed, as I saw my fantasy of being able to complete an app over the weekend slipping away from my grasp. But, not wanting to give up, I decided to look better into Appcelerator: At stake was not only my simple app, but the possibility to develop more interesting ones in the near future!

First of all, I decided to take a look at the existing Titanium-based apps. Among their showcases there are many more iOS apps than Android ones, but I was able to install a couple of good examples on my phone; GetGlue, in particular, looked and felt really good.

But what about the memory leaks? After some more search, I found out that you can avoid them following some guidelines (see the comments in the alarming article) and, if still necessary, using some workarounds that would be perfectly acceptable for my current needs. I’m also pretty confident that in time Appcelerator will fix these problems (if they want to stay in business).

Conclusion

In the end, I downloaded the Titanium Studio and started coding. So far things went pretty smoothly, and, even if I didn’t create my full app over one weekend, I already solved 70% of the technical obstacles – it can already get the needed input from the user, send it to the server, get the response, and show some data in simple pure html bar graphs. What is still missing is a lightweight enough solution to show the payments time series, but I’ll start on that as soon as I have time.

What I learned from this very industrious weekend is that the news about the impending death of native app coding are greatly exaggerated, and that (surprise, surprise!) a LOT of what you read all over the internet about the marvels of html5 development is BS. But I also learned that, even if there are no silver bullets flying around, developing for mobile in a pretty much cross platform way with just one programming language is indeed possible, and that procedural GUI programming, on the simple UIs that you can create on phones, isn’t as painful as I remembered from developing fully fledged desktop applications.

0saves
If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.
  • Pingback: Daniele Mazzini()

  • Pingback: HN Firehose()

  • Pingback: daniele mazzini()

  • Pingback: Yannick Grammont()

  • Pingback: titanium-news.com()

  • Pingback: Ludovic Bostral()

  • Pingback: Frédéric Assémat()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Steven Hsu()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Yohann Monnier()

  • Pingback: Tatiana Kochergina()

  • http://twitter.com/brianleroux xnoɹǝʃ uɐıɹq

    you shoulda tried html and css and javascript with phonegap!

  • Anonymous

    You mean without any library? Not exactly my idea of fast development… ;)

  • Pingback: a k'wala()

  • Pingback: a k'wala()

  • Pingback: jquerybot()

  • Pingback: jquerybot()

  • Pingback: Raju M()

  • http://twitter.com/tonylukasavage Tony Lukasavage

    People tend to underestimate how much of a downer laggy performance can be with web based solutions until they do it themselves. Like Brian says, if performance is of critical concern with a web based mobile solution, you should be writing pretty much everything from scratch.

    As stated already, that’s the unique advantage of using Appcelerator. Native UI and near native performance.

  • Pingback: Raju M()

  • Pingback: fabi()

  • Pingback: javascript()

  • Pingback: Michael Davis()

  • Pingback: Jean-Charles NOIROT()

  • Pingback: Diego Giusso()

  • Pingback: Michael Davis()

  • Pingback: svk()

  • Pingback: Jordi Ferrer()

  • Pingback: Jeff Schoolcraft()

  • Pingback: GeekOnSpace()

  • Pingback: GeekOnSpace()

  • Pingback: Christian de Miranda()

  • Nmurphy

    What made the performance slow? Was it the speed of the wireless network, i.e. if you had 4G LTE, would that have helped?

  • Anonymous

    Nmurphy: Nope, the network wasn’t the issue at all – there was no communication involved in those examples. I guess that the slowness just depends on insufficient optimization of the webkit and javascript engines on the platform – or maybe the hardware is simply not enough for all those layers over it.

  • Pingback: Jerome Lavigne()

  • Pingback: Michał Dziadkowiec()

  • Pingback: subimage()

  • Pingback: Jason Kneen()

  • LC

    Dan, I had the same problem as you described using jqm + phonegap with the kitchen sink download, but after I upgraded the phonegap and jqm to the latest version, everything (except the native contacts call) works out smoothly on my HTC Incredible. Titanium has a monthly string attached and it’s simply too restrictive if u want to do some serious hacking and development. You are pretty much at the mercy of their bridge layer. For light-weighted “developer”, I guess that’s no big deal. Anway, with their latest upgrade, jqm + phonegap is still the best combo at this point, and the performance will only get better in the months to come, so don’t give up on jqm/phonegap yet. Meanwhile, keep yourself sharp on native android and Objective C for any top performance demanding project.

    • Anonymous

      Hi LC.

      Thank you for your suggestion. I’m pretty sure that html5 is the way forward for apps that aren’t too complicated. I’m glad to hear that jqm+phonegap are already getting much faster, but right now I just finished my first Titanium app, so I’ll wait until I want to create another one completely new to try this combination again.

  • Pingback: Appcelerator review « jbpringuey()

  • http://www.facebook.com/paperjobsads.online Paperjobsads Pakistan

    very well done. it’s a nice comparison of three for someone searching about it.

  • http://www.facebook.com/petercn Peter Carabeo-Nieva

    If you’re willing to code in Actionscript 3 / MXML then Adobe AIR + Flex with or without eskimo ( http://e-skimo.com ) is a really great cross-platform / multiscreen app development platform. Using Adobe AIR and coding an MVC or Presentation Model architecture, you can create powerful well-performing apps that run on Android, iOS, blackberry tablet, desktops, TVs, and more. With their new ANE (Adobe Native Extensions) support, there a re pretty much no limits as to what you can access on each device. I currently use these technologies to create my casual gaming apps, however, I’m experimenting with PhoneGap for creating simpler apps. The new PhoneGap Build cloud service is pretty slick.

  • Pingback: Nattakorn Samnuan()

  • Anonymous

    Try Application Craft + Phonegap. Here is a case study Phonegap did on them: goo.gl/QOCXY

    jQuery mobile has just announced Application Craft as a JQM dev platform.

    http://applicationcraft.com

  • Pingback: Nattakorn Samnuan()

  • Pingback: Jeffrey Fitzgerald()

  • Pingback: camcollins()

  • Althjs

    Hi~ why don’t you use Appspresso? :)

  • Pingback: Olof()

  • Pingback: Tedi()

  • Pingback: Pum Walters()

  • Pingback: Iker Barrena()

  • Pingback: Amin()

  • Irina Basrawi

    Great article, thank you

  • Pingback: Luis Claudio()

  • http://arneevertsson.blogspot.com/ Arne Evertsson

    I’ve read a lot of bad reviews of Titanium, and I’m afraid I have to concur: http://arneevertsson.blogspot.se/2012/03/titanium-breaks.html

  • Pingback: Andrei Taraschuk()

  • Pingback: GIS Geospatial News()

  • Pingback: Atle Frenvik Sveen()

  • Pingback: Mark Kramer()

  • Pingback: Francesco Bartoli()

  • Pingback: stefano parodi()

  • http://twitter.com/mmullany Michael Mullany

    Dan – would love you to take another look at Sencha Touch now that we’ve come out with Sencha Touch 2 – which has much faster Android 2.x performance.

    • Anonymous

      Hi Mike – I’d love to but at the moment I’m not developing for mobile… I’ll check it again the next time I’ll need that. Thanks for the tip!

  • Blisslogixtech

    We blisslogix after long research, founf Sencha 2.0 is best and started using for 20 of our clients :-)

    iPhone Android iPAD WP7 BB .Net iPHONE Game Using COCOS 2D Android GAME HTML5 SENCHA Phonegap developement team available .. Please contact blisslogixtech@blisslogix.com Twitter : @blisslogixIT

  • Pingback: Romain Piel ツ()

  • Pingback: Lapsellisia()