I think it’s reasonably obvious to even those with only the slightest interest in technology that mobile and tablet application development is a rising trend. Unfortunately (and understandably) there is currently no single industry adopted standard allowing for a “write once, deploy to many” methodology. The results of which vary but almost certainly include increased development time and costs and I think it goes without saying that the minimisation of both is highly desirable in such a dynamic industry, more so if the intention is to maximise revenue or capitalise on current trends.
Many developers have decided to adopt a less traditional method of application deployment in the way of remotely hosted HTML5 web applications. The advantages of which include RAD (rapid application development) and easy cross platform deployment. The disadvantages of which will include the prerequisite of an active internet connection and the inability to distribute the application via an official store or marketplace. One such solution to these disadvantages would be to adopt a “hybrid” development model, wherein a bare bones native application is developed which in turn calls a “webview” populated with an embedded HTML5 application. In most instances, the HTML5 application can often be implemented with minimal (if any) modification whilst deploying cross-platform. Not only does this method allow for an almost “write-once” scenario, it also allows for web developers with little native/desktop application development experience to utilise their skill set and yet still produce a native product.
Sample Java wrapper:
Now, whilst I am sure that a number of my issues were indeed due to my own ignorance and unfamiliarity with the JQM framework, there are a great deal of issues which are inherent within the framework and the result of which is a functional, yet noticeably unpolished application. Certainly one I would have significant reservations about distributing as anything other than a sub v1.0 release. This saddens me somewhat as JQM has some wonderful features and a great deal of potential, but if my experiences are anything other than isolated then I don’t think it’s quite ready for the prime time just yet.
A suitable alternative to JQM appears to be a framework entitled Sencha Touch. This framework is free for commercial application development save for some licensing restrictions and thus far appears to function significantly smoother than JQM on the devices which I tested it on (HTC Desire-Z, HTC Wildfire-S, iPad 2). Each application is built upon model-view-controller (MVC) principles – something that I personally find appealing based on my regular usage of the Zend PHP framework. I must admit to initially being somewhat reluctant to embark on a Sencha Touch journey, largely in part due to sheer laziness and my great fondness for jQuery, but I’ve come to understand that this mindset was perhaps stubborn and misguided. Sencha Touch, at least from what I have witnessed thus far, produces an experience more akin to that I would expect from a native application. And since the end goal is to provide an experience as close to native without the headache of cross platform native development, it would make sense to adopt the best tools for the job. At present, Sencha Touch appears to be top of the list for many.
Considering I have yet to write a single line of code using Sencha Touch, it may simply be a case of the grass always being greener on the other side, so I’ll fully reserve judgement until I am a little bit more versed in the framework. I will be migrating my application in it’s current state over to the Sencha Touch framework throughout the next couple of weeks or so and I intend to fully document my experiences along the way. Part of me hopes that I’ll encounter as many frustrations as I did whilst working with JQM simply so that I may as well keep working with what is already quite familiar (yet under that mindset I would have never embraced Object Oriented Programming or MVC).
The rest of me really hopes that the end result will absolutely be worth the time invested.