Donnie Berkholz's Story of Data

Interest withering in Java application servers

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit

Prompted by recent encounters with WebSphere’s Liberty Profile, which is targeted at developers, and the realization that we haven’t talked seriously about Java application servers for years, the time seemed right for a fresh look at them. Going into it, the outlook from my fellow Monks was grim. For example, RedMonk alumnus Coté wrote in 2010:

The idea of an “application server” is being eliminated, component by component. In eliminating that idea there’s a huge vacuum when it comes to the runtime developers use to house their projects.

James even pointed out as far back as 2008 that advances including Ruby on Rails and XML’s ability to aid interop would drag things away from the J2EE world. Let’s examine the data to see whether those predictions held true.

Broadly fading traction for Java app servers

Data from Google Trends search on the app server name plus "java," normalized by hits for "java" alone.
Data from Google Trends search on the app server name plus “java,” normalized by hits for “java” alone.

A look at Google search data, reflecting a global and general technical audience, shows an interesting trend — across the board, overall interest in app servers is shrinking. You can see clearly visible peaks around 2005 for Tomcat, 2007 for JBoss, and 2010 for GlassFish. This is countered in part by an increase in alternatives like Spring, as well as the migration of many use cases to alternative, dynamic languages.

Given the number of acquisitions in this industry over the past decade, it’s worth taking a look at whether they’ve caused any impact. Oracle bought BEA (2008) and therefore prolonged the life of WebLogic. I’ve noted the “Oracle bump” in the graph above, where WebLogic went from a steady downhill slope to a level one for a couple of years post-acquisition. In contrast, after Oracle bought Sun (2010), it essentially put the open-source GlassFish into stasis, resulting in a downward spiral. As a third example, Red Hat bought JBoss before either of those examples (2006), and it also transitioned from growth to decline. Now, it may be that there are other factors influencing these changes, but the scattering of acquisitions over time suggests that it’s more specific to acquisition than it is to broader industry trends.

Only two popular app servers showed increases in the last 5 years: GlassFish and Jetty. By these metrics, GlassFish is well past its prime, post-Oracle. On the other hand, Jetty appears to have very quickly found a solid niche and stuck with it, given its nearly static levels since mid-2006 on this graph.

Early-adopter communities agree

If we look at a community of earlier adopters like Stack Overflow, we see general agreement with the above trends with subtle differences.

Data from Stack Overflow tags for each app server, normalized by the "java" tag count.
Data from Stack Overflow tags for each app server, normalized by the “java” tag count. Obtained from this query.

For example, here are some of the differences:

  • Spring passed Tomcat in traction roughly a year earlier than it did for a general audience;
  • JBoss peaked in late 2009 rather than late 2007;
  • GlassFish held steady since its peak rather than declining;
  • Jetty and GlassFish both have stronger showings relative to WebLogic and WebSphere.

Many of these could reflect a stronger bias in the Stack Overflow userbase toward open-source technologies with a low barrier to entry. The GlassFish differential could indicate Oracle’s preference for WebLogic over GlassFish in the broader audience that Google data reflects, while a more strongly open-source-leaning audience like Stack Overflow may continue to use GlassFish.

If we look at another audience, Hacker News, the results are largely similar with a couple of exceptions worth discussing.

Methods
Data from Hacker News via HN Trends, normalized by Hacker News growth and mentions of “java.” Lines are shown with Bezier smoothing to remove higher levels of noise.

The Spring framework has an overwhelmingly dominant lead over all app servers for this audience. On the left-hand graph, you can see that all the app servers are nearly overlapping down at the bottom of the plot, while Spring is trending even further upward beyond its already high share.

On the right, I’ve removed Spring from the calculations so we can more clearly see what’s happening within the app servers. The trends are largely consistent over time and in relative ranking, although Jetty shows a much higher share on Hacker News than in the other two data sets. To clear this up, perhaps we can correlate these conversational data with different types of information.

How about some actual usage data?

While results based on conversations and searches are all well and good, the question remains whether this correlates with real-world usage. Fortunately we partnered with New Relic and Steve wrote up a post on the state of the stacks at this time last year. I’ve reproduced one of his charts here, and as it turns out, the ranks largely hold true between conversation and usage, with a couple of exceptions:

nr-java-app-servers

 A significant exception is Jetty’s emergence with much greater usage than in Google Trends or Stack Overflow, although it agrees fairly well with Hacker News.  This may reflect a bias in the Jetty userbase toward more open-source– and startup-oriented audiences, since Hacker News > Stack Overflow > Google Trends. Given my interactions with the DevOps community, this larger share for Jetty seems reasonable among that population, likely to overlap with the New Relic userbase. The reality of this breakdown is further supported by data from ZeroTurnaround’s 2012 developer productivity report, which shows Tomcat in the lead, followed by a nearly tied JBoss and Jetty.

Another exception, this time among commercial options, is JRun. While not shown earlier, it trails Resin in Google Trends and is almost entirely absent from Stack Overflow. Adobe no longer sells JRun as of this spring, so it can largely be ignored insofar as predictive power goes. Steve talked about some potential reasons for these differences in his post so I won’t discuss them in any greater depth here.

Also worth noting is that the size of the differentials — the size of the real-world usage leads the top app servers hold above their competitors are amplified beyond the size of the conversations and searches occurring about them. I would argue that this illustrates a benefit of the transparent development we see in open-source communities. If the barrier to entry is low — if it’s easy to install and use, and the documentation is friendly and accessible — then conversational and search data may be relatively depressed because people have no reason to go that far.

Conclusions

Years ago, James and Coté were on to something with their ideas about the future of the app server, and now we have the data to back up their analysis and qualitative research. As James wrote back in 2005, decomposing monolithic software into components has many benefits. Developers today prefer a more composable, flexible system, and I expect anything resembling a successful app server in the future will in reality be a packaging exercise of many components that have already gained developer traction, with mix-and-match pieces to suit more individualized development.

Disclosure: IBM, Red Hat, Adobe, and New Relic are clients. Oracle, Pivotal, Caucho, and ZeroTurnaround are not.

by-sa

8 comments

  1. But you need an app server like tomcat or jetty to run your spring apps, I don’t get the point of comparing spring uptake as if its displacing tomcat usage, their usage is not mutually exclusive.

    1. Think of it like PaaS vs IaaS. Once you no longer have any interest in the underlying infrastructure because it has no relevance to how you develop, there’s no way for any of the options to differentiate. Instead the interest and value shift to the next layer up.

  2. Should we assume that the data was scrubbed to exclude Spring TC?

    1. Instances of Spring TC are essentially nonexistent in Google Trends, Hacker News, and Stack Overflow.

  3. Java app servers are a well known quantity, so it might be less frequent a search topic. Or perhaps Spring is so hard to use, there are a lot of tech support related searches? I don’t know that I’d infer so much from the search keywords…

  4. Embedded servers like netty often make more sense than the classic Java multi-app app servers. The Play Framework has it right in defaulting to an embedded Netty solution.

  5. […] “Interest withering in Java application servers” on the trend toward composability over monoliths. […]

Leave a Reply

Your email address will not be published. Required fields are marked *