This year we expanded on that, asking more and better questions to give you better and more accurate information. The survey itself (found here) 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.
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.
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.
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.
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.
Let’s take a look at the framework chart:
Spring and Hibernate are by 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 2nd 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.”
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 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:
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.
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.
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?!?!).
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. Considering 5 hour a day coding time and 4 weeks a year of vacation we get about 5.3 work-weeks a year spent redeploying.
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.
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 JBoss and SpringSource it’s becoming increasingly difficult to distinguish the two, but commercial interestes 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:
Come back next year, let’s see what happens!
From :http://www.zeroturnaround.com/java-ee-productivity-report-2011/