Play! is by far the best web framework I've ever seen for Java.
It is as hot as node.js and socket.io combined! I can't really recommend it highly enough.
======
Strong points:
* A life-changingly fast edit-test loop. (Faster than Django!)
- Excellent beaning for form parameters (no longer have to mess around with Integer.parseInt(getParameter("objectId")))
- Libraries that obviate the crufty old ones, e.g. instead of Apache WebClient, just use WS.url("google.com ").get(). It has OAuth, Emailers, etc.
- Support for new technologies, e.g. WebSockets
- Support for non-blocking IO in imperative-looking code. (e.g. you can "waitFor()" a Future, which will cause Play! to suspend your request until the Future is ready, reusing your Thread for another request, and resume where you left off)
- Much better interceptor model than J2EE (can apply interceptors to your entire class, to individual methods by annotating, e.g. @Before, @After, @Finally)
- A routes file instead of web.xml
- Large selection of community modules to do everything from rendering your template as PDF to inlining CoffeeScript in your page.
- A framework for running scheduled jobs and for triggering asynchronous jobs from web requests.
======
Weak points:
- The default Groovy templates are powerful, but notoriously slow. The template system is supposed to be pluggable, but I haven't yet found a templating technology that feels perfect.
- The heavy use of reflection and bytecode manipulation is what makes things so convenient, but I can also imagine it being a turn-off for some.
- The Play! codebase is very light on comments.
======
Give it a shot if you haven't already.
- Play! Fanboi