I am the author of an ExtJS based cluster management web-application (Scyld IMF at Penguin Computing) that allows controlling a high performance compute cluster from any web-browser, be it from your desktop or from a mobile device. This works fairly well already even without writing a special view for the mobile devices as current smartphones (iphone, android) come essentially with a full blown javascript capable web-browsers and lots of processing power. However performance still could be better by having a native app that uses the same data sources / api as the full blown web-application (javascript app running on the browser being the client to the webservice-api on the server side), but implementing the view natively.
After hacking up a proof of concept for the iphone (thanks John for your awesome iphone JSON flickr tutorial and xcode example for download) and thinking of how to do the same for android without duplicating effort, I realized that it would be nice to be able to have some kind of middleware that allows me to create and populate native gui components without code duplication.
One such middleware is phonegap which requires you to write your application in javascript and html, and allows accessing phone specific features through javascript calling the middleware. It then is bundled as a native application that can be submitted to the app store for purchase and can run completely offline once downloaded, unless the programmer chooses to access remote resources. Their initial focus seems to have been allowing access to smartphone specific features like the address book, vibrate and sound, gps location and such, but there also is code in there to use native gui components as well.
I have two problems with the approach:
1. development of javascript – while palm pre developers might tout this as an advantage, I find javascript development and debugging rather tedious and would prefer writing my code in java or objective-c and be able to run it through a full control debugger on my desktop before deploying it to the simulator. I know about and am actively using firebug, the javascript debugger for firefox, but a lot of the bugs I had to deal with were incredibly hard to hunt down and rather than the debugger it was the forums and interacting with developers on #extjs chat, as well as using jslint and manually analyzing code, that helped me figure out a root-cause, workaround or fix.
2. performance – developers report that the phonegap version of their app appears to consume more resources rather than less compared to a remotely hosted javascript app, accessed through the mobile devices web-browser. Apart from the overhead of having to parse javascript at runtime, developers sometimes need platform specific knowledge and implement different than for a web-application, i.e. iphone onclick events being much slower from the touchscreen than ontouch events.
The advantage on the other hand appears to be that it is relatively easy to add new mobile platforms to phonegap. So far they appear to have iphone, android, blackberry and some nokia platforms covered, with palm pre being on the horizon to be added beginning of next year.
And according to phonegaps website, there are already several real-world phonegap powered apps in the marketplaces of both the iphone and android.
Thoughts?