Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

Java Jobs: broken down by web framework

I updated my Web Framework Comparison presentation today. Rather than updating the graph that shows today's job availability, I did one that compares today to 6 months ago. Struts is still the clear winner (and growing). Spring is definitely growing. Tapestry has about the same amount of jobs (9 vs. 8). WebWork lost 10 opening (down to 4) and the demand for JSF skills has grown as well.

Is WebWork a dying framework? I've heard folks complain about its small community, and there still aren't any books is only one book about it. Is that a jab at Patrick, Jason and Kris - or a jab at Manning? I'm not sure. ;-) The good news is WebWork in Action and WebWork Live should both be out this summer.

Web Framework Jobs

My search criteria for all of these was "framework and java" from the front page on dice.com. I did filter a bunch out for WebWork b/c there's some product called "WebWorks" that folks want to hire for.

In my own experience, these numbers are not as accurate as you might think. Since I gave my original presentation, I've been contacted a number of times to work on projects. It's about even between Struts, Spring MVC, WebWork and JSF. I haven't had a single inquiry to do Tapestry development. The bad part about Struts jobs is there's so many of them, that rates are likely pretty low (i.e. 35-45/hour), whereas the others can get you upwards of 80-90/hour.

So what do these numbers mean? Do they mean you should tailor your learnings and skills to the most popular frameworks? In a sense, it's important to do so. If nothing else, Struts skills are import so you can migrate all the Struts applications to your favorite framework. However, I don't think these numbers are that important when choosing a framework to start your project with. I think the most important thing in choosing a framework is passion. Which one do you want to work with the most? It's likely that your productivity will be higher if you're enthusiastic about the framework, rather than bored with all the skills you've accumulated using it. Then again, if you're motivated by productivity more than enthusiasm - using your skills to crank out applications quickly is probably a good idea.

You might think that the number of skilled developers for framework X is important too. I don't think it is. I think the most important thing is to hire smart developers. A good developer can come up to speed on any framework in 2 weeks and be highly productive in 4 weeks. If not, the developer isn't that smart or the framework isn't that good. ;-)

Just for kicks, I did some searching for other web frameworks as well:

  • Rife: 0
  • Wicket: 0
  • Echo: 3
  • Ruby on Rails: 1
  • ASP .NET: 2876

Now the question is - what kind of rates are these skills getting? I'd like to know what the average Rails and ASP .NET developers make. In Denver, Java developers seem to make between 65-85/hour when they're experienced contractors.

Posted in Java at May 22 2005, 07:28:01 AM MDT 13 Comments
Comments:

Note that Webwork DOES have a book, from the authors: Open Source Java Programming. I have it on good authority that another book is on the way.

Posted by Joseph Ottinger on May 22, 2005 at 08:03 AM MDT #

Good point Joseph - I'll update the post.

Posted by Matt Raible on May 22, 2005 at 08:07 AM MDT #

It has been my experience in Denver that mid-level ASP.NET contractors are getting $35-45/hr.

Posted by Brian Burke on May 22, 2005 at 08:07 AM MDT #

Nice graphs, but in my opinion they don't mean *that* much.

We (company Topicus) hire programmers all of the time, for ourselves, and for our customers. We never ask for any specific framework, as we expect programmers to learn one within a few days if needed. The only thing we might ask is to have some experience with web development.

Furthermore, I think the reason for Struts being so high is that everybody, including managers, heard of it. But in my experience, a couple of minutes is enough to explain a customer why other frameworks might be more suiteable. In the end of the day, the customer is concerned about the result, right?

Maybe it is because the dutch market depends less on freelancers than the US market?

Posted by Eelco on May 22, 2005 at 09:10 AM MDT #

No request for tapestry work. Just this morning I heard Erick Hatcher speak at local NFJS and looking at the attendees, one would guess tapestry is gaining traction in the market.

Posted by Neeraj Kumar on May 22, 2005 at 02:52 PM MDT #

I guess the smart developers pursuade their employers/clients to go for one of the other frameworks so they can get the upwards of 80-90/hour. ;-)

Posted by Niall on May 22, 2005 at 03:55 PM MDT #

The best framework isn't the one with passion, or better rates, or the one you most recently learned, or the one that you think is sexiest, but the one that most closely matches the requirements.

Posted by scot on May 22, 2005 at 10:29 PM MDT #

Matt, my guess is that the popularity of the Spring web framework doesn't exist to the extent shown in your graph! I think the skills asked for with your search criteria "Spring and Java" is really just a request for Spring IoC skills, not the MVC part of the Spring framework. Mats

Posted by Mats Henricson on May 23, 2005 at 02:56 AM MDT #

I agree with Mats Henricson.
If you look in the project descriptions, for the most of them Spring is as IoC. You can filter them out by using Struts, cause a lot of them require Struts too, so it's clear that those projects doesn't require the SpringMVC.
Another interesting java framework(and tool/RAD) is <a ref="http://www.apple.com/webobjects/" target="_blank">WebObjects - (from Apple).
There are 20 projects with WebObjects, and this qualifies webobjects at least on place 3 :). A lot of banking applications still use webobjects, and the rates are pretty good (at least the projects I was working on). If one adds the high productivity with WebObjects - there's still no other IDE/Tool combination that offers such a high productivity - IMHO, it should be still considered in those charts :).

Posted by Ahmed Mohombe on May 23, 2005 at 04:21 AM MDT #

Where is the link to your "Web Framework Comparison presentation"?

Posted by Dan Q. on May 23, 2005 at 11:01 AM MDT #

Dan - you can download the October 2004 version from equinox.dev.java.net. I'll try to update this with the latest version in the next day or two.

Posted by Matt Raible on May 23, 2005 at 11:12 AM MDT #

I think, struts, is a good compromise (1) buzzword, which even PM knows about. (2) Acceptability in govt and commerical projects. (3) Less political battle to run, since you can claim "half the world" is using this, so there is very little risk. (4) Fair amount of documentation available. (5) Half brains like me, who dabble is everything from smart cards to web development, have a fair shot at it, and able to leverage it sufficiently well, to show the smarts to the powers that be. And, come on, I want to get paid fat salary, not necessarily be fighting framework wars. And it is easier to do that with struts, since it is universally accepted. Escoteric frameworks like springs etc, are to me, as good as ejb entity beans, sexy enuff to talk about, but then, you would be taking a big risk in trying to promote a "new" framework into organizations (and believe me that is a much harder sell). I think new buzzword frameworks like "spring" etc are more likely to get you lower dollars for actually more expensing of your brain cells, and it is more likely to happen in smaller shops, than in bigger shops. In big shops, it take people an year to move an inch, and smaller shops are always wanting to "sex" themselves up as true pioneers of a truly state of art and on the edge technologies. In nutshell, I think, struts and big company experience gets you the dollars into > $100 range and nothing else. I may be wrong, but this is how I look at the things.

Posted by Deepak Bajaj on May 25, 2005 at 08:50 AM MDT #

Struts is common to everyone because it was developed early and there is almost no choice to choose other framework early time. But technology has been developed. When I use ejb, I do not like it. And I expected a new technology coming out and I find spring. I still do not like struts, it so complex to solve simple problem such as crossing mutiple models and I find webwork. I like spring and webwork very much. But in my company, some old projects have been developed, it needs time to find a good technoloy,learn them, and adopt them into your projects. Just as I use spring in 2004, there almost no friends had used it. But you can not say it is not a good technology and will not be common to everyone. Spring become common is easy than webwork. Because it is difficult for one to change his techoloy without any regret

Posted by good technology is important on June 08, 2005 at 01:23 AM MDT #

Post a Comment:
  • HTML Syntax: Allowed