What's Your Next JVM Language?

InfoQ's research widget has been deprecated. It should continue to work however, and we hope to relaunch it at some point in the future.

The slow evolution of the Java language has increased interest in JVM languages.Java 7's brought JSR 292 (invokedynamic and its support libraries) to improve the performance and flexibility of languages targeting the JVM.

It seems the stage is set for companies to adopt a JVM language to raise the productivity of their developers (or at least keep them from leaving for other companies that have adopted more trendy languages).

So if you're evaluating the switch to another language or have already decided, InfoQ would like to know: what is you're next JVM language?

The Languages

In order to simplify this question, we've decided to focus on JVM languages that are: currently actively developed, general purpose, and suitable for enterprise or server side development. We've left out languages like Processing which are aimed at a specific domain (even though they might be general purpose).

Note: InfoQ is aware that languages are a controversial, touchy subject. If we've left out your future JVM language, feel free to tell us all about it in the comments.

On the voting widget: pick the languages you're considering or which you've evaluated and arrange them whether you'll adopt them (horizontal) and how much of your code will be written in these languages instead of Java (vertical).

"Frege is a non-strict, pure functional programming language in the spirit of Haskell. It enjoys a strong static type system with type inference. Higher rank types are supported, though type annotations are required for that. Frege programs are compiled to Java and run in a JVM. Existing Java Classes and Methods can be used seamlessly from Frege. The Frege programming language is named after and in honor of Gottlob Frege. While not derived from any existing Haskell implementation, it is more or less equivalent to Haskell 2010."

I have a feeling you are going to get many voters who don't interpret the graph the way you have it laid out. Having "more" at the bottom of the y-axis and "less" at the top is very unintuitive. I can you tell I misvoted on this axis. I suggest a recount due to hanging chads ...

I understand, but the direction of the X axis is so that the interesting languages are near the origin of the coordinate system.By having the direction of the Y axis as it its, it means that the most mature & attractive languages will be clustered in the bottom left quarter (assuming that the best replacements for Java will be used for all the code).

In other words, the further away from the origin, the less attractive the language is as a replacement for Java.

Alas, Gosu doesn't quite meet the requirements set forth: "currently actively developed, general purpose, and suitable for enterprise or server side development." While it's somewhat active, it's not (yet) open-source, and existing Java frameworks can't always be used due to incomplete annotation support.

I will definitely write all my code in Java 8. I don't see the big attraction of swapping to trendy languages every year orso. In 2006 it was suddenly Ruby, then Groovy became the hype. Last year it was Scala, and this year I don't even know what the biggest most hyped language is?

Will it be Ceylon next year? Will everybody who just started to rewrite everything in Scala, move to Ceylon?

The surface of the points should be proportional to the number of vote
by
Gaetan Zoritchak

The chart is confusing.

For example is you compare today, java8 has 631 votes and JRuby 288 votes. But when you look at the chart, it seems that jruby is a 4 times smaller than java8. Which is not true. To be fair you should correct that point.

Re: The surface of the points should be proportional to the number of vote
by
Dio Synodinos

Hi Gaetan and thanks for the feedback. We can't go 100% proportional because that would create unreadable entries for the corner cases (too big/small). If you're interested, plz ping me on research@infoq.com and I can share with you the exact drawing algorithm and you can send me your feedback. Cheers!

Mercury is a logic/functional programming language (for general purpose programming) designed for use for large systems and large teams. It has multiple backends for C (two backends), JVM, and .net. These backends are not different implementations of the system (as Python Jpython etc are) but different options for the single system. See mercurylang.org

At www.missioncriticalit.com we use Mercury (with C, Java and .net) to write server-side enterprise software. For us, Mercury provides features that assist in writing reliable software, to the extent that we offer an explicit warranty on our software.

I'm a bit disappointed to see ColdFusion (CFML) overlooked here.
by
Brad Wood

I'm a bit disappointed to see ColdFusion (CFML) overlooked here. Even though it started as tag based and written in C++ back in 1995, it was released with a full rewrite in Java back in 2002 (Before Scala was even officially released) and has matured to a modern scripting language featuring Java interop, closures, dynamic typing, and OO patterns. It is regularly updated, open source (via Railo) and embedded in government and enterprise more than people realize. I consider CFML to be one of the first big JVM languages and just as popular as Groovy, Scala, Clojure and jRuby. (On the Tiobe index, Scala is #42, Groovy, Clojure and CFML are in the #51-#100 list, and jRuby doesn't even rank. CFML would do even better on Tiobe if they'd stop stubbornly refusing to use "ColdFusion" as a search term) CFML remains a highly useful and productive platform and it's a shame so many refuse to recognize that.