JQuery Mobile is a web-based framework that can be used to create web-apps for all kinds of mobile devices. It provides an optimised experience for touch-based smart-phones and tablets, whilst still allowing older devices to access the content. It is supported by the JQuery community.
Other reasons why I like JQuery Mobile:
- It's relatively quick and cheap to create a site that works on multiple mobile devices regardless of whether they have a particular OS (Android, iOS, Symbian, etc.), or a particular screen size (tablet, or small-large smart phone screen)...they just need a browser.
- It helps create a great experience for smart-phone users with newer browsers, but degrades reasonably well for older phones and other devices with less feature-rich browsers (such as the Amazon Kindle browser).
- It supports page transitions, touch gestures such as swipe-left, and various navigation aids out of the box, and allows you to customise these easily.
You can take a JQuery experience native using a framework like PhoneGap, but:
- It is hard / impossible to get the exact native look and feel...you run the risk of falling into the 'uncanny-valley' of an experience that confuses the user by appearing to be native but not behaving quite as expected.
- The above point, and the fact that Apple has deliberately tried to sabotage cross-platform development in the past means that you are more at risk from Apple's approval process than if you were writing in Objective-C.
- JQuery Mobile is probably more suited to allowing a better experience for mobile browsing of content than it is to creating specific apps that use a lot of native features...some of these features can be accessed through PhoneGap, and some can't.
- Similar to the point above, JQuery Mobile allows us to use the web as a platform rather than writing for each platform individually...you wouldn't create a desktop app for your website, but you might create a desktop app for a drawing program. So there are still going to be lots of situations where you need write a native app.
- Remember your team, and support team's skillsets - perhaps they can support an Android device written in Java better than client-side technologies (then again, the opposite may true especially with Objective-C).