Wednesday, February 23, 2011

Prevalence of Non-Java JVM Languages on JVM

The current Java.net poll is showing some interesting early results. With the number of responses approaching 100 so far, the poll question How much of your JVM-based programming is in languages other than Java? reveals that just over half of the respondents replied "All my JVM programming is in Java." In my experience, an even higher percentage of Java developers do not do any "JVM programming" outside the Java language itself. However, I'll admit that I had expected more than half of the respondents to a Java.net survey to be regular users of JVM languages other than Java. There has always been a disconnect between the everyday Java developer and the Java developer who regularly reads and responds to online Java community resources such as Java.net.

Only ten percent of current responses indicate "Most of my JVM programming isn't in Java." That relatively small percentage was about the percentage I would have predicted for a Java.net audience, but I don't know of any JVM developer that I know well who would have selected this response. Every developer I know that uses the JVM uses Java quite a bit still, but I'm confident that some of this depends on "the shop" one works in and what they are working on.

I believe that I fall into one of the two in-between categories: 20 percent "occasionally I use / have used other JVM languages" while 12 percent "use other JVM languages quite a lot." A few years ago, I was solidly in the "All my JVM programming is in Java" camp, but that changed once I got a solid taste of Groovy, played with JRuby, flirted with Scala, and thought Clojure had some interesting ideas. I've never been interested in jPerl or Fortran on the JVM. In a matter of about three years now, I've gone from Java only, to the "occasional" use of alternative JVM languages, and in the last couple years to using "other JVM languages quite a lot."

One of the reasons I like using Groovy and Java is that I use them largely independently of one another but in complimentary fashion. In other words, I mostly "mix" the two languages when my scripting meets my application development. I tend to prefer application development in Java and scripting and other developmental environment tasks in Groovy. The fact that my Groovy scripts can easily access my Java applications via a wide variety of Java-based interfaces makes this a particularly powerful combination. I know that there is a large group of people who use Groovy for application development, but I doubt there are many people who use Java for scripting.

My gut feel (and I have no evidence of this, squarely placing it within the "Speculation" category of this blog) is that Groovy is most likely to be the alternative JVM language that is heavily and frequently used without entirely or largely replacing Java for a particular developer. I postulate this because I imagine that a JRuby developer is choosing JRuby for reasons to do more with Ruby+JVM than for reasons having to do with the Java programming language. The same is likely true for Jython: it is likely to appeal to the developer who cares more about Python+JVM than about the Java language.

I believe that developers who use Clojure and Scala are more likely to be using these languages for full application development and largely as a replacement in a situation they would have previously used Java for. Although Groovy can be and is used for application development, my belief is that a large number of JVM developers use Groovy+Java in a way similar to how I use it: Java for the lion's share of application development and Groovy for scripting and environmental tasks. A big and growing subset of these users are likely to be systems administrators and database administrators who use Groovy to support Java-based development environments in which these administrators may not work much with Java itself. The most obvious exception to this might be Grails developers who might have largely or entirely replaced their web development in Java with Groovy/Grails.

Conclusion

There are numerous advantages to learning and using alternative languages that run on the JVM. I'm certainly happy to have so many options with their own set of strengths and advantages. The availability of alternative JVM languages has brought significant excitement to the Java community, but these Java.net results indicate that there is still significant potential for further growth and popularity of these alternative JVM languages among the Java development community.

No comments: