You right stranger, but whartarewegonnadeuh? What do you think of avoiding frameworks and just going with the servlet spec?
I'm not kidding here. I got fed up with Java about 5 years ago and taught myself Rails and Ruby, but I kept programming in Java largely because of work requirements. Every time I got to write nice, clean POJOs, life was pretty good, and I felt productive and enjoyed coding for long stretches. Every time I was deep in frameworks (spring, struts, hibernate, etc), I felt like checking email or HM or just going home.
I like Rails, but even then I find myself fighting with the framework eventually. I'd say with Rails, the trade-off is easier to stomach - I get so much out of Rails that I'm not as unhappy when I have to figure out how rails does something. With Java, I'm even more tempted to just use the lowest level I possibly can, in the belief that the up-front cost to productivity will be offset when I need to do something that isn't easy with the existing frameworks. Another factor in all this is mental space. I can keep the core language in my head, but I can't possibly keep all the frameworkish stuff in there, and in Java, even if you find an article on using spring to do something, the example never works (strangely, in Rails, it usually does).
The problem is... I still do need these things in Java as well. It does feel a little dumb to write my own MVC framework. I like auto-generating the dev database from annotations. I don't like Spring, but Dependency Injection actually is pretty damn useful for swapping out different implementations of a constant interface. I could go with something else, I guess...
This is a tough one, and it's typical of complexity creep. Each individual decision makes sense, but after a thousand little tiny pieces of complexity are added, you step back and realize you have a monster on your hands.