EJB Bashing. Listen to the EJB's go Pop. [James Duncan Davidson]
It's interesting to see the java bloggers are starting to agree that EJB isn't a good idea.
There was another interesting thread about this a week ago, which is well summarized in James Strachan's weblog.
[Andres Aguiar's Weblog]
One of the reasons that I embraced the .NET Framework stemmed from a real wake-up call I had about EJBs last year. I was contracted by a company to write an EJB-based product that integrated with a legacy mainframe system; I did so, it worked fine, they wanted to move ahead with a full implementation. But the CTO challenged me as to whether we could do it without EJBs. I said "Hey, they aren't really that hard, you just got to know a couple of things." But he made the point that there was no real clear need, in our case, for EJBs. So I moved ahead and headed the team that wrote a "plain vanilla" Java program: I had forgotten how good Java could be. We wrote a killer Web Service, met all our deadlines, and, as consultants, put ourselves out of work. (I guess that's why I'll never be rich: I'm not interested in being a Perma-Consultant.)
Anyway, a huge point for me is that EJBs increase edit-compile-debug cycle from seconds to minutes. Over the years, the task of doing enterprise work in Java has been like the proverbial frog that's boiled in a pan of water that slowly gets hotter and hotter: It started out great and no single thing ruined it, but at some point, you realize that it doesn't have to be this way. Switching from EJBs to "just" Java reduced our edit-deploy-debug time from minutes to seconds, simplified all aspects of the architecture, decreased deployment costs, and had killer scaling attributes.
I had originally jumped from MFC and C++ to Java precisely because with Java I felt like I had discovered in regards to things like network programming: "Hey, it doesn't have to be as painful as they said." Last year, I had that seem feeling with C# and .NET versus J2EE: here you have this new language and framework that seems to make enterprise-level development easier and the main thing keeping you in J2EE is the assertion that "it has to be this painful." Well, I've been working in .NET on a daily basis for more than a year now and my conclusion is that it's at least as good as J2EE in every aspect and better in most.