It’s not 2002
2002 was the year of Bad Ideas.
An overly-anxious United States Congress granted “immediate emergency powers”[1] to the President, resulting in war[2]. WorldCom and United Airlines both went Chapter 11. Journalist Daniel Pearl was executed by terrorists in Pakistan.[3] Two yahoos sniped at civilians in Washington, DC.[4] And Britney cheated on Justin.[GASP]
Amid the muck Rod Johnson quietly released “Expert One-on-One J2EE Design and Development”[5], 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[6] 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.”[7]
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[8]:
“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[9] and later covered by InfoQ[10] 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[11]. 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[12] 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.
S,
ALR
[1] Star Wars Episode II: Attack of the Clones
[2] http://en.wikipedia.org/wiki/Iraq_Resolution
[3] http://en.wikipedia.org/wiki/Daniel_Pearl
[4] http://en.wikipedia.org/wiki/Beltway_sniper_attacks
[5] http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764543857.html
[6] http://jcp.org/en/jsr/detail?id=220
[7] Stephen Colbert in reference to George W. Bush, 29 April 2006, http://en.wikipedia.org/wiki/Stephen_Colbert_at_the_2006_White_House_Correspondents%27_Association_Dinner
[8] http://www.springsource.com/products/suite/tcserver
[9] http://jroller.com/RickHigh/entry/stack_of_choice_jsf_hibernate
[10] http://www.infoq.com/news/2006/11/job-trends-ejb3-spring
[11] http://bill.burkecentral.com/2008/02/13/ejb-maintains-its-dominance/
[12] http://www.springframework.org/



[...] It looks like SpringSource had their annual developer event this week; Spring are well respected for their technology – but their marketing team seem to be stuck in 2002 – Andrew Rubinger has a perspective. [...]
Rich Sharples’ Blog » Blog Archive » Tab Sweep - JBoss said this on December 4, 2008 at 10:04 am |
ALR, I agree that EJB3 is an excellent step forward to sustain the relevance of JEE in the enterprise as well as get new projects adopting web beans.
Here are a much more interesting google trends :
http://www.google.fr/trends?q=tutorial+spring,+tutorial+jboss
http://www.google.fr/trends?q=tutorial+spring,+tutorial+jboss,+tutorial+ejb&ctab=0&geo=all&date=all&sort=0
Yes, bend the light, because there’s always a view we want to see.
http://www.google.com/insights/search/#q=spring%20java%2Cejb%20java%2Cj2ee%20java&cmpt=q
http://www.indeed.com/jobtrends?q=java+ejb%2C+java+spring&l=
btw, I’m pro EJB.
while we’re on the subject of trends … http://www.google.fr/trends?q=spring+sucks%2C+jboss+sucks&ctab=0&geo=all&date=all&sort=0
It speaks for itself doesn’t it….All statistics and lies
Maybe I shouldn’t have posted those pretty pictures. They’re in place to refute some other claims. Let’s all stop assuming there’s a correlation between the search terms and what we’re inferring from their results.
Spring doesn’t suck. I’m upset with SS incorrect vilification of specifications that we at JBoss have worked so hard to improve.
S,
ALR
I’m a professional developer, over 30 years in the business, the last 10 developing website. All website development in Java. The complexity of J2EE got me turned off right away, never had reason to use it. In 2003 I started using Hibernate and Spring. A solution which, aside from Hibernates inability to support an editing context, has worked on numerous projects. I don’t really care what’s in the 3 spec, it’s irrelevant to what I do.
Honestly, we’re only using JBOSS because it has a commercial support. I personally don’t see the need for more than what Tomcat provides. And if you want to convince me that you’ve got a something worthwhile to look at, referring to me as a spring-a-ling sets the wrong tone. A little humility and making a case that you’ve produced something that has a value add, would be a good first step. And value add doesn’t mean rectifying 3 years later the complexity that shouldn’t have been there in the first place.
Re reading I came across this quote:
> Or maybe I’m being unkind. After all, if the community was
> aware that every single bullet in the Spring mission
> statement[12] was addressed by a specification and backed by a
> series of compliant implementations, they’d have no
> business left.
Wow, you couldn’t be more wrong on that.. Which group am I more likely to continue working with, one that’s been right for over 3 years, understands simplicity and continues to produce a technology I use daily.
Or a group that’s 3 years late to the party who’s behind a standard that was worse than irrelevant because following it caused untold wasted hours on needless complexity.
Which group would you trust?
Tony:
Some good points, and some others I’d like to question.
First: “I don’t really care what’s in the 3 spec, it’s irrelevant to what I do.”
If you don’t know what something is, how can you determine its value? You’re not alone with this mindset; many have written off EJB long ago. My opinion is that you don’t know what you’re missing as ignorance is bliss.
“…referring to me as a spring-a-ling sets the wrong tone. A little humility…”
Let’s not pretend I’m bound to journalistic neutrality. This is all theatre. After all, you were annoyed enough to engage me in some meaningful discussions, so let’s call this a win for us both.
With that stuff out of the way, let’s get to the meatier issues.
“I personally don’t see the need for more than what Tomcat provides”
You might be missing out. Tomcat will handle the request/response model, which to me is all plumbing. It provides a mechanism to listen to users and give ‘em back something. What I love about full JEE is that you get equipped with the tools to write *business logic*, and a bunch of the technical nitty-gritty is done for you. Once you commit to a Tomcat-only design, it’s easy for concerns to get tangled, violating the principles of layered architecture that became popular a few years back. Now we look at fighting layerism in a different way – not by mixing all sorts of code together, but by providing a cohesive way for them to integrate. You’ll see fine examples of this within Seam and the upcoming Web Beans specification.
“Value add doesn’t mean rectifying 3 years later the complexity that shouldn’t have been there in the first place”
JBoss historically has been a vendor of standards-based technology. By nature, specifications are slower to evolve than the bleeding edge. To counter this, we’ve been offering (functional) preview releases of EJB3 for years, as well as innovative frameworks and libraries which stand aside from our Application Server. Additionally it’s the investment that JBoss makes into thought leadership within the JCP which speaks volumes of our dedication to the community to improve the nature of the standard.
“Which group am I more likely to continue working with, one that’s been right for over 3 years…”
I assume you mean Spring here.
Spring’s been right about a *lot* of things. I believe I give them full credit, cited with specific examples, above. And JBoss has also been correct by steering standards towards ways we believe enable the best development experience.
My qualms are not with any technical merits of the Spring Framework; I’m upset that the marketing theme continues to be knocking EJB with claims that are no longer true.
S,
ALR