Spring Overtakes EJB as a Skills Requirement |
|

Job listings are a good indicator of the true adoption of technologies. They indicate whether or not companies are spending money, making it possible to distinguish substance from hype; they indicate the importance for developers of gaining and growing the relevant skills (an important element of technology perpetuation); and they provide a good guide to the safety for companies in adopting a particular technology.
Thus the jobtrends site of Indeed.com, a job listing aggregation site, is an important resource. It allows trends in the number of job requirements to be tracked over time, and makes it convenient to compare technologies.
Sometimes these trends can have dramatic implications. Indeed.com shows that in November, 2007, Spring overtook EJB as a skills requirement for Java job listings. As of yesterday, the respective job numbers were 5710 for Spring against 5030 for EJB.
Comparing absolute job numbers, we can see the trend lines and where they cross over:

Given the immense amount of legacy EJB, this is amazing. Presumably, few new projects now use EJB.
The "relative" graph, comparing the respective rates of growth, is even more interesting, showing a stark contrast between the two technologies:

We see that EJB requirements are stagnant or in decline, while Spring requirements are growing at an ever increasing rate.
Of course, Spring and EJB are not mutually exclusive. Using Spring does not prevent you from using EJB, or vice versa. There are cases where EJB provides useful services you might want in an application using Spring. Using any version of EJB without Spring would be to forgo numerous valuable additional capabilities. Indeed, it's largely been the pro-EJB lobby who have (for whatever reason) presented the two technologies as direct competitors.
The overlap between the two technologies is significant and growing, but not at the rate at which Spring requirements are growing:

While it's not an apples-to-apples comparison, it is reasonable to consider Spring and EJB as alternatives for the core component model in enterprise Java applications. And it's clear which is now in the ascendancy.
I must admit to a certain degree of personal satisfaction, given that I've been predicting that EJB would become legacy since early 2003, and arguing that EJB was way overused before that. In J2EE without EJB, I laid out a detailed analysis of the deficiencies of the EJB model and how it failed ot meet its stated goals or the needs of developers and customers. Back then, such statements were highly controversial.
EJB 3.0 improves things somewhat, but it's still too little, too late: the DI capability is less than has proven to be needed for the real world; the interception API recognizes the need for a solution to cross-cutting concerns, but provides the least capable, clunkiest and most error-prone solution yet seen (something I've been meaning to blog on for a while); it's saddled with the baggage of backward compatibility with now irrelevant previous generation technologies; the full EJB contract (which is hundreds of pages longer than the "simplified programming model") dictates a complex runtime with excessive overhead; despite its syntax sugar, it fails to address a number of deficiencies in EJB such as startup actions, singletons and the obsolete threading model. Finally, it's effectively tied to an app server environment, at a time of changing infrastructure.
I could go on and on about these deficiencies, but the job numbers speak of the practical experiences and conclusions of thousands of companies.
Note that I'm talking about session and message beans here; JPA is a separate specification now, is based on modern technology, and is proving its value.
What does the decline of EJB mean to the industry as a whole, and for individual developers?
- The fact that there are plenty of good technical reasons for the decline of EJB is heartening. It's one of many signs that it's harder today to impose solutions that have never been proven in practice than it was when J2EE emerged. This is a Good Thing.
- It's not necessarily a rejection of standards–just a healthy rejection of standards that don't deliver results. As I've long argued, Java EE is more than EJB, and anyone who cares about the platform as a whole should be honest about the relevance and quality of the parts.
- With better technology, business objects become POJOs, dependence on specific component models diminishes and labels become less important.
- Moving away from EJB provides greater architectural flexibility, at a time when requirements are changing, through the rise of SOA and other forces, and companies are increasingly choosing lighter-weight deployment platforms. Although support for various parts of the EJB 3.0 model is available outside a full-blown application server (including in Spring 2.5, which offers the EJB 3.0 DI model in addition to its own, and in Pitchfork, which is used as the basis of WebLogic 10's EJB 3.0 implementation), EJB is a component model fundamentally predicated on deployment to a traditional application server.
Frankly, the EJB era was an aberration. EJB failed to solve the problems of earlier this decade; it's still more inadequate to those of the future. Most of EJB's initial premises are now discredited; the specification's insistence on backward compatibility does not justify the tradeoffs it imposes. Its decline is a natural consequence of moving into a new, more fluid, world, where technologies such as OSGi and the humble Servlet API are proving much more relevant. Of course, as the absolute numbers are still very high, EJB is not going to go away completely any time soon. But the trend lines clearly suggest that it is becoming legacy.
It's timely that this milestone in job requirements occurred just before we announced the SpringSource Spring Certification program. Now that Spring is such an important skill in the market, it's important to both employers and developers that there is a definitive measure for Spring knowledge.
Further proof of Spring's momentum was recently given by statistics on leading industry web sites for 2007. On ServerSide, 2 of the top 5 articles were about Spring, including the top article. On InfoQ, 3 of the top 10 were about Spring, with the top article (my Spring 2.0 Update) getting 4x the page views of the next most popular.
Similar Posts
- More Weapons for the War on Complexity: SpringSource Acquires Groovy/Grails Leader
- The Biggest Loser's Next Contestant: Java Bloatware
- SpringSource Plus Hyperic Unifies Application Lifecycle From Developer to Data Center
- Addressing a Big New Audience: VMware Acquires WaveMaker
- Spring Remains at the Forefront of Enterprise Java: BigData, NoSQL, and Cloud Portability





Jan says:
Added on January 23rd, 2008 at 7:33 pmIMHO your underestimating the impact EJB 3.0 (and its successor in JEE 6) are going to have on this. Clearly Spring (and Hibernate and the like) has (have) done a lot with respect to 'showing' the path – and surely Spring is here to stay. As a whole though the Java (5 ) languages and JEE (5 ) platform are a clear and right path for the future.
Lars Tackmann says:
Added on January 24th, 2008 at 3:12 amGreat analysis of the current relevancy of Spring and trends in the Java world. You do however underestimate the impact of Google Guice, Apache WICKET and JBoss SEAM.
These technologies offers a easy path in to RAILS like development, IoC and state full web applications that is considerably easier than Spring but still powerful enough to build real systems. It will be exciting to see what Spring will do to leverage the same features.
Currently EJB3 suffers heavily from the bad reputation of its predecessors, this will change over time and the game will be back on. Which is great since it will help push Java technology to its limits and easen application development.
Anyway congratulations up to the Spring team to accomplishing this (and putting EJB 2.X style programming to its grave).
Yuval Goldstein says:
Added on January 24th, 2008 at 5:39 amCheers!
.
This is a positive surprise (ok, perhaps Mr. Johnson is not that surprised
Perhaps another (yet not very empiric) indication to the 'everyone does Spring' trend are a few presentations given at QCon
by LinkedIn and Yahoo Communities (see http://qcon.infoq.com/sanfrancisco/tracks/show_track.jsp?trackOID=70).
They both show that they are using Spring.
It's encouraging seeing large, known applications using Spring.
It also shows that not all hot 'web 2.0' sites run solely on PHP.
Yuval Goldstein.
Ollie says:
Added on January 24th, 2008 at 7:27 amNice summary
– of course to be read with the right glasses. I'm looking forward to your influence on the next JavaEE Spec. Perhaps you could give away some private details on that topic in one of your upcoming blogs?
Regards,
Ollie
spring fan says:
Added on January 24th, 2008 at 8:30 am[quote post="267"]Currently EJB3 suffers heavily from the bad reputation of its predecessors, this will change over time and the game will be back on. Which is great since it will help push Java technology to its limits and easen application development. [/quote]
Nah, EJB 3.0 still sucks in many ways. But EJB 3.1 & the new WebBeans & JSF 2.0 & JEE 6 or is it going to be 7 will be a lot better, keep waiting and hoping that JCP/JSR based technology are worth waiting for.
Nati Shalom says:
Added on January 24th, 2008 at 9:49 amI know that many of us don't think that highly of Gartner predicts but i thought that sharing it would be another interesting evident:
“By 2009, at least 75% of Java-based platform and integration middleware products will provide embedded support for the Spring Framework, which is an increase from fewer than 20% in 2007.“
Predicts 2008: The Platform and Integration Middleware
Market Is Changing and Growing
by – Massimo Pezzini, Kimihiko Iijima, Paolo Malinverno, Yefim V. Natis
Nati S.
GigaSpaces Write Once Scale Anywhere
Tristan says:
Added on January 24th, 2008 at 1:31 pmAm I the only one that thinks Spring is growing at a constant rate? im pretty sure the derivative of that function will show the function is linear….
Artur Karazniewicz says:
Added on January 26th, 2008 at 3:08 amThis is actually reality already. Not only in OpenSource solutions, but also in top notch commercial software like Tibco BusinessWorks.
Yuval Goldstein says:
Added on January 26th, 2008 at 2:12 pm“By 2009, at least 75% of Java-based platform and integration middleware products will provide embedded support for the Spring Framework, which is an increase from fewer than 20% in 2007.“
The funny thing is that most platforms already support embedded support, they don't really need to do anything because Spring is rather pluggable.
Sergei says:
Added on January 28th, 2008 at 7:09 am, pure marketing
Rod Johnson (blog author) says:
Added on January 28th, 2008 at 3:51 pmYeah, I made up the job stats
Yusuf S. says:
Added on January 29th, 2008 at 2:05 am[quote comment="93894"], pure marketing[/quote]
lol..
kudos to Rod and the Spring Team.
let me say that spring is also gaining popularity here in my country (Indonesia), and it was the right choice to pick spring as my specialty when i entered the world of java ^^
Ray Van Eperen says:
Added on January 29th, 2008 at 3:14 pmAs pointed out by Lars and "spring fan", there is an obvious omission of technologies such as Seam, that combined with EJB 3.0 addresses many of the historic weaknesses of the EJB model as well as provides many of the same advantages as Spring (use of POJOs, IOC, etc.), and in my humble opinion, does it better than Spring (for instance almost purely annotation-based rather than XML). I'm not knocking Spring, I'm just saying that EJB3 combined with Seam and other technologies such as JSF provide a very viable alternative.
Add to this EJB 3.1, Web Beans, and JSF 2.0, and I'm thinking EJB will be around for quite some time – as well as the need for the associated skill sets.
Etienne says:
Added on January 29th, 2008 at 3:16 pmSpring Framework is great. EJB is great. Misuse of and misinformation about great technologies are bad, giving technologies bad reputation and forging negative popularity. Everything can be controlled with words — after all, the Sony's Beta disapeared, the Motorola's 680×0 disapeared, Microsoft Windows took over the PC's world…
I love Spring. I love EJB. I wonder what was the goal of this blog entry?
Martin says:
Added on January 30th, 2008 at 2:40 amA couple of other searches to try
java and (ejb or ejbs) – returns 6764 jobs
java and (ejb or ejbs or ejb3) – returns 6860 jobs
j2ee and (ejb or ejbs) – returns 5650 jobs
j2ee and spring – returns 4416 jobs
This is against the same queries as previous which now report-
java and spring returns 6477 jobs
java and ejb – returns 5,769 jobs
All as of 11.30pm Jan 28th PST from http://www.indeed.com/
The trend for spring is obvious upwards, it is also for ejb3, but obviously using 'keywords' from HR entered job descriptions is not exactly accurate. Has it surpassed 'EJB' – maybe – it depends on how the HR rep spelt 'EJB' in the job offer. The 'nice' point to notice tho is that both numbers are larger now than they were against the numbers Rod reported.
In the meantime I would concentrate on the 84,056 jobs out there for java engineers, or even just the 30,315 jobs for j2ee engineers.
Mark says:
Added on January 30th, 2008 at 5:07 pmAs someone who regularly advises on the skillsets demanded when looking to recruit candidates I would definately be including Spring in the list of skills. Does that mean I actually use Spring – definately not, it is quickly becoming bloatware and is slowly polluting java with the equivalent of the DLL hell which plagued Windows before .NET.
What this also fails to capture is the respective salaries. Junior developers would be expected to know Spring, whereas senior developers would be expected to have knowledge of EJBs.
Who's going to get the big bucks? My moneys on the EJB! (with a little accumulator on SEAM, grails and ruby).
Razie says:
Added on January 31st, 2008 at 12:41 amI see EJB constant in the graphs and the original post off the mark…it would be informative to have interest in struts plotted here as well, being replaced by spring, i assume.
We, employers need backend and web so it doesn't seem to to me strange that requirements for spring increased with its adoption, replacing older web frameworks.
Here's the cold shower, though…while EJB remains steady, its features not easily replaceable (transactions, messaging etc) – spring is growing old, what with Wickets and all…
I will always prefer the inverviewee
whose belt is heavy with several tools rather than one that squeaks only "ejb, ejb" or "spring, spring" or whatever's cool that day.
Cheers,
Razie
invictus says:
Added on February 17th, 2008 at 7:53 amI searched EJB vs Spring on most popular Austrlian Job site and here are the results
EJB = 214
Spring = 658
Java EJB = 207
Java Spring = 580
Well this is no joke and Spring is really doing well.
Sean NGuyen says:
Added on February 26th, 2008 at 10:58 pmHi,
The number of Spring job vs EJB job is quite impressive. But anybody has any bench mark number? Aple to apple comparision might have something to say too.
Thanks,
Pedro says:
Added on March 1st, 2008 at 11:36 amWhen you start to make comparisons and manipulate graphics to make a point (i.e. when you place the growth rate in comparison, you can also place a graphic of a new soda that sold 1 can last year and this year sold 2 (your mom and dad) and still get an impressive growth of 100% over the ridiculous 17% growth of coke), you are clearly trying to become like your oponent. EJB people does not need to do that, EJB 3.0 avoids all problems of previous versions (a.k.a evolution) and will be there long after the spring changeover to summer.
Rod Johnson (blog author) says:
Added on March 1st, 2008 at 11:53 amPedro
There is no manipulation. As for your implication that the growth is from a low base, maybe you should actually read my post. For example, where I mention that "As of yesterday, the respective job numbers were 5710 for Spring against 5030 for EJB." Hardly the new soda that sold 1 can last year
As for EJB 3.0 "avoiding all problems of previous versions," if you wish to make this argument please provide some supporting detail. You should at least reply to the points I made in the blog.
Rgds
Rod
Pedro says:
Added on March 2nd, 2008 at 1:05 pmYou are right, I have not much time to argue on this, and to place the fairly asked arguments, but I promess I will post it as soon as I finish the job of refactoring an application that uses SpringBeans to access EJB 3.0 on JBoss 4. I swear is a real life case.
Best Regards
Rod Johnson (blog author) says:
Added on March 2nd, 2008 at 1:22 pmWell, it's best to make categorical assertions (especially when accusing others of "manipulation") when you have time to back them up.
Anyway, I look forward to hearing your arguments. Remember to leave a trackback or post them here and I'll happily dispute them.
Deep says:
Added on August 3rd, 2008 at 1:42 amObviously, there will be less number of posting for 'Rocket engine expert' than the 'Car engine expert'. As a learner, I prefer to learn challenging things. Just think that you are about to hire a person out of two: one with Java EE domain and another from Spring – What will be you choice ? of course, Java EE!!
Getting more users choice does not mean it is the best animal in this world. Most of the folks in this world are naive developers, who do not really know what enterprise services are. They just peak what they feel easy. Experts always have their choice – they always know what best suits for them.
sj says:
Added on August 4th, 2008 at 8:41 pmIf you are an agile shop then you would hire a person with spring experience. If your core developers consist of people who have not heard of log4j then you would hire people with Java EE experience only.
You can scale spring application more easily than EJB application.