I'd like to know how you address the seemingly low productivity of JEE-based web application development compared to other technology stacks (Seaside, Ruby on Rails, etc).
The constraints are:
- The finished web application must be deployable on JEE compliant application containers
- If possible, previous investment in Java-based solution should be preserved, i.e. native interoperability with Java-based systems and libraries should be possible
- Due to team structure, Java as implementation language is preferred, although less exotic JVM-based languages (i.e. Groovy) might be acceptable as well
- The resulting system needs to be architecturally sound
- The resulting system needs to be extensible and maintainable
To not let this dwindle into a philosophical discussion, I'm only interested in suggestions that are based on practical experience. Possible examples include domain specific languages, frameworks and MDSD.
If you point to an abstract class of solutions (like MDA / MDSD), please provide details on how you implemented it as well as information about common pitfalls and best practices.
If you disagree on the assumption that JEE-based web application development implies inferior productivity, I'd like to hear your reasoning as well.
EDIT: As there are a lot less answers than I expected, I'll accept accounts of abortive attempts as well, basically extending the question to "How (not) to improve productivity when developing JEE based web applications?".