The Play guys went to great trouble to ensure that both Java and Scala are fully supported. Perhaps consider being a bit more open-minded about your options. Scala is simply a more modern and flexible language, so I don't blame them for using it.
But in general I agree that at the moment there aren't a lot of web framework that fit your description in the java world.
A minor demerit was getting SBT and Play Java to work correctly in IDEA was enough of a pain to make me wonder how much overhead that was going to incur in the long run.
If someone who has used Play Java in production on a large project can weigh in on whether these points are true or not in real production use, I'd love to hear it.
Going forward our new code is all in Scala. Not because we ran into issues with Play + Java, we just get fed up with Java's verbosity when dealing with futures and actors.
* Java as a first-class citizen
* Strong core of basic web app functionality
* REST and Search engine friendly URLs
* Action oriented – basic framework for routes, MVC etc
* Stateless
* Good documentation, active community
If we look at action frameworks only:
* Play 2: Great except it's Scala. Ruled out.
* Spring MVC: Spring is bloated old-school Java with Hibernate. Out.
* Stripes: hasn’t had a commit in over a year… which is unfortunate because it looks interesting. Out.
* Spark: appears to be a one-person project. Out.
* Google Sitebricks – ditto
* Ninja: Ditto