There are about as many questions on this site about Java web application frameworks as there are frameworks themselves, but I'll try to make this question as specific as possible.
I'm developing web applications to mirror my company's Java applications. (Unfortunately, they don't have pure presenter layers so I can't just make another "view".) We're targeting mobile phones (including Blackberry and Windows Mobile 6.5+, not just iPhone and Android).
In a framework, I'd like:
- Progressive enhancement (the page needs to retain full functionality without JavaScript)
- Fully standards-based, strict HTML
- Presentation/layout should be done primarily with CSS
- Some sane model like MVP would be nice so if we do need more views/interfaces to our apps in the future we're not having to rewrite the app yet again
- Write business logic/validation once and get it server-side, sent back to the client on POST, client-side via JavaScript for functions that don't need info from the server, and client-side via AJAX for functions that do need information from the server
- Being able to debug in the Java IDE would be best since most of the employees here are familiar with Java, but I'm comfortable using both Java IDEs and the usual web tool-chain such as Firebug, Chrome Dev Tools, etc.
- Being able to unit test well, although that goes along with having a sane model
I've been looking at GWT and while things like deferred binding certainly are nice, browser sniffing and separate code paths for each browser instead of object/feature detection (especially in a market as volatile as the mobile phone market is right now) scare me, and in order to have full Blackberry support we probably couldn't use most of their built-in controls/layout panels/widgets anyway, not to mention a lot of their widgets just completely die with JavaScript turned off. I'm also just starting to evaluate JSF, Grails, Wicket, etc.
Are there any frameworks out there that address those concerns that I've been too thick to find, or would I be better off using a framework like GWT as a jumping off point while just writing all of our own controls from scratch? I'm fine with a bit of start-up pain; whatever we end up doing here will probably be used for all of our web applications (both mobile and not) so I'm hoping that the SO community would have some good insight that I might not.
Thanks!