- Overview
-
Table of Contents
- J2SE: Standard Java
- Java Windows NT Services
- Apache Velocity
- Advanced J2SE
- Bytecode Instrumentation
- Dynamic Languages and the JVM
- J2SE 1.5.0: "Tiger"
- Java SE 6
- Java 7
- Core Computer Science Principles in Java (Data Structures)
- Annotations
- Java Generics
- Java New I/O
- Java Sound
- Java Applets
- JavaFX
- Java SE Threading
- Resource Management Using Semaphores
- Java Atomic Operations
- JavaTemplate Pages
- Executing Templates with the JtpExecutor
- Java Cryptography Extensions (JCE)
- Java Database Connectivity (JDBC) API
- Jakarta Commons - Net Class Library
- Jakarta Commons HttpClient
- Apache POI
- Regular Expressions
- JavaMail
- Cool Tools
- Building an Really Simple Syndication (RSS) Java App
- Embedding JavaScript in Java with Rhino
- Logging with Log4J
- Inside Swing
- Swing Components
- SwingX
- Swing Styled Documents
- Web Rendering in Java Swing Applications
- Java Look-and-Feel Graphics Repository
- Java Media Framework
- Quicktime for Java
- Media in Java Review 2008
- External Multimedia in Java
- Graphs and Charts
- Holiday Special: Electronic Greeting Card
- Media Framework: Presenter Application
- Standard Widget Toolkit
- JFace
- Java Performance Tuning
- J2EE Performance Tuning
- Caches and Pools
- Java Caching System
- EHCache
- Java Compression and Decompression
- Obfuscating Java Applications
- Continuous Integration
- Load Testing
- Tomcat Clustering
- High Scalability with Terracotta
- Troubleshooting Production Performance Issues
- Enterprise Java Testing
- Automated Unit Testing with JUnit and Ant
- Unit Testing: Tips From The Trenches
- Custom Ant Tasks
- Extensible Markup Language (XML)
- Java Web Technologies
- Web Frameworks
- Struts 2
- Wicket
- JavaServer Faces
- Distributed Programming / RMI
- Behavior Tracking Servlet Filter
- Servlet Filters
- Building a Robust Java Server
- J2EE: Enterprise Java
- Spring
- Spring 3
- Java Design Patterns
- Model-Driven Architecture
- Enterprise Messaging with ActiveMQ
- Event-Driven Architecture
- XDoclet
- Hibernate
- Developing Standalone Database Applications with Hypersonic DB
- Project Backup
- J2EE Project: Hands-On
- Enterprise Java Beans (EJB) 3.0
- Disaster Recovery
- Java Management Extensions (JMX)
- Service-Oriented Architecture
- Web Services
- RESTful Web Services
- Web Services with Apache CXF
- Atom Syndication
- Project: Building a Web Photo Gallery
- J2ME: Micro Java
- Specialized J2ME
- Optional Packages
- Other Java Technologies
- Derivatives and Competitors
- Java, Engineered for Integration
-
Additional Resources
- The World of Java Tools
- Building Java Applications with Ant
- Managing Java Build Lifecycles with Maven
- Acceptance Testing with FitNesse
- Source Control with Subversion
- Inversion of Control and Dependency Injection
- Certification
- Roadmap: Becoming an Enterprise Java Developer
- Roadmap: Becoming an Enterprise Java Developer in 2007
- The Business of Enterprise Software
- JavaOne 2006
- JavaOne 2007
- JavaOne 2008 Wrap-Up
- JavaOne 2009 Wrap-Up
- JavaOne 2010
- JavaOne 2011
- How to Survive in a Turbulent Job Market
- How to Hire the Best Talent
- Unified Modeling Language (UML)
- Cloud Computing
- Amazon EC2 and Java
- MongoDB
- Enterprise Java in 2008 and Beyond
- Predictions for 2018
How to Survive in a Turbulent Job Market
Last updated Mar 14, 2003.
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. So while I typically spend my weekends writing articles that describe new Java technologies that can make you more effective at your job, this week I decided to survey the current job market and identify the most marketable Java technologies.
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.
I have categorized all of my results into eight tables: Core Technologies, Application Servers, Web Client Technologies, Web Frameworks, Persistence Technologies, Application Frameworks, Scalability and Caching Technologies, and other related technologies, all shown below.
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 |
Between Java and J2EE there are undoubtedly overlapping jobs, but from the numbers I think we are safe (and conservative) to say that our sample set contains at least 8000 jobs, which we'll base the relevance of the coming technologies against.
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%.
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 (see table 4.)
Table 3. Web Client Technologies
|
Keyword/Skill |
Hits |
|
AJAX (Java) |
1780 |
|
Google Web Toolkit |
23 + 54 (GWT) |
|
ICEfaces |
11 |
|
Echo |
9 |
|
JavaServer Faces (JSF) |
657 + 688 (JSF) |
|
Portal |
974 |
|
Portlet: Java |
126 |
|
Portlet: WebSphere |
99 |
|
Portlet: J2EE |
89 |
|
Portlet: BEA |
40 |
|
Portlet: JSP |
40 |
|
Portlet: Struts |
33 |
|
JSTL |
190 |
From the Dice search, AJAX technologies are dominating the Java web client market. The real question here is whether companies care about specific AJAX technologies or if they really understand what AJAX is. I sampled a few of the results and most simply stated "AJAX and JavaScript", not specifying a framework.
The results for JavaServer Faces (JSF) were strong with a conservative estimate that 10% of all Java jobs required JSF. Portals and Portlets made a good showing, but the framework of choice is split pretty well between the different vendors. And about 2% of jobs listed JSTL in their descriptions.
Table 4. 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.
Table 5. Persistence Technologies
|
Keyword/Skill |
Hits |
|
Hibernate |
1750 |
|
iBatis |
99 |
|
Toplink |
80 |
|
EJB3 |
37 |
It should come as no surprise to those that use it, Hibernate is the king of persistence with almost 22% of all Java jobs on Dice listing Hibernate in their descriptions — none of its competitors are even close. It is worth noting that core technologies listed 1271 jobs with EJB in their descriptions, which may include EJB3, but only 37 job descriptions explicitly listed EJB3.
Table 6. Application Frameworks
|
Keyword/Skill |
Hits |
|
Spring |
2138 |
|
Seam |
46 |
Prior to the release of Spring, enterprise applications either used homegrown application frameworks or embraced J2EE. And the vast majority of those companies that embraced J2EE only used Stateless Session Beans. EJB3 was supposed to simplify enterprise application development, but I am seeing more and more companies bypass EJB, and Java EE in general, in favor of Spring.
The most significant takeaway from this search is that over 25% of all Java jobs on Dice list Spring in their description. If you have been intimidated by Spring and have held off learning it, now is the time. If you have Spring experience on your resume, you are much more marketable than if you do not.
Table 7. Scalability and Caching Technologies
|
Keyword/Skill |
Hits |
|
Coherence |
47 |
|
GigaSpaces |
13 |
|
Terracotta |
4 |
At JavaOne 2006 I had the opportunity to interview three thought leaders in the Java industry: Tangosol's (now Oracle's) Cameron Purdy, GigaSpace's Nati Shalom, and Terracotta's Ari Zilka. Each of their companies improves the performance and scalability of enterprise applications in a different way: Coherence does it through caching, GigaSpaces does it through JavaSpaces, and Terracotta does it through JVM clustering. These are great technologies that I really believe that every enterprise Java developer should be familiar with. But with that said, if you want to be marketable in today's Java industry, your time is better spent learning one of the technologies in higher demand, such as Spring and Hibernate.
Table 8. Other Related Technologies
|
Keyword/Skill |
Hits |
|
Adobe Flex |
197 |
|
Groovy |
21 |
While these are not Java technologies, I thought it would be interesting to review the job market for Adobe Flex and Groovy. Flex provides an alternative to AJAX in the Rich Internet Application (RIA) space in which applications are built on top of the Flex framework and then deployed to Adobe's Flash Player. The benefits to using Flex are: (1) the user interfaces you build are far more responsive than AJAX applications, (2) user interfaces can be built to very closely resemble desktop applications, and (3) Flash Player has a far reach so you can build these rich applications knowing that most of your users will already have support for them. Flex has great potential to shape Web 2.0, but looking at the numbers, it is simply not in the same demand as AJAX or Web 1.0 technologies like Struts.
Finally, I am sure that you have read somewhere on the Web that Java is dead and will be replaced by Groovy. If that is true then they sure have a long way to go: over 8000 Java jobs compared to 21 Groovy jobs? It must be a slow death.
Conclusion
Java is alive and well in the job market. In this article I reviewed the results of my informal and unscientific research into the Java job market: I searched Dice with specific keywords and captured the number of search results they generated. As you want to increase your marketability in a turbulent market, the results are clear.
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 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.
Books and eBooks
Agile Java Development with Spring, Hibernate and Eclipse, by Anil Hemrajani. This is a book about robust technologies and effective methods which help bring simplicity back into the world of enterprise Java development. The three key technologies covered in this book, the Spring Framework, Hibernate and Eclipse, help reduce the complexity of enterprise Java development significantly. Furthermore, these technologies enable plain old Java objects (POJOs) to be deployed in light-weight containers versus heavy-handed remote objects that require heavy EJB containers.
Core JavaServer™ Faces, 2nd Edition, by David Geary, Cay S. Horstmann. JavaServer Faces (JSF) is quickly emerging as the leading solution for rapid user interface development in Java-based server-side applications. <em>Core JavaServer™ Faces</em> has been thoroughly updated in this second edition, covering the latest feature enhancements, the powerful Ajax development techniques, and open source innovations that make JSF even more valuable.
Google Web Toolkit Applications, by Ryan Dewsbury. Get the edge you need to deliver exceptional user experiences with Google™ Web Toolkit Applications, a guidebook that provides web developers with core information and instructions for creating rich web applications. Whether you're a developer who needs to build a high-performance front end for Java, PHP, or Ruby applications, or to integrate with external web services, this resource from expert Google Web Toolkit (GWT) developer Ryan Dewsbury delivers the in-depth coverage you'll need.
Core Servlets and JavaServer Pages, Volume 2: Advanced Technologies, 2nd Edition, by Marty Hall, Larry Brown, Yaakov Chaikin. Java EE is the technology of choice for e-commerce applications, interactive Web sites, and Web-enabled services. Servlet and JSP technology provides the link between Web clients and server-side applications on this platform. Core Servlets and JavaServer Pages, Volume 2: Advanced Technologies, Second Edition, is the definitive guide to the advanced features and capabilities provided by servlets and JSP. Volume 2 presents advanced capabilities like custom tag libraries, filters, declarative security, JSTL, and Struts. Like the first volume, it teaches state-of-the-art techniques and best practices illustrated with complete, working, fully documented programs.
JBoss® Seam: Simplicity and Power Beyond Java™ EE, by Michael Juntao Yuan, Thomas Heute. JBoss Seam integrates EJB 3.0 and JSF components under a unified framework that simplifies and accelerates Java EE web development. Now, JBoss Seam's project leader and technology evangelist take you inside this powerful new technology, showing exactly how to put it to work. Michael Yuan and Thomas Heute show how JBoss Seam enables you to create web applications that would have been difficult or impossible with previous Java frameworks. Through hands-on examples and a complete case study application, you'll learn how to leverage JBoss Seam's breakthrough state management capabilities; integrate business processes and rules; use AJAX with Seam; and deploy your application into production, one step at a time.
Moving Your Career Up the Value Chain: Building Specialized Development Skills in a Global Economy (Digital Short Cut), by Stephen B. Morris. In the workplace, you move up the value chain by acquiring and applying relevant new skills and knowledge and then using them to rapidly solve difficult problems. Moving Your Career Up the Value Chain teaches concrete methods of evaluating your current position and striking forward to make improvements. There are always areas in our lives where some improvement is warranted. Moving Your Career Up the Value Chain will help you find those areas and make the necessary improvements to propel your career to the next level.
