At No Fluff, Just Stuff, Sunday after lunch is reserved for the speaker's panel and poll. Jay polls the audience to find out what version of Java everyone is using, which Ajax libraries, IDEs, and that sort of stuff. One of the questions he always asks is "Which web frameworks are people using"? Generally, Struts still rules the numbers (although, recently, he's been asking how many people would use Struts on a new project and the numbers plummet). He rattles off the litany of web frameworks (there are dozens in the Java world, after all). And, on the panels I'm on, I pipe in by asking people how many are using their own, home grown "Craptaculous" framework. Interestingly enough, there are always hands. And the home grown Craptaculous framework generally beats out some well known rivals, like JSF (thank heavens) and Tapestry (what a shame).
This really shows the confusion in the Java world around about web frameworks. The only clear consensus is around Struts, and only because there are lots legacy projects that started with it. I put this down to the The Paradox of Choice, which Scott Davis references in his keynote No, I Won't Tell you Which Web Framework to Use (or, the Truth, with Jokes). Yes, there is an entire hour-long keynote about this topic. The Paradox of Choice shows that people's decision making capacity shuts down when presented with too many choices. The classic example from the book is the store selling jam. A little boutique store started presenting jam samples to entice customers. When they put out 3 different flavors, customers sampled them and the sales of jam soared. More must be better, right? So they put out 10 difference flavors...and the sales plummeted. When presented with too many choices, people's decision making ability shuts down.
Which I think it at play now in the Java web space. Scott's keynote is a direct result of this. Inevitably, at No Fluff, Just Stuff shows, the question comes up on the expert panel: "Which web framework should I use?" If there were only 3, you could reasonable go compare them. When the number reaches 10 or 20, there is no time to go sample each one. Thus, paralysis sets in and you end up using Struts (again), or creating another version of your home-grown Craptaculous framework.
For better or worse, other markets don't suffer from this. In the .NET world, there is only one: ASP.NET. But that is a different kind of market. Despite the efforts by many in the ALT.NET space, open source isn't nearly as prevalent in the .NET world as in others (I can't tell you how many clients I've talked to that created their own logging framework for .NET -- it just never occurred to them that this problem has already been solved over and over). In the Ruby world, there is really only Ruby on Rails (although there are others, they have a very small following compared to Rails). Same in the Python world: there are several frameworks, but as an outsider looking in, it seems that Django has all the buzz now.
Which suggests a clear new front runner in the Java world: Grails. Because it is based on Groovy, not Java, the perception is that it is the only game in town. That will help drive the adaptation of Groovy like wildfire. In fact, I think that Grails is the engine driving the interest in Groovy. New languages are cool and all, but until you have something to do with them, they don't catch on (look at what happened with Java when servlets came along).
Of course, I would be remiss not to mention that Rails now runs on the JVM via JRuby. However, I think this is perceived by many in the Java world as a bigger transition than Groovy and Grails. Ruby is a completely different language, with different idioms. To hard-core Java-ists, Groovy is practically Java, with most of the stinky parts removed. Once Grails becomes 1.0 and beyond, it may be salvation from the home-grown Craptaculous framework that Java developers are still using.