Steven Haines usually spends his time writing about new Java technologies that can help developers in their jobs, however, this week he has turned his attention to those technologies that can help you find that next job.
While the United States may not technically be in a recession, it is in at least a strong correction. The stock market is down, and has been since the beginning of 2008, and corporate acquisitions are on the rise. Already this year Oracle has acquired BEA, Sun has acquired MySQL, and as of this writing, Microsoft is attempting to acquire Yahoo. While many people will survive these acquisitions, some certainly will not. Regardless of the industry that you're in and regardless of how secure your job is, it is in your best interest to be aware of the technologies that companies are looking for in the eventuality that you need to find a new job.
It also needs to be pointed out that the information presented is not complete. In Steven's own words:
Before I begin, here is my disclaimer: my research was not scientific, I did not survey all available jobs, and I did not contact any recruiters to find out what technologies are most in demand. Instead I reviewed Dice and Monster for keywords and recorded the number of hits that I found. Most of my results came from Dice because I did not find the search interface at Monster as revealing as Dice (Dice was nice enough to include a "skill" parameter that helped categorize the results.) But with the 8000+ Java jobs that I found on Dice, I would argue that my results are representative of the current Java market. And, depending on where you live, your results may vary.
Additionally, the article doesn't report any trends, but rather a snapshot of the current job technologies.
The results we'll review are from: core technologies, application servers, web frameworks, and persistence technologies. There are several other categories listed in the original article, which are more specialized in nature.
Table 1. Core Technologies
Keyword/Skill |
Hits |
J2EE |
7520 |
Java |
6389 |
JSP |
2228 |
Java/J2EE |
1733 |
EJB |
1271 |
JDBC |
1079 |
JMS |
926 |
Servlet |
409 |
J2ME |
146 |
The first category, core technologies, provides only an overview of the current landscape. It's very likely that many of the keywords/skills (especially Java/J2EE) would be listed in most positions. The author confirms this, and points out the the following:
If you're looking at broad categories of Java programming, enterprise Java and Web technologies hold the most jobs. JMS was a listed in 10-15% of the job descriptions and J2ME only accounted for about 2% of the jobs.
Table 2. Application Servers
Keyword/Skill |
Hits |
WebSphere |
2155 |
WebLogic |
1561 + 624 (BEA) |
Tomcat |
1587 |
JBoss |
882 |
Jetty |
22 |
Glassfish |
17 |
The application server job market is not very surprising considering that the market share breaks down similarly. WebSphere is in the lead with over 25%, followed closely by WebLogic with a little less than 25% (accounting for duplicate jobs between the search terms "WebLogic" and "BEA"), and then Tomcat with 20%, and JBoss with 11%.
With the increased popularity of Spring over the last few years, this result was a little surprising to me. To get a better insight to the tends, I headed over to http://www.indeed.com and graphed the top four application servers. This leads me to the conclusion that, even though WebSphere and WebLogic are in the lead now their popularity is decreasing. At the same time, the popularity of Tomcat and JBoss is increasing, and learning these application servers may result in more opportunities in the future.
websphere, weblogic, tomcat, jboss Job Trends | websphere jobs - weblogic jobs - tomcat jobs - jboss jobs |
The author also noted an increase in Tomcat:
Probably the most interesting thing to me is that almost 20% of the Java jobs on Dice included Tomcat in their descriptions. This may reveal that many companies are bypassing the Java EE stack in favor of either a standard web technology (Servlets/JSP/JSF) or an alternate framework like Spring
To confirm his observation and the trends in EJB capable application servers vs. servlet containers, I next graphed the trends for EJB vs. Spring. As most developers would have expected, Spring use is still increasing.
Table 3. Web Frameworks
Keyword/Skill |
Hits |
Struts |
1745 |
Spring MVC |
290 |
Velocity (and Java) |
133 |
Tapestry |
85 |
WebWork |
31 |
Grails (Groovy) |
18 |
Wicket |
14 |
Stripes (+ J2EE) |
8 |
Cocoon |
3 |
Turbine (and Java) |
0 |
RIFE |
0 |
The topic of the best Web frameworks is probably the most heavily debated topic in the Java community: it is like talking about politics or religion. But the numbers do not lie: as much as you read that Struts is dead, it is not. Almost 22% of all Java jobs on Dice list Struts in their descriptions, which is six times its closest competitor. If you are a Java web developer and you want the highest degree of marketability, you’d better know Struts, even if there are other technologies that are superior or have a more elegant solution to your problem.
The argument the author makes is valid, however, with the release of Struts2 there is the question of whether companies will decide to migrate to version 2 of Struts, or whether they will decide that the time has come to move to a different Java Web framework or another web framework entirely. Either way, the need for Struts developers will not decrease quickly, due to the number of applications already written using the framework.
Reviewing the trends from Indeed (Struts was not included), presents a slightly different view from the authors table. There is growth in the usage of all the frameworks, with Spring MVC showing the most improvement over time.
spring mvc, tapestry, grails, wicket, stripes, velocity Job Trends | spring mvc jobs - tapestry jobs - grails jobs - wicket jobs - stripes jobs - velocity jobs |
Table 4. Persistence Technologies
Keyword/Skill |
Hits |
Hibernate |
1750 |
iBatis |
99 |
Toplink |
80 |
EJB3 |
37 |
It's no surprise here that Hibernate has a strong lead for persistence technologies. Graphing the trends (all except Hibernate, and using JPA instead of EJB3) did lead to some surprising results. Not only is JPA starting to complete against Hibernate (although Hibernate does implement the JPA specification, so this could be overlap), but there is a steady increase in iBatis use.
Conclusion
In conclusion, the author makes some very good points:
When you develop your enterprise applications, you should become familiar with how to deploy and manage them in WebSphere, WebLogic, JBoss, and Tomcat. You can download all of these application servers at no cost (the commercial products have development licenses so that you can use them for your learning.) Do not assume because you can write enterprise applications that all application servers are the same. You do not want to claim that you are familiar with an application server that you are not and then struggle through it on the job. Take the time to learn it now.
as well as:
As far as technologies, your time is best spent learning Struts, Spring, Hibernate, an AJAX framework, and JavaServer Faces. It is not trivial to learn each of these technologies, but develop a schedule, pick out a few good books, and build a sample application in each. In short, if you can add each of these technologies to your resume, you should have no problem finding a job.