Imagine a bacon-wrapped Ferrari. Still not better than our free technical reports.
See all our reports

Java EE Productivity Report 2011

Check out the 2012 Report: Developer Productivity: Java Tools, Tech, Devs & Data


What happens when over 1000 Java developers compare their development environments?

Want to read it later? Download the PDF here!

***

Update: In October of 2011, we released a comparison between this report (which contained global numbers) and >1000 responses we received from development teams in India. Check out the India vs Rest of World 2011 Productivity Report here.

Last year, we published a report on turnaround time, tools and application containers in the Java ecosystem. Over 1300 Java developers ended up sharing info about their development environment, and over 40,000 people found these results helpful.

This year we expanded on that, asking more and better questions to give you better and more accurate information. The survey itself provided data from over 1000+ Java EE developers and those responses were analyzed to create this report. We set out to discover:

We asked the people we met at JavaOne 2010, emailed previous survey respondents and promoted the survey in the media. They were sent an email with the link to the survey and told they would be notified again once the results were made available. Participants were offered a chance to win free JRebel licenses and one recipient will receive an iPad once the final results are published.

A total of 1027 responses were analyzed to create this report. Of these, 28% are JRebel users – they were requested to provide data from before they were purchasers. The raw data including all calculations is available for automatic download.

Build Tools and IDEs – Setting the scene


Which is more popular, Ant or Maven?

We asked everyone to mark the tools they use for building their application:



As you can, see Maven and Ant are used almost equally and some of the respondents use both. Clearly both of them are useful in some way. Tools like Gradle, Ivy and SBT were mentioned, but none of them gathered even 5 votes.

Which Java IDE is the most popular?

The IDE results shows a much wider distribution of preferences:

In terms of user base, Eclipse has emerged here as the clear leader, with only one-third of respondents using IntelliJ IDEA (#2) and Netbeans (#3). Perhaps including MyEclipse separately and not doing the same for other Eclipse distributions like RAD was not the best idea, that’s something we’ll do better next year. It is interesting that according to this chart Oracle’s (ex-)flagship IDE, JDeveloper, is even more marginal than the small independent player MyEclipse.

Servers & Frameworks – Who are the popular kids at school?


Which Java Containers / App Servers are used the most?

Compared to the last year’s chart we see % gains for the open source containers. We can also see that Jetty and Tomcat have a bigger share than last year, while Glassfish is sliding a bit. The results from these 1000+ developers shows that Oracle Weblogic and IBM Websphere have lost a total of 8% of the market to the open source containers compared to last year.

We asked people to choose only one primary container in this question, even though in many companies several containers are in use. Since we were interested first of all, in what container do people spend most of their time in development it just made more sense to phrase it like that. So don’t make any assumptions as to how this applies to the production deployment, but it’s a good estimate for the situation in development.

What Java EE standards are used the most?

As far as Java EE standards are concerned we have the following picture:

Here the market penetration is more important than the comparison aspect. JPA is used almost as much as the venerable JSP, with 37% of market penetration. EJB versions altogether have 39%, which would make them the most popular standard, but there’s likely some overlap between EJB2 and EJB3 users, so the actual total is likely a bit smaller. Up-and-coming CDI standard has gained 6% so far, will be very interesting to see how much this will change next year. We’ll cover JSF in the next section.

Which Java Framework is most prevalent?

Let’s take a look at the framework chart:

Spring and Hibernate are by far the most popular and in fact are still used more than standards. However, as far as web frameworks go, JSF looks like a popular choice with 24% of answers.

Unfortunately, we haven’t separated Spring MVC from Spring, but we assume (interpret this as you must) that it is at least as popular as JSF. The rest of the frameworks hold a share of 10% or less (GWT is barely over that and is the third most popular).

The third most popular framework in our survey was GWT, followed closely by Struts 1. We asked Matt Raible if these results aligned with his recent controversial presentation Comparing JVM Web Frameworks presentation from Devoxx and here’s what he had to say:

“It’s surprising to see that framework popularity closely aligns with the JVM Web Framework Matrix results I calculated at Devoxx. I had Spring MVC and GWT listed as the top JVM Frameworks, along with Ruby on Rails (running on JRuby of course).

“While this matrix was the result of much controversy, I think it gives developers a decent technique for choosing a web framework to use. Of course, the way to choose a web framework is to pick a few you like, prototoype with them and see which one satisfies your needs to best.

“More than anything, make sure the developers on your team like developing with it, as that’s likely to be key in their productivity using it.

“I’m surprised to see so many folks using JSF, but I do understand why many companies choose it because it’s such a “safe” choice as a standard. In fact, you could say that Struts 1 and Spring are pseudo standards based on their popularity.

However, just because frameworks are popular doesn’t mean you should automatically use them. There’s other great component-based frameworks in Java (GWT, Wicket and Tapestry come to mind) that are easier to use than JSF.”

“I think the biggest thing that component-based frameworks need to work on is their REST support. I think more and more components are being developed on the client (with frameworks like jQuery, ExtJS and SproutCore) and web frameworks should try to embrace that. I especially like frameworks that allow emitting JSON and HTML from the same classes. This allows for easy web page and API development at the same time.”


Turnaround Time – How different J2EE environments compare

This year we asked questions about the time it takes to redeploy the application and number of redeploys per hour. We also asked those who don’t have to redeploy to comment on why this happens. We specifically asked everyone to provide the answers without using JRebel. We were glad to see the development in this area since last year:

  • “I wait till I have enough changes to warrant a redeploy” — we’ve got a few comments like this, it’s definitely one of the ways around the problem, but it can lead to a very artificial way of coding with little incremental feedback.
  • “We use tests (unit tests, integration tests, etc)” — if you have enough tests (and especially if you are not doing UI), it’s a great way to both avoid redeploys and ensure that the delivered system is stable and correct. Kudos to those who do this!
  • “We use Eclipse/Sysdeo/Intellij IDEA/etc HotDeploy” — for applications that deploy quickly this is a great way to improve turnaround, by making the IDE republish changes every time they occur. Unfortunately for bigger applications it saves clicks, but not minutes.
  • “We use HotSwap/Eclipse Debugger Session/etc” — The built-in class replace mechanism is a great way to make small changes, but limited only to method bodies. Also, if you can’t use exploded deployment, you still have to redeploy for any change in JSP/HTML/etc.
  • “We use OSGi” — only a couple of answers like that, but in a well designed OSGi application redeploy can be very quick, as only the changed bundle needs to be reinitialized.
  • “We use Grails, Play! or Tapestry 5″ — a few answers for each of those, great to see that these extremely productive frameworks are being used.
  • “We use JRebel” — the most popular answer, but not surprising considering that 28% of respondents were JRebel users :)

We originally did not include a “30sec” answer to the question “How long does take to redeploy your application?” However, we have since received a few comments about that, and fixed it halfway through the responses. To compensate for that, we will use a “48sec” (0.8 min) value for the answer “1 minute” answer.

How long does it take to restart your container and redeploy your app?

This was the first question we asked. The answers are distributed below:

We didn’t ask with such accuracy last year, which makes it harder to compare, but it seems the trends have stayed the same. The average redeploy time is 3.1 minutes, but the standard deviation is 2.8, which means that the redeploy time varies greatly.

It can be noted that a statistically significant segment of respondents (just over 1 in every 10 developers) responded that it takes over 10 minutes to redeploy.

In an hour of coding, how many times do you redeploy?

The average frequency is 4 times an hour with the standard deviation of 3.2.

With these two questions answered, we can make a reliable estimate for the total time spent redeploying in an hour. We began by removing those who don’t redeploy at all and those that reported redeploying more than 60 minutes an hour (ummm, what?!?!).

How much time per hour do you spend redeploying?

The average respondent spends about 10.5 minutes an hour redeploying with a standard deviation of 9.8. This is about 17.5% of total coding time. If you consider 5 hours out of each day as “coding time”, and assume 4 weeks out of each year are vacation time, then on average 5.3 full, 40-hour workweeks per year are spent exclusively redeploying and restarting.

Redeploy time per Java EE Container (as a % of overall coding time)

Finally, we can also see how the choice of container correlates to the time spent redeploying. Note that it doesn’t mean that bigger containers are that much slower, rather bigger apps influence the choice of container:

Not many changes from last year here, although it’s nice to see the improvements in Glassfish v3.

Conclusions?

Interpreting data is always a hard and dangerous task. A sample of 1027 developers is reasonably large. But some bias is possible, as it’s likely the more active developers bothered to answer.

The data gives a fair overview of what the Java development ecosystem looks like. Probably the most interesting thing is that, despite what some say, the world of open source and commercial software manage to coexist quite well.

Of course with companies like Red Hat and VMware it’s becoming increasingly difficult to distinguish the two, but commercial interests are present on every single graph (if you include Sonatype backing Maven). It will be interesting to see how this balance develops in the upcoming years:

  • Whether it will be the vendor-backed standards or community-backed frameworks that will find the most use.
  • How much the Open Core will be adopted by projects like Jetty, Tomcat and GlassFish and their commercial backers.
  • Will the closed-source containers and tools survive in the ecosystem? Will their role diminish or increase?

Come back next year, let’s see what happens!

  • Jason Brittain

    This is such wonderful survey work! Thank you!

  • http://twitter.com/brunoborges Bruno Borges

    This is how I understand the Web Framework chart:

    45% (sum of non-standard frameworks) prefer something else than JSF.

    Can you tell how many from those 25% chose JSF because it is good, not because is marketed as “JavaEE Standard”?

    I wonder how many would choose JSF if it wasn’t a JCP standard.

  • Henk de Boer

    Bruno, I read the Web Framework chart differently. It includes Seam, and Seam is mostly used on top of JSF. Also, Struts 1 and 2 can be combined perhaps, as the other frameworks are not split up into their individual versions either.

    You thus get:

    JSF 33%
    Struts 18%
    GTW 12%
    Velocity 9%
    Wicket 7%
    Grails 5%
    Guice 4%
    Stripes 2%
    Tapesty 1%

    In other words, only JSF is a very strong and clear common platform. The fact that most of the remaining frameworks (except Struts) each have such a small percentage of users only means there is no real alternative for JSF.

    Even if the rest together is larger than JSF, it still means nothing. The rest is not working together! I can build a supporting “something” for JSF and this gives me 33% of the users. I can’t build something for “the rest”. At worst I would have to build this something 10 times over to give me the same amount of users as JSF has.

    And to answer your question about who choose JSF because it’s good, I think for JSF 2.0 that’s a lot. JSF 2.0 is a very good and productive framework. Everyday more component libs become available for it, and unlike JSF 1.x they work great together! (I.e. PrimeFaces, OpenFaces, RichFaces, they all work with each other)

  • Arjan

    A small comment: there is talk about a “Web Framework chart”, but there is actually no such thing being shown with Spring and Hibernate there.

    For the record, Spring and Hibernate are not web frameworks!

  • David Le Moing

    I am not sure that we can add JSF and Seam percentages. If several answers were possible, it is highly possible that people who like Seam said they like JSF. So the percentage for JSF should be somewhere between 24 and 33%.

    Moreover, you forget this point :
    “Unfortunately, we haven’t separated Spring MVC from Spring, but we assume (interpret this as you must) that it is at least as popular as JSF.”

    I do not say that JSF is not a “strong and clear common platform”, but I think you should not say that there is no alternative for JSF. It is absolutely NOT true. Please remember that you should choose your framework based on your needs. Unfortunately, all the frameworks does not solve all the problem and you have sometime to select more than one. Personnally, most of the time, I am working with Spring MVC, GWT or Vaadin (too bad, not in the list).

  • Arjan

    There are many frameworks not in the list, what about Play!, Click!, Echo2 or Loom? Just to name a few.

    Personally I think some of those are in a technical sense a perfectly well alternative for JSF, but practically far less so. Take Loom for example. Maybe this is really easy, nice and powerful, but who’s really using it? How many books can I read about it? How big is the chance that someone can help me when I’m stuck? How many third party libraries target Loom?

    Above all what I don’t get is why a couple bloggers feel the need to downplay JSF so much. Is this some kind of jealousy because JSF is one of the few single frameworks with a significant amount of users in the otherwise very fractioned web framework scene?

    I tried various different frameworks, and a couple of them were quite nice really. But the thing is, JSF is also really quite nice, especially JSF 2.0. The component sets available for it are really cool (I especially like PrimeFaces) and there are many interesting extensions like those offered by Seam.

    Don’t forget that developers participating in this survey all did so out of free will and most likely indeed the active developers who have a passion for development participated. If they for some reason had to use JSF but didn’t like it, I don’t think they would be giving JSF ‘points’ in a survey such as this.

  • David Le Moing

    I do not want to downplay JSF (at least JSF 2.0). What I wrote is that in this kind of survey you cannot add that easily the percentages of JSF and Seam. We can say exactly the same thing for Struts 1 and 2. It does not make sense to add those percentages and make some conclusions :
    “Interpreting data is always a hard and dangerous task”

    I agree with you about the documentation and third party libraries and those parameters must be taken into consideration when choosing between frameworks.

    Concerning your last paragraph, it is a survey about “Popularity”. Of course, if developers had some bad moments in the past with one framework (let’s say JSF 1.0), it will not get a good mark (even if JSF 2.0 is a real improvement)

  • Henk de Boer

    Okay, maybe you’re right about not being able to just add the percentages like that.

    Let’s just say that it’s likely that a significant number of users having said to be using Seam are also using JSF. The exact number would thus be somewhere between the 24% and 33%.

  • Pingback: New JBoss puts Java EE 6 to work « system-ON-key()

  • Petr Jiricka

    Those trying to use NetBeans with JRebel may have hit this bug: http://netbeans.org/bugzilla/show_bug.cgi?id=188361. This bug is fixed in the recent nightly builds, so I would encourage JRebel users to try those: http://bits.netbeans.org/netbeans/trunk/nightly/

  • http://zeroturnaround.com Jevgeni Kabanov

    Thanks for the link, but we were asking all developers, not JRebel users.

  • Pingback: Reactions to the Java EE Productivity Report 2011 | ZeroTurnaround.com()

  • anshul

    Spring MVC is a web framework not spring and also Hibernate is a ORM, how will this comparison help in Web Framework

  • http://pulse.yahoo.com/_P4TR5HTOK3N7OT4JFXLX32HLOU Werner

    Separate mention of Eclipse and MyEclipse is a bit poor. Where is IBM RAD, SAP NetWeaver or JBuilder 2008 (OK, probably <1% ;-) should have listed IDE platforms only.

    @Arjan You're perfectly right with Hibernate not being a Web Framework. Spring has Web Frameworks, take Spring MVC, but comparing the entire Spring portfolio, probably even including Roo and other products is unfair and incorrect as opposed to a single Web tier framework like Struts or Seam (which also covers more than just the Web Tier)

    Using "Persistence" for things like Hibernate, JPA or others while putting Spring, Seam or others under "Enterprise Framework" may have been more professional and precise.
    Leaving "Web" for Struts, JSF and some other frameworks or libraries covering only the Web tier.

  • Ice-Man

    I really think SpringFramework and Hibernate must not be Web, absolutelly. There shoulbe 2 new categories: (light-weight) Container FrameWorks (Spring F., Seam, Pico, etc.) and other Persistence FrameWorks / JPA Providers, in this case optons like: Hibernate only, JPA+Hibernate, Ibatisonly, etc. thus its having a related subCategory/Chart: amount of each option (wether w/ JPA or not). Of we would have a fair comparation w/ this year suvey, but we would get though accurated closer to real wolrd reallity of the market.
    IMHO.
    P.S.: so we also would have more available space to other (so CoC) Web FrameWorks like the brazilian vRaptor 3 (that’s very seemed to Striper | what out the merchandising)!!!! ;-)))

  • MP

    I always am surprised about the lack of statistical education even amongst technical people.

    “A sample of 1027 developers is reasonably large”.
    What makes you thinking that?
    The number of Java developers in the world in 2009 amounted to around 9 million (see The 2009 Global Developer Population and Demographics Survey)!

    Did you ensure that this a representative sample?
    From the sentence following the cite above in your article, I take it that it isn’t.
    And if it’s not, the results of your study are undoubtedly interesting, but, sorry to say, more or less random.

  • Pingback: From the Mule’s Mouth » How To Migrate Your Weblogic or WebSphere App to Tomcat()

  • Pingback: Java EE Productivity Report 2011 | ZeroTurnaround.com()

  • Pingback: JRebel price goes up. Now takes 10 hours to pay for itself. | ZeroTurnaround.com()

  • Pingback: Genuitec joins the Rebellion! JRebel for MyEclipse released. | ZeroTurnaround.com()

  • Pingback: Announcing ZeroTurnaround’s “JRebel for MyEclipse” | Cheap, Reliable Web Hosting()

  • mrjoltcola

    Struts 1 and 2 should not be combined, they don’t even share common ancestry. They are essentially Struts 1 and Webwork.

  • mrjoltcola

    Struts 1 and 2 should not be combined, they don’t even share common ancestry. They are essentially Struts 1 and Webwork.

  • mrjoltcola

    Struts 1 and 2 should not be combined, they don’t even share common ancestry. They are essentially Struts 1 and Webwork.

  • aseem

    Well being honest and consistently using frameworks i can assure you few things.

    Almost everywhere these days the single framework ideology has become the past.

    I like GWT but only for my applications view .
    I would straightaway go for Spring and integrate it with GWT because Spring is the king when it comes to Business tier,But i will not use Spring MVC.
    Legacy based projects i will go with Struts and Spring together.But a big no for Struts 2.
    Hibernate actually has become a default choice as ORM tool but cant be termed as framework though.

    In simple words use the power of each of these frameworks and build a magnificent product.

  • Pingback: MyEclipse Joins the Rebellion: Announcing ZeroTurnaround’s “JRebel for MyEclipse” | Genuitec Blog()

  • Pingback: deephacks » Configuration Management in Java EE()

  • Pingback: Java Productivity Report 2011: India vs Rest of World | ZeroTurnaround.com()

  • Rick Archibald

    When comparing frameworks, I’d like to know whether Java EE is considered one of the frameworks and just didn’t have enough adoption to appear on the chart. 

  • Pingback: An Introduction To Java Web Application Development | Tech Juice()

  • Pingback: Developer Productivity Report 2012: Tools, Tech, Devs and Data | zeroturnaround.com()

  • Sapsign

    There is DCE VM: http://ssw.jku.at/dcevm/binaries/.

  • Pingback: Gathering Intel on Developer Productivity | zeroturnaround.com()

  • Pingback: JRebel 101: What JRebel is and how it makes Java development lightning fast | zeroturnaround.com()

  • Pingback: JRebel Saves a Developer’s Life? | zeroturnaround.com()

  • Pingback: Wat?! JRebel customer announces 40% efficiency gain in development time | zeroturnaround.com()

  • https://www.youtube.com/channel/UC2fqgG2do0SWE7FacJa9ZnA Lambda Pool

    In 2011 guys was losing almost half hour on deploy tasks… come on its ridiculous lose of time.