Phonegap and Titanium are different things from jQuery Mobile and Sencha Touch, which are slightly different form jQTouch.
Want to build a complex app that could run on iOS, Android and Windows Mobile with no(t much) fuss? Don't like writing HTML or CSS by hand but enjoy writing JavaScript MVC stuff and fancy learning new stuff? Go with Sencha.
Want to build a nice mobile interface for a website but you need your very own markup and CSS and you'd also like to apply your jQuery king-funess to the project? jQuery Mobile is the thing you need.
Want that "site" to be a native app that talks with your web services and uses accelerometer, gps and camera? Add Phonegap.
... or appMobi/jqMobi. You could basically use of any of these frameworks/libs and run your project through appMobi in the same way you would run it through Phonegap.
We've been building up on Sencha Touch 2 since the first PR. It was hard to convince devs on team to make this choice. It takes some time to get into Sencha way, being familiar with ExtJS helps. Some benefits -
* a faster development process once you're clear on the concepts
* along with conventions, a lot of configuration is possible
* the new class system makes it easy to build custom UI components and write maintainable code
* the new class system combined with jsbuilder/sdk tools helps you produce minimal js.
* many well done examples
* ComponentView and DataViews are kickass. saves many lines of code that you might have written for updating views otherwise
* many types of eventful data stores, and they talk REST out of the box!
* great performance on iOS in general
* our customers needed a lot of theming - we build our theming system on top of sencha's sass work. rolling out new looks = 10 lines of change for us :)
It's only free as in free beer if it's free as in GPL, otherwise you have to pay for a commercial license. GPL means you have to provide source if you distribute the app. And isn't there also an incompatibility with Apple's App Store terms and the GPL (VLC case)?
[Sencha] Ext JS commercial license is $329 per dev. The $600 includes optional tech support. There's also a $995 that includes the Designer UI builder, Sencha Touch support & Sencha Touch Charts.
Why not include an option for people who don't use a framework? It'd be nice to get a perspective on the portion of developers who are rolling their own mobile webapp.
With mobile web development, the frameworks add needless complication and bloat. All the successful good-looking mobile webapps I've used (Twitter, FB, etc.) don't use any of these frameworks.
I'd think most roll their own apps, framework or no framework. But yes, there should be one alternative for no framework and another for native development. To your other point, if you look at frameworks like jqMobi and a cpl of others there really isn't much bloat. You can further remove functionality/widgets (or just don't call plugins) you don't need in your project. You mentioned the FB and Twitter apps. Thing is, it's not less code there, just smarter code and better design. They employ some gifted and smart ppl.
Hand coded widgets and Backbone. No frameworks like jQuery. When last I used these frameworks they were too heavyweight to load quickly over a mobile connection.
Don't forget iUI. :-) It's minimalist, but very lightweight and fast, and is great if you want a native-like iOS look-and-feel in a web app. http://www.iui-js.org/
Edit: as others have noted, there's some overlap. The project I currently have under development uses PhoneGap, jQuery Mobile, and iUI for different functions.
I'm creating a web app builder for non-technical people. It uses iUI for the generated apps (lightweight, gives a decent native-like look and feel) and jQM on the builder side (lets me leverage the tons of jQuery code out there).
I've been turned off of all these mobile frameworks. Tried many, but no one has "felt right". Some got completely different design patterns (Sencha Touch), some are almost dead (jQTouch), some are large, ugly and bloated (jQuery Mobile), use non-standard stuff (Jo framework), etc. Sencha is really close to emulating a native feel, if that's what you're looking for, and jQTouch is really easy to get started with. Pros and cons.
HP's Enyo framework seems really interesting though, as does Mulberry. But sometimes the best framework is no framework at all - Backbone + Zepto can take you a long way (but lacks fancy mobile UI widgets). It all depends on the project.
One more vote for this, especially if you are only targeting newer android / iOS, it's liberating to be able to use new CSS/JS and keep it trim and neat. However, there's a lot to be desired in mobile browser space still.
I really hope android browser can mature to the point where the browser wars (think firefox vs Chrome) come to the mobile space.. Geolocation for example there's a huuuge gap between how accurate iOS is compared to android (especially with wifi switched on).
Also, I realize that it's more idiomatic (and reflective of what's really happening) for jQuery mobile to present the user with a waiting spinner, request the content, and then change pages on receiving the content.. But it feels much more responsive to cheat and slide to the next page then present a spinner.. Just a personal nitpick.
We've built a couple of apps with Sencha Touch for the iPad and iPhone. Awesome framework - can't wait to try out the native packager when Sencha Touch v2.0 goes GA.
I've been playing with the new Trigger.io framework and really like it so far. Simple and very fast command line build tools (a new build takes around a second) and a decent JS API for native functionality. It creates desktop browser plugins from the same codebase - a nice bonus and useful for debugging purposes too. YCombinator funded and believe pg has a personal investment.
Us too. After a year, we're still really happy we went with Closure, but trying to convince most javascript developers outside our team to learn it has an uphill battle. The learning curve is rather steep, there are no tutorials besides Michael Bolin's (excellent) book, and the similarities to java turn some people off.
But once you get past all that, you have a powerful library with a good set tools for unit testing and a compiler that does dead code removal, function inlining, optional type checking through JSDoc annotations, etc. Its miles ahead of any pure-javascript solution because compilation is so tightly integrated into the whole development process. And yet you don't have to compile to run the code in development, so debugging is no harder than before.
That said, it's worth noting that the closure library is not a framework. You build your own application structure, models, etc, so it's definitely more work to get started.
I use Phonegap and build all my interfaces from scratch every new project. Tried to use Sencha Touch, jQuery Mobile and jQTouch, but I prefer to have full control over my code and build all by myself.
Since this is about html5 frameworks, phonegap and titanium don't really fit in. those work well to wrap around the html5 content (also GameClosure)
Approach seems to break down to JS driven app development vs. a more dom/html starting point.
ember.js, sencha2, and possibly enyo seemed great for a component driven dev approach, but hard to deeply modify the UI behavior without fighting with the framework. These frameworks are for making your html app look like the apple UI guidelines, and "just like native". We are building games, so actually don't want to look just like other apps...
So for us using backbone (+mustache) gives a lower-level approach to code structure + binding, combined with a UI module for when you need a touch-UI widget (which is a pain to code by yourself). I'm sure other folks more experienced with ST2 may disagree but thats what we found.
Since we are doing non-wifi browser based distribution, the OTA download size is also a concern. If you're packaging/bundling for the app store this shouldn't be a concern.
PROS: lightweight, small download, decent functionality, backbone support right off. very easy to work with.
CONS: missing many basic UI components tho plugins may exist. zepto animation.fx is limited. BIG problem: very slow on mobile? we had problems with transitions on iPod/HTC devices. Sencha seems much faster. jqmobile isnt really active project - main dev is now on sencha touch? tho commits are trickling thru https://github.com/senchalabs/jQTouch/network
9k jqtouch.min.js
20K zepto.min.js
=29k total
=== jquerymobile + jquery
PROS: very active project, extensive functionality
CONS: dependency on jquery, then also plugins eg for CSS animations. supports lots of non-webkit devices we dont need to support, so not needed code. had some problems with creating copies of pages in the DOM when you navigate. transition code is based on jqtouch, tho performance seems improved? http://jquerymobile.com/demos/1.0a2/#docs/pages/docs-transit...
24KB jquery.mobile-1.0.1.min.js (24KB
30k jquery.min.js.gz
=55k total (+plugins?)
So we are currently digging into the transitions+DOM issues on the last two, and deciding if the 40k is a killer given 2G networks in many places... but would be interested to hear what others think.
Many of these can - often, should - be used together. PhoneGap doesn't offer any native interface elements, so pairing with jQuery Mobile or Sencha is often done, for example.
Personally, I voted for PhoneGap for any apps that don't require a "native" look, and NimbleKit for any that do.
Sounds good :) We have delivered over 100 apps to clients last year with jquery-mobile/phonegap so if your tools can make it easier this would be great. So can I have a beta account? I'll be very critical :]
I use www.openlaszlo.com , it haves a nice binding system, object oriented paradigm, encapsulation . It´s a shame that Laszlo( the company that supports it) can´t have interest to drive it to the html5 game. The project is kind of asleep but still being the best one.
If you were to learn one of these frameworks for the purpose of mobile app development, is it best to just learn the framework or also learn the underlying language (e.g. Javascript for jQuery)?
edit: assuming no previous web programming experience
While using Sencha Touch you will write a lot of vanilla JavaScript (you'll understand why as you learn it) so my advice is to make sure you handle pure JS pretty well before tackling Sencha. You might learn some JS form working with jQuery but you'll never learn JS from working with Sencha AND you will not have an easy time with Sencha Touch if you don't handle well the MVC pattern.
Out of the lot, jQuery Mobile + PhoneGap is a pretty good choice. However, jQuery mobile is a resource hog, and is really slow on some android devices. Blackberry and Symbain struggle just to load the pages...
We use a custom framework... Existing frameworks are moving targets, usually have significant amounts of 'dead' code (for our product) and are very hard to maintain (easy to run into significant framework level bugs very quickly)... Rolling your own involves other compromises of course :-)
I have a feeling Enyo is going to be a popular choice soon. I've been using Enyo exclusively since it came out. I've been using Prototype.js with Enyo both to port legacy code and because I like the style (even if popular consensus is not to mess with the prototype of native objects).
Want to build a complex app that could run on iOS, Android and Windows Mobile with no(t much) fuss? Don't like writing HTML or CSS by hand but enjoy writing JavaScript MVC stuff and fancy learning new stuff? Go with Sencha.
Want to build a nice mobile interface for a website but you need your very own markup and CSS and you'd also like to apply your jQuery king-funess to the project? jQuery Mobile is the thing you need.
Want that "site" to be a native app that talks with your web services and uses accelerometer, gps and camera? Add Phonegap.