I've just returned from a week–long RAD workshop where I was involved in the initial development of a Java framework for internal use within the organisation I work for. The workshop was a first for me and a first for my employer. We achieved the objectives that we set ourselves, so the consensus is that it was a success.
I got to experience pair programmming for the first time, which I found quite challenging because I like to produce code in my own time without the pressure of having somebody else watching me. I'm also a perfectionist, so I had to resist the urge to jump in when my colleague didn't produce code precisely as I would have done! It was good being able to bounce ideas off each other though.
We were working on the Web UI for the framework, using Jakarta Struts. I'm still in two minds about Struts. I can definitely see the advantages of the MVC architecture it offers over standard Java servlets and JSPs, but a lot of it is confusing because the names it gives to things aren't necessarily the obvious ones. Its creators acknowledge as much and say it's this way because the framework “grew in the telling”. I'm keeping an eye on Tapestry, which seems to promise more and is now also a Jakarta project.
I used the Struts Tiles package for the first time, which was a good learning experience. Tiles is a more powerful form of the server–side includes mechanism, which means that it allows blocks of markup (a “Tile”) to reused throughout an application. It does add another layer of indirection to the already indirection–rich J2EE ways of doing things but it's not too onerous to get to grips with. I'm learning lots.