Preface
In 2004, Erik Hatcher traveled from a very wet Virginia to a usually dry Austin and got lucky. Barton Creek was up. Together, we braved the cold and windy conditions, and had one of the best kayaking days of our lives. In 2000, three friends and I drove east in March to run the Little River through the Great Smokey Mountains. As we put in, two inches of snow frosted the landscape, and flakes lightly dusted our boats on another memorable, incredible day, ripping through rapids like the Sinks (I walked around it) and the Elbow (I ran it, and didn't sleep for a week afterwards). The cold weather that starts a new paddling season adds an indescribable kind of energy to a run. There's just something magical about the thaw—the springtime.
In the Java community, we're encountering a Spring of a different kind. This one follows the great freeze of Enterprise JavaBeans 2.x (EJB). Tens of thousands of applications lay in frigid, near-death conditions in this well-intentioned, massive block of ice. EJB can suck the life right out of a developer if you're not careful, and sometimes, even if you are:
Though developers use automated testing as a cornerstone practice, you can't test EJB applications well at all. The container is too big to start in a test case, and objects can't live outside of the container.
EJB is incredibly intrusive. True, it's designed to shield your business objects from the details of transactions, persistence, security, remoting and messaging. It just does a terrible ...