The latest expert opinions, articles, and guides for the Java professional.
NB! We’ve released a 2016 version of the Java Tools and Technologies Landscape.
So if you’re looking for the best Java tools you should really check the newer version of the report:
GET ME TO THE 2016 REPORT
A quick note
This survey rocked. A better-than-ever response rate, and each completed survey donated cash to charity. We love doing this. Did you know that this is the 5th anniversary of ZeroTurnaround’s Java development research reports? Break out the champagne!
It actually started in 2009 with a survey about the speed of Java application server restarts, evolving over the years into a deeper look at the industry layout in our first research publication in 2012. In 2013, we tackled two particular challenges that really matter to productive software organizations: software quality (got bugs?) and the predictability of delivery (last week or next year?). We learned a lot from that one!
But now we feel like it’s time to revisit the broader tools & technologies landscape in Java these days, collect some data, crunch some numbers and see what’s going on in the market at large. And what better way than to just throw into your face a huge leaderboard of tools and technologies currently running the show as of May 2014… KA-CHOW!
N.B. Please take these findings at face value, and use at your own risk. The sampling error calculated by DSS is 2.1%, but since the sample is self-selected it is not truly random and can contain bias error that we cannot measure, though we do provide the audience data and it seems to be representative of the industry.
At 56 pages, it’s quite a book. We suggest you download it and take it with you!
How we ran the survey the survey
Sample Population Demographics
Most Interesting Alternative JVM Languages
Object-Relational Mapping (ORM) frameworks
Code Analysis Tools
Continuous Integration Servers
Databases: SQL & NoSQL
Version Control Systems: (VCS)
Binary and Artifact Repositories
Looking Forward into 2015
Checking in: What’s going on in Java these days?
Since there is a very good chance you, dear reader, use one of these top technologies, let’s look straight at top tools & technologies represented in each of the 14 categories we asked about.
As you can guess, in some categories multiple tools are often used in conjunction, so we allowed for multiple selections (denoted by *). For answers where a statistically significant portion (over 5%) of respondents selected “Do not use”, the responses have been normalized (denoted by º) to exclude non-user groups.
It probably comes as no surprise that among the 2164 developers we surveyed, Java SE 7 (65%) is used by two-thirds of developers, but even more are using JUnit (82.5%), the most-used single technology across the entire Java landscape. And a good thing too: unit testing is key for making sure your app gets out the door. Next is Jenkins (70%), our favorite Lord of the Butlers, which is used by nearly 3 out of 4 developers that use Continuous Integration tools (1 in 5 does not). We’ve seen distributed VCS come a long way in recent years, and Git (69%) is now non-exclusively used by over two-thirds of developers – often alongside Subversion (57%).
Taking in the next set of tech leaders really completes the Enterprise Java picture – Hibernate (67.5%), Maven and Nexus (64%), Tomcat (50%) and Eclipse (48%) gives you more or less a decent foundation of a basic, no frills enterprise development stack.
But don’t think the last words have been had yet…because in this report we asked a few questions that directly highlight the feelings of developers towards certain technologies.
The 2014 Leaderboard of Java Tools & Technologies
- JUnit – 82.5%* – Top testing framework used by developers
- Jenkins – 70%º – Most used CI server in the industry
- Git – 69%* – #1 version control technology out there
- Hibernate – 67.5%*/º – The top ORM framework used
- Java 7 – 65% – The industry leader for SE development
- Maven – 64% – Most used build tool in Java
- Nexus – 64%º – The main repository used by developers
- MongoDB – 56%º – The NoSQL technology of choice
- FindBugs – 55%*/º – Most-used static code analysis tool in Java
- Tomcat – 50%º – The most popular application server on the market
- Java EE 6 – 49%º – Found in the most enterprise Java environments
- Eclipse – 48% – The IDE used more than any other
- Spring MVC – 40%*/º – The most commonly used web framework
- MySQL – 32%º – The most popular SQL technology
What technologies are developers really interested in?
We asked which other JVM language they would be most interested in learning about (Scala – 47%), what IDE they’d rather use (IntelliJ IDEA Ultimate – 49%) and build tool they’d like to learn about (Gradle – 58%).
Java 8 is expected to be the #1 priority of 35% of respondents’ companies over the next 2 years. Interestingly, responses regarding IDEs – one of the most used developer tools out there – betray the open-source nature of this tool group by clearly preferring the commercial version of IntelliJ IDEA.
Basically, there are great indications that these next 4 technologies have already become a force to be reckoned with (more on this later).
How we ran the survey
If you don’t really care too much about methodology, feel free to skip to the beginning of the statistics. But before we look at the numbers, let’s look at how we ran the survey, who replied and how we got them to share their information with us.
It started off with admitting that taking surveys is never really that thrilling, right? At best, they are just quick and don’t ask you about something overly personal. For the first time, we were confident that this survey would get a better response than previous ones. Why? Because we fought to make it better, and focused on improving the UX by:
- Finding the best audience to ask
- Introducing a meaningful incentive
- Using the best survey tool possible
And the audience says…
RebelLabs has grown since our premier launch in Jan 2013, and that includes a sizable audience of engaging, intelligent geeks that obviously care about learning and sharing with others. In addition to asking RebelLabs subscribers, we asked Simon Maple, founder of Virtual JUG, to spread the word there and among the wider user group community – including within the helpful London Java Community (LJC). After that, we let friends and fans spread the word on Twitter, Facebook, Google +, LinkedIn and DZone…but it wouldn’t have done so well, we think, without a proper incentive that actually matters…
Finding the right incentive to participate
Although many organizations continue to do this, giving away an iPad, Kindle or remote-controlled helicopter isn’t the most effective way to engage geeks. Firstly, software developers are comparatively high-income earners, and geeks with money usually get themselves these toys whenever they want long before companies figure out that it might be cool to give away.
Second, the privileged that don’t need or want expensive gifts are more reluctant to respond to actions for personal gain. They are good people, after all: so why not do something that requires geeks to be able to give something to others? In this case, we pledged that for every completed survey we would provide $0.50 USD to Child’s Play, a charity that donates games and entertainment systems to children in hospitals. Boom.
Make it fun with great survey software
Another important part of this was to try to make the survey a bit FUN! With the tools we’d used before, like Survey Monkey and Poll Daddy, we saw great functionality and complex logic overcompensating for simply looking good and feeling easy to use or intuitive. When searching for something else, we quickly came across Typeform, a survey tech startup based in Spain, that told us we could make a survey great-looking, and customize it quickly with our own graphics and color scheme. Within 5 minutes of trying it, we felt that we would better engage respondents respondents simply by offering them a good-looking form to fill out: the survey flows well, looks great on mobile devices, lets you use keystrokes to
select options, etc.
Anyway, 2164 software professionals completed the survey, generating over $1082 for a charity we are happy to support. So let’s see who they are, and and what tools and technologies they use.
Sample Population Demographics
Before we determine what you’re using out there, it’s good – or at least polite – to find out a little bit about who you are and what you’re building.
Over a one-month period, a total of 2164 software professionals responded to our survey. We tried digging in to see if there were any significant correlations hidden in the demographics – such as application type or mobile device OS variance based on job profile, but the numbers didn’t betray anything truly interesting.
It’s not surprising to see the dominance of web applications (71%) in development these days, since that’s pretty much aligned with visible trends. But if you step back and think about it, who the heck is making all these libraries and frameworks (15%)? That’s 1 in 7 developers. Weird. Desktop apps (11%) continue to decrease in abundance as easier-to-try, no-download alternatives in the cloud continue to propagate. Lastly, there are a few out there creating mobile applications (3%). Presumably, the majority of mobile app developers are selecting not Java ME (SE embedded), but rather Dalvik (Android) or iOS.
In terms of job role/position/title, software developer (65%) take up nearly two-thirds of respondents. More than a quarter of respondents are in more senior positions as either system architects (14%) or team leads / project managers (13%), and the rest are consultants (i.e. likely independent contractors), Ops, QA or other (some kind of specialist guru, “DevOps Architect”, “Chief Code Officer” or something else equally colorful).
The questions that asked about operating system for both respondents’ workstations and mobile phones was simply for fun – there is nothing ground-breaking here: Microsoft Windows (50%) is used by half of respondents, and Linux/Unix (26%) and Apple OS X (24%) more or less evenly split the remainder although it’s curious to speculate what will happen to workstations in the next 5 years. For mobile OS, Google Android (66%) commands two-thirds of the market, while the priorietary and more expensive Apple iOS (27%) is used by slightly more than 1 in 4. Other mobile OS (7%), meaning Blackberry and Windows Mobile, make up the rest, but apparently we don’t really care. ;-)
We asked about open source project committers out there, and really surprisingly high 31% of developers reported that they work on open source projects, which says more about bias towards these type of exceptional software professionals with whom we are able to cooperate rather than a general indication of the industry…although it IS a promising indicator nonetheless! :-)
Java SE 7 (65%) leads the way here, which is no surprise, and although Java SE 6 (26%) has dropped from 88% usage in 2012, however it’s unnerving that 1 in 4 developers still clings to it – end of life from Oracle’s side was February 2013.
Java SE 8 (7%) penetration, even with all the lambda madness, is surprisingly high – considering only a few app servers support it and big technologies like Hibernate and Javassist aren’t fully supporting Java 8 as of the time of this writing.
The majority of respondents (68%) are using Java EE, so we are confident that they represent the “enterprise Java development” segment. Java EE 6 (49%) perhaps unsurprisingly is used by 1 in 2 developers, and Java EE 7 (35%) usage seems to have grown well since its release, where only particular app servers support it – JBoss and GlassFish namely – and true to that, we see a surging 2x increase in GlassFish usage by Java EE 7 developers alone (JBoss doesn’t change much). We note that 1 in 6 developers is still stuck with Java EE 5 (11%) or its predecessor J2EE (5%) – given how difficult it can be to migrate legacy apps away from these veteran specs, this is not a complete shock.
For further reading, we recommend Java 8 Revealed: Lambdas, Default Methods and Bulk Data Operations by Anton Arhipov.
Most Interesting Alternative JVM Languages
“If you had to choose just one additional JVM language to learn about, it would probably be..?” was a fun question to ask, since the results don’t significantly affect terribly much in the world of Java. That said, some trends are visible: after Java, the real JVM-based contenders out there have always been Scala and Groovy, and this year we see these two pop up once again.
Statically-typed Scala (47%) and dynamic Groovy (31%) might do things quite differently, but both remain interesting to Java developers. Considering the professional support and community strength behind Scala by Typesafe, it’s easy to see the Scala ecosystem continue making gains into enterprises as a serious alternative to Java. Groovy is also a very popular choice among JVM developers – coincidentally Groovy is the DSL used in Gradle, another popular technology among those we asked.
Clojure (12%), the functional language built by the elusive Lisp creator Rich Hickey, remains a fascination for Java developers as well. It’s not even in the top 100 programming languages according to the TIOBE index, yet 1 in 8 Java developers would choose it as their next language to learn. Kotlin (2%), Ceylon (2%) and Xtend (2%) each have small followings, but nothing to rival the leaders.
For further reading, check out The Adventurous Developer’s Guide to JVM Languages.
In last year’s Developer Productivity Report 2013, 97% of respondents reported using IDEs (and 3% don’t…really, WAT?), which makes the IDE market quite representative of development environments. This is a very mature market, with a strong commercial presence following the leading open source option, something that we could consider a reasonable indicator of market maturity.
So we aren’t surprised at Eclipse (48%) retaining the dominant market position, which has been incredibly stable over the years – last time we asked, over two-thirds of developers used Eclipse on at least some projects; however, in 2012 the survey choices were non-exclusive, indicating that at least some developers use multiple IDEs. Eclipse’s market dominance increases if you combine the other tools out there that are based on the Eclipse platform as a different distribution – e.g. Spring Tool Suite (STS), MyEclipse, IBM RAD and JBoss Developer Studio – then we can add another 7% to the score, coming in with over half the IDE market (55%) for Eclipse.
IntelliJ IDEA (33%) continues to make gains, with their Ultimate (26%) and Community editions (7%) representing the flagship JetBrains product. After years of anecdotal evidence, we also took the opportunity to ask “which IDE would you rather use or test for development?”, listing all the same IDEs as in the previous question.
Interestingly, between Ultimate and Community editions, IntelliJ IDEA is preferred by nearly half of respondents (49%), compared to “any other IDE”. Commercial tool makers, you can take this as good news if you operate in a space dominated by open-source alternatives.
NetBeans (10%) maintains a stable 3rd-place as in previous years, despite the fact that releases since version 7.2 have received generally positive feedback and the recent NetBeans 8 shipped as Java 8-ready. Whether a small, stable market share for NetBeans is a strategic goal of Oracle or not, we hope that any business’ preference for commercial products over open source wouldn’t influence the level of support/promotion for a product in question.
Finally, for the first time, we saw Spring Tool Suite (STS) appear on the radar with 4%, displacing MyEclipse and IBM RAD in 4th place in the 2012 report.
For further reading, we recommend How to Get Started with IntelliJ IDEA as an Eclipse User and Using Eclipse for Java development.
The build tools segment of the industry is quite mature, having been more or less stable for the last few years. In the past, Maven (64%) and Ant + Ivy (16.5%) have been more or less neck and neck. Indeed, we believe that many developers often use both in different ways on complex projects – in 2012, 67% of respondents used Maven and 48% used Ant.
This year we asked about the build tool used most often, and forced a single selection. Considering Maven’s ubiquitousness and activity in Maven Central, for example, and these numbers aren’t too surprising. What is interesting is the relatively rapid disappearance of Ant, which is a powerful tool until Ivy slowly creeps into the situation for dependency management and makes everything seem a lot more leisurely. Regardless, Ant with or without Ivy is only one-third as commonplace as it was reported in 2012.
The rapid increase of Gradle (11%) is also interesting to witness. Since 2012, Gradle use has more than doubled, which is probably due to its being chosen by Google as the future official build tool of the Android OS (which two-thirds of you out there are using, according to this report).
Gradleware, the enterprise solutions company led by the founder of Gradle, has helped along a uniquely active community for this market – indeed, when we asked: “Which build tool would you like to learn more about”, 58% of developers selected Gradle, which appears to be the most interesting single tool we asked about. Incidentally, SBT (2.5%), was selected by 1 in 10 respondents as the tool to learn more about. This reflects the popularity and interest in Scala we saw previously, even though we are reminded by Typesafe that the tool can be used for Scala and Java projects alike.
The market for Java application servers is quite mature, with a plethora of offerings from both open source and commercial providers alike. Our results showed that 8% of respondents are not using an app server at all (the scores have been normalized). Additionally, there are loads of tools available to choose from – the bottom 2.5% of users made up over 20 different technologies!
Tomcat (50%) remains the dominant application server (also open source), consistent with the non-exclusive results from the 2012 survey, which showed Tomcat in use by 59% of respondents at that time. Otherwise, the results pretty much fall in line with what we saw in 2012: including JBoss (16%) in 2nd place and Jetty (12%) in 3rd place. GlassFish (7.5%), which was behind Oracle WebLogic (6%) in 2012, has since risen above just to have commercial support cut from it in late 2013. IBM WebSphere (4%) along with Liberty Profile, still contain about 4% of users we surveyed.
One newcomer has made a small but meaningful entrance into the market: TomEE (1%) supported by Tomitribe is a Java EE 7 web profile certified app server based on Tomcat, which might be a good way for enterprise Tomcat users to go.
We also asked whether developers are using the same server in development as they are using in production – in most cases, the app server used in production is determined first, then teams can often decide to use the same in development or not. We see that 81% of respondents use the same application in development as in production, while 19% do not.
We ran some pivot analysis to know whether the relative market share changes based on if the same application server used in production is selected for use in development.
We reasoned that:
- If market share rises for any given application server when used in development only, then the app server is popular with developers, since a choice of app server is implied.
- However, if the market share decreases for any given application server when used in development only, this means that these developers would otherwise not choose the same app server for development if it were up to them (most likely not Java EE developers).
There were 3 application servers whose market share increased when used in development only. Again, we’re trying to detect developer preferences in this – i.e. when given the choice to freely decide which application server to use, which do they pick?
Our analysis shows that Jetty, TomEE and Tomcat are popular with developers who don’t need to think about production. Below, the % in bold shows the overall market usage of each server, followed by the % of use in both production and development as well as in development only.
App Servers that developers choose outside of production
- Jetty (12%): Falls to 9% when used in both environments, increases massively to 28% when used in development only. Jetty is very popular with developers.
- TomEE (1%): Stays the same at 1% when used in both environments, but increases significantly to 3% when used for development only. TomEE is popular with developers.
- Tomcat (50%): Drops to 48% market share when used in both environments, increases to 51% market share when used in development only. Tomcat is popular with developers.
Our analysis also showed that, when given the choice, respondents will not as often choose an application server that is not required for use in production as well. JBoss and GlassFish both fall into this category despite a not-incorrect perception of popularity among developers, but the numbers are what they are. The truly unpopular choices are, not surprisingly, the pricey and designed-for-production app servers WebSphere and WebLogic (the latter has just one single solitary developer using it when it’s not used in production).
App servers used more often in production than development
- Oracle WebLogic (6%): Increases to 7% when used in both environments, but drops to about 0.005% share when used in development only. Literally, 1 respondent reported WebLogic in development when they don’t need it in production. Extremely unpopular with developers.
- IBM WebSphere (4%): Increases to 5% when used in both production and development environments, drops to 2% when used in development only – and this lack of popularity is most likely saved only by IBM’s lightweight Liberty Profile shining through, rather than the full-blown, multiple-gigabytes WebSphere package.
- JBoss (16%): Increases to 17% market share when used in both environments, falls to 7% when used in development only. JBoss is the most used production server in this group, but it’s not the first choice by developers starting out, which is probably why WildFly was released with high hopes for the developer community.
- GlassFish (7.5%): No change in GlassFish usage when used in both environments, falls to 5% when used in development only. It seems that GlassFish is the most popular of the not-so-popular-for-development-only app servers, and it’s relative popularity will be important for it’s future progression.
For additional reading, we recommend The Great Application Server Debate with Tomcat, JBoss, GlassFish, Jetty and IBM Liberty Profile.
In a modern development environment, using multiple web frameworks is not only expected, but even recommended for some. Combining the strengths of multiple frameworks, like Spring and JSF or GWT can be beneficial – indeed, when we checked it out, 25% of Spring MVC users are
also using JSF!
Drilling deeper into the data revealed more parallel use of several frameworks at once, which is something we can get into later. Developers often use multiple frameworks in conjunction, combining the benefits of Spring, JSF, Vaadin, Wicket, etc, so we aren’t surprised at these results.
For further reading, we would like to share The Curious Coder’s Java Web Frameworks Comparison as well as The 2014 Decision Maker’s Guide to Java Web Frameworks (Parts 1 and 2 on the topic).
Object-Relational Mapping (ORM) frameworks
This is the first year we specifically asked about ORM frameworks for helping you with your data management. In the past, we’d lumped the dominant Hibernate (67.5%) into a more generic “Application Frameworks” segment, where in 2012 it was reported being used by 54% of respondents. Approximately 10% of respondents do not use this technology, so the results have been normalized.
In this semi-mature, changing market, we find plain old JDBC (22%) and Spring JdbcTemplate (19.5%), two popular flavors of more or less the same tech, taking over 40% of the market when combined. We were a bit surprised at the high level of use of EclipseLink (13%) in light of these more popular ORM frameworks, but then again it is integrated with JPA, commonly used by developers. MyBatis (6.5%) and jOOQ (1.5%) also appear on our radar as well, serving some niche audiences.
Code Analysis Tools
In 2013, we saw that using code analysis tools has a significant effect on the quality of software (i.e. less bugs) and developers’ ability to predictably deliver a final version. At the time, only 49% of developers we asked “Do you monitor and fix code quality problems?” replied affirmatively, so in this 2014 survey we specifically asked about static code analysis tools and provided a list of options. This proved that more teams are in fact using code analysis tools (70%), and the results are normalized to reflect that about 1 in 3 developers do not use anything.
This market could be described as emerging, and there is still some maturity to be gained. SonarQube (56%), aka Sonar or SonarSource, is a intelligent platform for integrating other code analysis tools, like FindBugs (55%), a University of Maryland project and the most popular single technology. But developers also enrich their experience by using Checkstyle (45%), PMD (33%), Cobertura (23%) and Emma (17.5%).
When we looked into it, more than 50% of all respondents reported using at 2 or more of these tools, and hundreds reported using as many as five different static code analysis technologies. At the very bottom, we see Coverity (2%), the only commercial code analysis tool we see with any real numbers, albeit small digits to be sure. As this industry matures, we expect to see more formalized offerings with support made available for organizations that care about how many bugs make it into their releases.
For additional reading, check out this recently-published report: The Wise Developer’s Guide to Static Code Analysis.
Continuous Integration Servers
In 2013, only 68% of developers reported using Continuous Integration technology, so it’s good to see that a more representative number from this year’s findings has raised it nearly to 80%. Only about 1 in 5 developers do not use CI technologies whatsoever.
However, more than half of developers (among all respondents) not only use CI, but use Jenkins specifically. When normalized, Jenkins (70%) settles in a comfortably dominant position, possibly amused that it was once considered a rival of Hudson (8%). This market is still maturing, with the majority of developers either using Jenkins or nothing at all. At least the discussion over Jenkins vs Hudson can be put to rest!
Other signs of progression in this area are present, with commercial tools Bamboo (9%) and TeamCity (7.5%) each grabbing some of the CI market, likely enjoying some small usage based on the popularity of Atlassian’s and JetBrains’ tools for developers and software organizations. We saw Travis CI (2%) appear in the past, which offers both open source and professional CI options, and CruiseControl (1%), which had 4% of the market in 2012, seems to be sinking peacefully into oblivion.
For additional resources, please review Release Management for Enterprises plus Why Devs <3 CI: A Guide to Loving Continuous Integration as well as Jenkins CI: The Origins of Butlers, Build Masters and Bowties.
Databases: SQL & NoSQL
In the world of databases, opinions can run hot. The SQL vs NoSQL vs Something Even Better debate continues to rage at some level, and when we looked at the results we found that a large minority of the 2164 respondents use both (39%), seeing advantages of using SQL and NoSQL technologies in conjunction: as our own engineers will tell you, the high-performance SQL is great at querying websites and other real-time services, whereas NoSQL is better at handling frequently-changing data structures, namely in regards to reporting and configuration.
While 4 out of 10 engineers are using both technologies in peace, the rest are divided into camps: SQL only (53%), NoSQL only (4%) and None (4%).
We normalized the numbers to exclude non-users (8%) in total, and what we see is a pretty mature market layout with several strong contenders of both open-source and commercial flavors.
MySQL (32%), the original relational database management system (RDBMS) folks, were bought by Sun Microsystems in 2008 and probably became one of many compelling factors for the acquisition of Sun by Oracle in 2010. So, if you combine this with the market share of Oracle DB (30%), Oracle effectively maintains nearly two-thirds of the SQL market.
The third-place upcomer is PostgreSQL (19%), an object-relational object-relationship database management system (ORDMBS), and is run by a consortium of volunteers as the PostgreSQL Global Development Group. The final one-fifth of the market is led by MS SQL (8%), DB2 (4%), H2 (2%) and a dozen more.
In the NoSQL world – remember, that stands for “Not Only SQL”, not “No SQL” – things are a bit more fragmented. This area is less mature than the SQL landscape, and among the developers using NoSQL, which is less than half of our respondents, MongoDB (56%) is clearly leading the pack. The rest of the bunch are relatively new and some are supported by powerful organizations like Apache and Pivotal.
Here we have Apache Cassandra (10%), Redis (9%), Hazelcast (5%) and Neo4J (3%), and a couple dozen more minor projects out there make up the final Other (17%) section.
Version Control Systems: (VCS)
In our 2013 report, we found that using Version Control gave a 9% gain in predictability for releases – one of the best tool categories out there. For the first time, we see Subversion (57%) finally displaced by Git (69%), although both systems are being used in conjunction: 60% of Subversion users also use Git, and 49% of Git users also use Subversion.
So, often times these tools are complementary in developers’ stacks, although some out there wonder why, with distributed VCS options like Git and Mercurial (9%) available, anyone uses Subversion, or CVS (8%), which hasn’t released anything since 2008. It would be interesting to see the ratio between new vs. legacy projects for each VCS. Bottom line: Git, with the assistance of the popular enterprise provider GitHub, has announced its dominance.
Binary and Artifact Repositories
In past reports, we didn’t consider looking too deeply into binary and artifact repositories. Possibly the cause is that quite a large minority of developers – nearly 40% in this survey – simply don’t use one.
In the past, the real enterprise choice has been Nexus (64%) from Sonatype, but recent developments in this tool category, led mainly by JFrog’s Artifactory (27%), have turned attention back to developer needs for versioning artifacts – from JARs and WARs to complete applications and libraries. Apache’s Archiva (6.5%) represents a small group of users, but in this relatively immature marketplace there is a lot of room for changes and growth.
As software producers (and users) it’s relieving to see that the vast majority of developers – nearly 97% – do commit to unit testing their apps (i.e. with JUnit & TestNG), and half them apply some kind of mocking framework as well (i.e. Mockito / PowerMock). About 1 in every 3 developers also automate their browser testing (Selenium / Selenide) and 1/5th practise performance and load testing. Integration testing and spec-based or behavior driven testing are not incredibly common still.
Testing frameworks are in a maturing technology segment, where dominant technologies like JUnit, Mockito and Selenium are delivering solid-enough performance to raise eyebrows among a larger population, thus carving the way for small alternatives to build upon foundation laid out by others. The top four most used testing frameworks – JUnit (82.5%), Mockito (41.5%), Selenium (29%) and JMeter (19.5%) – are fully complementary to one another and cover entirely different areas of testing.
For more about unit testing and mocking, we invite you to check out Go Away Bugs! Keeping your code safe with JUnit, TestNG and Mockito.
Looking Forward into 2015
It’s always good to look into other developer sentiments, and asking about what you (or your organization) believe to be high-priority is a good way to determine that. Not surprisingly, Java 8 (35%) is on the mind of over 1/3 of developers – with some long-awaited changes, like lambda functions, finally available, there seems to have been a breath of new life inserted into this “dead” language.
Interesting, Continuous Delivery / Deployment (18%) is receiving some renewed interest in light of not only some excellent successes for those organizations that embrace this, but for the concept’s roots in automation and tooling to get the job done – something you’d likely approve of highly. Also, manual application deployments are becoming unpopular due to high risk and poor results.
From looking at earlier results, we see a reasonable interest in embracing Non-Java programming (15%), as Scala and Groovy grow in enterprise adoption. Big data (10%) certainly is big, but still not necessarily grabbing too much attention, and Development in the Cloud (7%) is an interesting experiment whose outcome will require some waiting-and-seeing.
But what happened with DevOps (7%)? It’s scratching the bottom of the barrel compared to what we’ve all seen and heard in the last few years. Even with the patient love and energy of Patrick Debois and the burgeoning global DevOps community, along with pronouncements of support from companies like ThoughtWorks, PuppetLabs and ZeroTurnaround, DevOps seems to be struggling to find a crisp and clear mission statement – it’s not always clear what is the key problem they are solving. Perhaps, like with some community movements, a major backer with enough force to initiate the movement and provide confidence for others to join along in the spirit of competitiveness, could make a difference. Netflix, we’re looking at you ;-)
And as for the Internet of Things (5%), it’s too soon to say much, but we like that it’s a great way to appreciate the way technology plays an increasingly larger role in the way we all live (just like in the movies!)
Looking at the next section, we conclude with a summary of our findings and a brief look at the maturity of different tool categories.
It’s time to review the main takeaways from each section – anything that was too small to matter much right away can be revisited in a year, and anything that was too big to ignore is what we’d like to glance at.
The TL;DR version for efficient readers
- Java versions – Adoption since 2012 of the newest Java versions has been strong, namely growth in Java SE 7 and Java EE 6…the fact that certain older version of Java SE and EE still command decent minorities is a bit odd, but nothing to fear.
- IDEs – Eclipse is a very stable market leader, but increasing favor and interest in IntelliJ IDEA may eventually equalize things.
- Alternative JVM languages – Scala is the most interesting, enterprise-ready language on the JVM, and Groovy & Clojure play a great counterpart to the non-Java coding movement.
- Build tools – Maven’s dominance is now unquestioned with Ant’s decline from previous years, although fast-growing Gradle is extremely interesting to respondents.
- Application servers – Open-source players like Tomcat, JBoss, Jetty and GlassFish dominate both production and development environments, which use the same technology for 81% of respondents, although it’s clear that development-only app servers in the highest favor are Jetty, Tomcat & TomEE.
- Web frameworks – A mature and fragmented market, over 1/3 of developers use more than 1 web framework, and here Spring MVC is still king in this area, with stable JSF and growing Vaadin following
- Object-relational mapping frameworks – When it comes to ORM, Hibernate takes the cake, although other technologies are available and in common use in parallel.
- Code analysis tools – Although nearly 1/3 of developers don’t use these tools (big mistake), the market is rich with complementary technologies like FindBugs, CheckStyle and a platform to bring it all together, SonarQube.
- Continuous Integration (CI) servers – Jenkins’ dominance here is stronger than ever, yet 1 in 5 developers still don’t use CI as a practice.
- Databases: SQL and NoSQL – The mature SQL is dominated by Oracle, but the market has a good mix of free/open-source and proprietary offerings from long-time players. NoSQL is a maturing segment that is mainly driven by MongoDB.
- Version Control Systems (VCS) – Git, supported by the headline-worthy GitHub, is finally reigning supreme over Mercurial as a distributed VCS, and is often used in parallel with the legacy Subversion (SVN).
- Repositories – A maturing market that still needs a lot of adoption by developers, the legacy market leader Nexus is losing ground to JFrog’s Artifactory.
- Testing frameworks – In this area, complementary technologies work better together rather than competing, with unit testing, mocking and browser testing all highly practiced using strong tools like JUnit, Mockito and Selenium respectively.
- Priorities for 2015 – Java 8 (obviously), Continous Delivery / Deployment and Non-Java programming using alternative JVM languages are the 3 top priorities for the next year according to respondents.
A note on the maturity of the technologies
To conclude, we have some short comments on what we could call “market maturity”.
Maturity may not be terribly simple to define, but we believe that a couple reasonable indicators could be:
- Size of non-user base – i.e. people who simply don’t use to a particular type of tool for whatever reason, although frequent barriers are ignorance and lack of time, all of which affect market maturity.
- Level and type of market fragmentation– i.e. looking at how many tools are represented overall in the category, what is representation of commercial vs. open source (or simply free) tools, existence of SMP (significant market power) players like Jenkins, Maven, Tomcat and Eclipse, and other factors influence market maturity.
Based on these factors, we took a stab at defining three levels of market maturity, which goes like this:
Fresh technologies – Repositories, NoSQL technologies and code analysis tools all have large non-user groups, and it’s this underuse that makes it difficult to tell which tools will emerge supreme at this point. More adoption in these spaces is needed.
Changing technologies – ORM frameworks, version control systems (VCS), continuous integration servers (CI), testing frameworks and build tools are changing based on evidence of things like the existence of a significant market power in the segment, a reasonably high level of adoption among the sample population, and signs of a changing landscape (i.e. the comparatively rapid growth of an emerging player).
Mature technologies – IDEs, App Servers, Web Frameworks, relational DBs (SQL) are mature, with comparatively little change year-over-year. With the exception of a developer “sea change” in interest and adoption towards IntelliJ IDEA, others like Tomcat, Spring and MySQL/OracleDB are all placed in what Gartner would call the “Plateau of Productivity” (although coders might have a different POV on that…)
Thanks for Reading!
We would like to thank the subject matter experts (SMEs) quoted in this report, the authors, editors & reviewers from ZeroTurnaround, our sponsor that made it possible to create this report, and finally our readers and the 2164 engineers+ out there that spent 5 minutes to help sick kids in hospitals have a bit of imaginative gameplay. We hope our next survey gets even more participants and goes to another worthy cause!
Leave a comment