Angry Bill

tech talk radio

Archive for the 'spring' Category


EJB maintains its dominance

Posted by billburke on February 13, 2008

EJB was created almost 10 years ago to solve the component needs of application developers. Since then thousands of successful applications have been written and deployed using this technology. Although I don’t do much with EJB nowadays as I have other responsibilities at JBoss, I still wonder how it is doing in the industry. Recently, I became privy to various bits of knowledge that EJB is still going strong and maintaining its dominance in Java application development. Consider this job trends graph from indeed.com:

EJB job graph

Over 3 years EJB jobs have remained pretty much constant. This is very encouraging news considering recent Rod Johnson propaganda. EJB really did not have an alternative in the Java space until 2004/2005 when Spring started to be known and popular. It is very interesting to see that although EJB has had a serious competitor, it has maintained its dominance in Java application development over the years. You could even extrapolate from these numbers that EJB is an upper bound on the number of Java component jobs out there and that Spring has only recently matched this. This is proven by the fact that the Spring and Java graph trends are the same since they converged 6 months ago.

This trend pretty much correlates with download numbers I posted on our EJB implementation awhile back on TSS in June 2007.

I can give you a few from two perspectives:

downloads on sf.net for JBoss and Hibernate projects related to EJB3 and JPA:

* Downloads of a standalone distribution of the JBoss EJB3 project since 10/2004: 183199

* JEMS installer which bundles EJB 3.0 (not same as JBoss Appserver download): 201923

* JBoss 4.2 which bundles EJB 3.0: ~65000

* JBoss 5 betas which bundles EJB 3.0: ~80000

* Hibernate’s JPA implementation: 135269

* Hibernate Annotations (which is JPA based): 202561

So, total downloads solely related to JPA: ~337K
Total downloads solely related to EJB3: ~550K
Total EJB3 + JPA related downlaods: ~ 887K

Compare that to Spring 2.x downloads: ~600K
Spring 1.x downloads: 946K
Hibernate 3.x downloads: 1445K
Hibernate 2.x downloads: 495K

Now that’s just JBoss. You also have Glassfish, Open JPA, Oracle, and now Geronimo communities not included in these numbers.

Also, my EJB 3.0 book has been out a year and has sold ~12K copies +/- a thousand (haven’t gotten check yet from last quarter).

So, all and all I think there is pretty compelling evidence that EJB3 and JPA has momentum.

Its hard to continue any analysis on JBoss specific download numbers as we basically encourage our user base to download JBoss 4.2.x or 5 as it is bundled with our EJB3 implementation.

There’s some other encouraging numbers as well. In 2005 I was offered by O’Reilly to take over Richard Monson-Haefel’s EJB series.  “EJB 3.0, 5th Edition” was published in May, 2006. Even after being out for almost a year and half, sales are still going strong. Just last quarter we sold 1700 copies, very good for a technical book. When I went to Krakow in October, I also found that my book had been translated into Polish. I believe its also been published in Chinese. All indicators of broad adoption by the technology.

So, as you can see, even after almost 10 years, EJB is still going strong and maintaining its dominance. With the emergence of Seam and Web Beans being incorporated into EE 6, I predict this trend to continue.

Posted in ejb3, seam, spring | 18 Comments »

Standardize Spring in EE 6

Posted by billburke on September 3, 2007

Back in 2004 JBoss had a tough decision to make. Should we keep Hibernate proprietary and under our sole control? Or should we bring it to a standards body? You know the decision we made. I think Spring and Interface 21 are at a similar crossroads, whether they know it or not. I’d like to call on Interface 21 to bring core Spring IoC to EE 6. Here’s why its a win-win situation for everybody.

Better business for Interface 21

I personally think that the main reason I21 hasn’t thought about standardizing Spring is because they are worried it will hurt their business. We had the exact similar fear with Hibernate. What would happen if we standardized Hibernate and gave the opportunity to vendors like Oracle and BEA to enter the ORM space and threaten our growing strangle hold on ORM frameworks? The reality of the situation was that there was a shrinking, but still very large, set of users out there still using CMP. Many of these organizations were married to standards and wouldn’t go proprietary, even though Hibernate was open source. What ended up happening was that when we brought Hibernate to the EJB 3.0 and JPA specification, Hibernate was recognized immediately as a migration path to EE 5. Hibernate downloads skyrocketed along with Hibernate related business. I just know that Spring and Interface 21 would notice similar gains if they aligned with EE 6.

The Spring community will probably scoff at any suggestion that the EJB user base is still large enough to make any impact on things, but this is just not the case. Yes, Spring has a large community, but EE 5 stopped much of the bleeding and breathed new life into the EJB specification. I know this because I’ve been out there. There’s also these compelling facts about EJB 3 momentum that I posted on a TSS thread back in June.

Better for the Spring community

Let’s face it, Spring is not a kernel. It has no deployment model. It is dependent on bootstrapping itself through the WAR init process, manually, or by proprietary app server specific init classes. It has no classloader scoping, delegating it to the application server it is running in. The Spring guys know this is a weakness of theirs, which is why they are so keen to align themselves with OSGi. They desperately need a standardized kernel to build their own stack. If Spring was brought to EE 6, they would get this deployment model they so thirst for. Not only this, but it would be even easier, more consistent, and simpler to package and deploy Spring components within other application servers like what we do with the JBoss Spring Deployer. The Spring community would also get the benefit of mixing and matching Spring technology with EE component models.

Now, a bit more touchy non-technical subject is the idea that Spring is controlled by one vendor. Yes, its open source, but, IMO, JBoss history proves that a vendor can maintain tight control over its space even if there is defection and forking. Way back in the day, people also complained of the stranglehold Marc Fleury had on JBoss. The thing is, I thought our users were isolated from any real or imagined evil we might inflict on the open source Java community because we were standards base. This isn’t so with Spring. Spring is now VC funded which means its founders and investors are looking for an exit strategy and payday event. There were recent rumors of acquisition we heard as well before they announced this funding. Yes, this sounds a lot like FUD from me, but it is just the plain reality of the software business. Having Spring standardized would isolate the Spring community from the mess of any acquisition, IPO, founder exit, or going out of business fire sale. Any real or imagined mess ;)

Better for Java EE

Although EE 5 added some IoC capabilities, its still both verbose and incomplete. For instance, you cannot define graphs of pojos within XML and inject it into an EE components. This limits EE to having to solely work with primitives when doing configuration. Not very flexible. Beyond technical reasons, having Spring standardized would make EE 6 a compelling platform to migrate to just like annotations and Hibernate standardization made EE 5 exciting. Bringing the weight of the Spring community into EE would greatly strengthen and unify the Java enterprise space.

Unification

Before EE 5, you had division in the Java ORM world. You had the CMP crowd: big, but legacy. The JDO crowd: noisy, but irrelevant. And the Hibernate crowd: large, de facto, but proprietary. What JPA did was get everybody together and start showing a unified path and vision for the Java ORM space. I think Spring and EJB are in a very similar situation and we would get similar benefit of joining them.

So Rod, Bill Shannon this is good for everybody, so lets get it done.

Posted in spring | 22 Comments »

Participate or STFU Rod

Posted by billburke on July 6, 2007

I got a few people pissed at me for being a little rough with Rod Johnson on a TSS thread on how Rod feels that EE 6 is “Getting it right”. Here’s what I wrote:

So, since Java EE 6 “Gets it Right” does this mean you’re going to bring Spring to a standards body so that its not controlled by one vendor? Until then, who cares what you think. This talking standards out of one side of your mouth and pushing proprietary software outside the other becomes tiresome. Put your money where your mouth is or STFU.

I later added:
Bringing pure IoC into EE 6 and getting somebody like Rod and Interface 21 behind it and supporting it would be a huge step in lengthening the viability of the EE platform. But I don’t think Rod and company believe it is in their best business interest to do so. I hope they prove me wrong. We did it with Hibernate and now with Seam and we found that really embracing standards instead of giving them lip service is a great business enabler.

Some were skeptical that Interface 21 could even work together with JBoss in EE 6. Aligning EE 6 with pure IoC is definately where JBoss wants to go for EE 6, so I don’t think there would be a problem working together. I actually think JBoss and Interface 21 would make pretty good partners in pushing EE 6 in the right direction.

So what was the underlying cause of my original emotional outburst? Rod and company have built a framework and business around tearing down various pieces of EE and replacing it with their own stuff. JBoss has taken a different approach and engaged the JCP process to improve the specifications rather than fight against them. Until Rod and company actually implement a JSR (even one!) or integrate into the JCP process, their opinions on EE 6 direction really mean nothing to me and is just a bunch of posturing. Many of us on EE 6 already know where EE 6 is “Getting it Right” because we’re the ones who pushed a lot of the bullet points in Rod’s “Getting it Right” blah blah blah.

Finally, its easy to smell like shit when you’re knee deep in it. Easier to criticize and tout how much you can do it better when you’re not involved. This is why I wish Rod would STFU, join the JCP, and actually try and fix some of the broken things. If after he’s tried, and it doesn’t work out, then fine, I’ll STFU then. I’m sure with the popularity of the Spring framework, Bill Shannon and company would welcome Rod with open arms. Such a move would have the support of JBoss and I’m sure other vendors.

Posted in business, flame bait, opensource, spring | 14 Comments »