2002 was the year of Bad Ideas.
An overly-anxious United States Congress granted “immediate emergency powers” to the President, resulting in war. WorldCom and United Airlines both went Chapter 11. Journalist Daniel Pearl was executed by terrorists in Pakistan. Two yahoos sniped at civilians in Washington, DC. And Britney cheated on Justin.[GASP]
Amid the muck Rod Johnson quietly released “Expert One-on-One J2EE Design and Development”, and it was chock-full of Good Ideas. Among them:
* The contract between the bean provider and the container was too verbose
* The remoting model imposed bulky access
* Aspect-oriented programming should be used to apply orthogonal concerns
* Entity Beans sucked
* Testing business logic contained in EJBs was difficult
* EJB inhibited good OO design due to its API restrictions
I can see why the Spring movement was seen as such a breath of fresh air to developers sick of coding Local, Remote, Local Home, Remote Home, and Implementation classes for what might be a trivial service. The community owes a debt of gratitude to the assertions presented by Rod & co.
To underscore how correct many of these anti-EJB claims were, the Expert Group behind JSR-220 independently came to many similar conclusions, and after 3 years of work released the EJB 3.0 Specification in May of 2006.
Bringing simpliciation to the standard was not applauded by the Spring-a-lings. “[They believe] the same thing Wednesday that [they believe] on Monday, no matter what happened Tuesday.”
Which is fine. Really, conflicting views within the industry should be embraced as its the consumer who will benefit in the long run from a variety of options.
But today I read something disturbing, taken straight from the Product Page of the SpringSource tc Server:
“The Spring container has replaced the EJB container in a majority of enterprise Java applications and is now the de facto standard for enterprise Java.”
Oh, fuck you with a rake.
I’ll break this down into two components:
1) Spring has replaced EJB in the majority of JEE outfits
2) Spring is the standard (in practice, not law) for Enterprise Java
This evokes memory of some poorly-conceived graphs and analysis posted by Rick Hightower and later covered by InfoQ in 2006, where job postings and brain-dead search terms drew the picture that EJB as a platform was flaccid in comparison with Spring’s reign. Ignoring for the moment that we’re extrapolating fact from subjective assumptions, it’s only proper that I present some current numbers using relatively impartial queries:
Here we’ve got Google search terms. Note the top three.
Looks like “J2EE” is still a very popular job posting, despite being a deprecated grammar. “EJB 3″ doesn’t even show on the map if charted.
What I’d really love to see are some third-party analysts’ metrics. Or maybe the Spring Flingers can back these claims up with hard data. Until then, I’m relegated to hold the position that EJB is maintaining its dominance. Not to mention that even today JEE hasn’t yet shaken the bad blood accumulated in the days of the EJB 2.x spec, when DI and AOP were the new hot toys.
Or maybe I’m being unkind. After all, if the community was aware that every single bullet in the Spring mission statement was addressed by a specification and backed by a series of compliant implementations, they’d have no business left. What’s the value-add to a company that is proud to do little more than aggregate other proven technologies?
Again, Springers mostly have it right. Simplicity is great. But it doesn’t have to come at the expense of EJB anymore; we’ve adapted, you should too. If Pluto can stop being a planet, surely you guys can stop being dicks.
 Star Wars Episode II: Attack of the Clones
 Stephen Colbert in reference to George W. Bush, 29 April 2006,