The thing about J2EE development is that it is all such a bloody complicated hodge podge of standards, frameworks and tools - and these are moving targets too. For instance:
EJB, Hibernate, Spring, JSF, Stuts, JDBC, JUNIT, DBUNIT, Eclipse, ANT, Cactus, any and many many more (in ronco ad voice ;-0).
Most of us have been on some servlet/JSP courrse and to honest these are completely useless in the real world. It is sort of the same as going on a gearbox course and expecting to know how the internal combustion engine works.
So it was rather fab to discover Appfuse.
So what is Appfuse:
At its very core, AppFuse is a web application that you can package into a .war and deploy to a J2EE 1.3-compliant app server. It's designed to help you create new web applications using a new target in its build.xml file. The new target allows you to specify a name for your project and a name for the database it will talk to. Once you've created a project, you can instantly create a MySQL database and deploy it to Tomcat using ant setup. Furthermore, you can verify that the basic functionality of your new application works by running ant test-all. At this point, you might sneer and say, "What's the big deal? Anyone can create a .war file and deploy it to Tomcat." I agree, but do you have a setup-tomcat target that will configure Tomcat with JNDI resources for connections pooling and mail services? Most of what AppFuse does is not rocket science. In reality, it's nothing more than a directory structure, a build file, and a bunch of base classes -- with a few features thrown in. However, it has vastly accelerated my ability to start projects and develop high-quality, well-tested web applications.
For me appfuse has provided the "Oh I See" moment for real world J2EE development. I have understood how all the bits have worked for ages, but this has really helped.
Try it my Domino Brothers.