I recently came across the Play framework (not to be confused with the new name for the Android Market Place). Think of it as the Java version of Ruby on Rails, or one of a dozen other frameworks that leverage convention over configuration.
The real beauty here is that you get all the benefits of compiled code with the ease of use of scripted languages.
With all of these light, easily scalable frameworks, why would you need a full J2EE stack? In my opinion, the latter is only necessary in very rare situations, where as the former will do the job most of the time with more ease and less cost. Its the old 80-20 rule.