Rick has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

JSF passes Swing as the number one Java GUI component model for job demand

01.28.2008
| 15767 views |
  • submit to reddit

Kito suggested I change the search from JSF and java to (jsf or "JavaServer Faces" or "Java Server Faces") and java.Kito suggested I change the search from JSF and java to (jsf or "JavaServer Faces" or "Java Server Faces") and java.JSF passed Swing as the number one GUI component model for Java.

JSF did well in 2007. Let's put it this way: If job demand for the Struts framework and JSF were a stocks and you invested in it in April of 2005 by July of 2007 you would barely break even with Struts but with JSF your investment would have grown 700% as of July 2007. (According to indeed.com.)

Note: Struts continues to do really well; it is still number 1. Yet after Struts, JSF is doing well and Struts growth is as flat as EJBs.

JSF does really well against all other competitors as shown in this graph:

 

 

 

 

 

 

 

 

 

 

Struts growth is as flat as EJBs as follows:

JSF vs. Struts growthJSF vs. Struts growth

 

 

 

 

 

 

 

 

 

 

As I have said before, Struts is a case study in how you run a successful Open Source project. For a lot of companies, Struts was their first open source project that they used so it has opened a lot of doors. Struts open the door for Hibernate and Spring. The number one download on TheServerSide in 2007 (and probably 2005, 2006) is a book I wrote on Struts so I get it (The book was written in 2004), people still use Struts.

The problem with indeed.com is since there still is not as many folks with JSF skills or Spring MVC skills, Struts is even listed as a skill if a company is looking for JSF developers or Spring MVC developers since having it as a skill is a sign of experience.

Also, there is no reliable way to differentiate between Struts 1.x and Struts 2.0 since many job requests don't list version numbers. Similarly, many people who are using Spring just assume Spring MVC as well so they don't list it. Thus, it is hard to really measure Struts 2 and Spring MVC.

(Note: I use both JSF and Spring MVC regularly.)

As indeed.com goes, JSF growth was fairly slow until January 06. Then is started to take off and grew very quickly. Demand doubled in less the a year and then double the next year as well. Why? I am not exactly sure. My guess would be the AJAX component frameworks for JSF (like Ajax4JSF, Avatar, IceFaces, etc.), composition components via Facelets (and perhaps Clay), Seam, improvements in JSF 1.1 and JSF 1.2, and folks coming up with workarounds for JSF problems, etc. There seems to be a lot of interests in JSF in the Java community and growing job demand to match.

JSF 2, which is forming, incorporates Facelets concepts, adds native Ajax support (similar to Ajax4JSF) and makes JSF component development easier. JSF 2 should further enhance ones investment in JSF. The new model has partial page rendering via Ajax, which is available today from tools like Ajax4JSF.

With the above said, JSF is still plagued with issues (some technical, some community) and is far from perfect (which I will blog/post about this year).

I am not tied to JSF. When I wrote Crank (a Java CRUD framework), I made sure it was not tied to JSF so I could switch to Struts 2, Spring MVC or Wicket if I needed to (or more likely was paid to do).

Also JSF faces a real battle against RIA frameworks. Flex + Java is gaining a lot of ground. GWT is showing strong growth as well. In the end, Flex + Java could damage JSF growth. If 2008 is the year of RIA, then where is JSF? Will JSF 2.0 be enough?

A lot of JSF future depends on how strong (and soon) JSF 2.0 is going to be.

Here is a recent tutorial I wrote showing how to use JSF as a GUI component model instead of a replacement for Struts:

JSF Tutorial Update for JSF 1.2
Published at DZone with permission of its author, Rick Hightower.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Jeroen Wenting replied on Mon, 2008/01/28 - 7:02am

As they say: there are lies, there are damned lies, and then there's statistics.

 Growth from 1 to 2 is 100%, growth from 100.000 to 101.000 is "only" 1% yet in real terms more interesting.

Rick Ross replied on Mon, 2008/01/28 - 7:04am

I'm going to go out on a limb here and suggest that I have doubts about the "number of jobs" equals "market leadership" relationship that seems to be the underpinning of this post and many others we have all seen over the years. Couldn't it be the case that Swing is still stronger, but employers are not having as hard a time locating Swing talent, so they aren't needing to place job ads? Maybe the employers have invested in cultivating Swing skills in their existing teams through training programs, so they have the staff to meet their needs?

JSF is powerful and has major corporate backing, but I really doubt that it has surpassed Swing as the top GUI component model for Java. I just haven't seen enough other evidence to support that strong a conclusion. "More JSF jobs offered on indeed.com than Swing jobs" doesn't convince me that JSF has surpassed Swing.

What do others think?

Rick Hightower replied on Mon, 2008/01/28 - 11:39am in response to: Rick Ross

You are of course right Rick. I am going to change the title to reflect reality.

 

rick hightowercto of arcMindbloglinkedin

Rick Hightower replied on Mon, 2008/01/28 - 11:44am in response to: Jeroen Wenting

This is true. The charts are clearly labeled are they not? The first two graphs are absolute, the last one is relative.

The first one show JSF job demand catching up to Swing job demand.

The second shows JSF does well against everything but Struts.

The third shows that Struts growth is flat.

I mentioned that Struts was number 1, and explained how there might be problems with the data which may show Struts 2 and Spring MVC lower than they actually are.

I think the coverage is somewhat balanced.

rick hightowercto of arcMindbloglinkedin

JeffS replied on Mon, 2008/01/28 - 3:17pm

This is a silly comparison.

Swing is a GUI API for desktop Java.

JSF is a server side web framework, built on Servlets and JSP.

Swing should be compared to SWT, QT-Jambi, Java-Gnome, etc.

JSF should be compared to Struts, Tapestry, Wicket, etc.

One is desktop, the other is server side web. They do, however, share similar compenent and event models.

Rick Hightower replied on Tue, 2008/01/29 - 1:06am

Kito suggested I change the search from JSF and java to (jsf or "JavaServer Faces" or "Java Server Faces") and java.

When I do that, it shows that JSF passed Swing in April of last years as the GUI component model with the most demand. Looks like its been neck and neck since then.

JSF passes SwingJSF passes Swing

 

 

 

 

 

 

 

 

 

 

 

rick hightowercto of arcMindbloglinkedin

Rick Hightower replied on Tue, 2008/01/29 - 1:34am in response to: JeffS

RE: This is a silly comparison

Yes in a sense JSF and Swing are apples and oranges as one is for the rich clients and one is for webapps. Yet the GUI component model (composite design pattern, events) is similar.

RE: JSF is a server side web framework, built on Servlets and JSP 

JSF is not built on Servlets and JSP. JSF is seperate from Servlets and JSP. There are integration pieces that ship with JSF that allow it to operate with Servlets and JSP. The JSF taglibs bolt JSF to JSP in a most uncomfortable fasion. JSF is much better without JSP. I would say that JSF was built with web applications in mind, but it is not inherently tied to Servlets (works with Portlets) or JSP (works better with Facelets).

The JSF component model has nothing to do with JSP. You can replace JSPs with Facelets and be better for it in the end.

The real idea was not to compare JSF to Swing, but to show that Swing is an established technology and now so is JSF based on job demand.

JSF is more similar to AWT or Swing than Struts, or Spring MVC.

I agree that JSF is best compared to Wicket, Echo and Tapestry, and its job demand eclipse those rather easily. Although many feel Wicket is gaining some steam.

Do you think Wicket will give JSF a run for the money in market share? I've heard a lot of folks say some pretty nice things about Wicket.

rick hightowercto of arcMindbloglinkedin

JeffS replied on Tue, 2008/01/29 - 1:50pm

 "JSF is not built on Servlets and JSP. JSF is seperate from Servlets and JSP. There are integration pieces that ship with JSF that allow it to operate with Servlets and JSP. The JSF taglibs bolt JSF to JSP in a most uncomfortable fasion. JSF is much better without JSP. I would say that JSF was built with web applications in mind, but it is not inherently tied to Servlets (works with Portlets) or JSP (works better with Facelets)."

 Forgive my technical ignorance, but doesn't JSF have to be deployed in a Servlet container?  Or am I wrong in that?  That's essentially what I meant.  And lopping JSP in there was based on the fact that a JSP is compiled to a servlet.

 If JSF can be deployed outside of a Servlet container, I'd think it would be pretty cool (not that I have any problem with Servlets).

 

"The real idea was not to compare JSF to Swing, but to show that Swing is an established technology and now so is JSF based on job demand."

 I would expect JSF to have more job demand than Swing, regardless, simply because it is server side, and the server side is where most of the job action is in Java.  Thankfully, though, Swing has improved enough that people are using it more and more and there actually is a job market for it.

 

"Do you think Wicket will give JSF a run for the money in market share? I've heard a lot of folks say some pretty nice things about Wicket."

 

A guy is doing a presentation on Wicket in an upcoming meeting at the local JUG.  This guy has been singing Wicket's praises a lot, and from what I've seen it looks like Wicket has a very clean architecture, with a fairly easy learning curve, and great separation of presentation from app logic (plain HTML with java classes behind the scenes).

 But I don't see Wicket gaining a huge amount of market share very quickly.  JSF seems to have all the momentum - it's a standard, has great tools, has multiple open source and proprietary implementations, has lot's of documentation, and has lot's of momentum.  It's far from perfect, but it's looking strong.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.