Top five scripting languages on the JVM

Groovy and JRuby lead a strong field, with Scala, Fantom, and Jython following behind

Anyone who has followed software development tools during the last decade knows that the term "Java" refers to a pair of technologies: the Java programming language and the Java Virtual Machine (JVM). The Java language is compiled into bytecodes that run on the JVM. Through this design, Java delivers its vaunted portability.

The language and the JVM, however, have been increasingly moving in opposite directions. The language has grown more complex, while the JVM has become one of the fastest and most efficient execution platforms available. On many benchmarks, Java equals the performance of binary code generated by compiled languages such as C and C++. The increasing complexity of the language and the remarkable performance, portability, and scalability of the JVM have created an opening for a new generation of programming languages. These languages lack Java's syntax overload (often referred to disparagingly as its "ceremony") -- that is, the amount of excess code that needs to be cranked out before the code that does the actual work can be written -- but take advantage of the JVM.

In this article, I examine a handful of these languages, comparing and contrasting them, and identifying the needs they satisfy particularly well. I limit myself to the JVM languages that are free and open source. The closed source, commercial world, surprisingly, has few comparable offerings. The one standout is Cold Fusion Markup Language, which is part of Adobe's Cold Fusion Web application development environment.

Technologists differ on what exactly is a scripting language. In its narrowest definition, it's a language that enables the developer to write quick programs. These programs are generally interpreted or semicompiled, rather than compiled in the traditional manner. In choosing the languages for this review, I used a broader definition, which is any JVM language that is simpler to code in than Java. Some are compiled, others are semicompiled, but all are suitable for rapid development. The languages I've focused on are Groovy, JRuby, Fantom, Jython, and Scala. There are a few other candidates, namely Clojure, JavaFX, and NetRexx, which I cover briefly at the end.

The JVM scripting languages today naturally divide into two groups based on their rate of adoption. Groovy and JRuby fall into the popular camp, while the others are niche players -- that is, they appeal to a small community at present. It's important to note, however, that both Groovy and JRuby were also niche players two years ago, so there is no reason to believe that a niche language is relegated permanently to the margins. I believe that the likelihood of emergence favors Scala, then Fantom, and finally Jython. As I explain later, I think Jython's moment in the sun has probably come and gone.

JVM scripting language No. 1: Groovy -- powerful, high-level, enterprise-friendly

JVM scripting language No. 2: JRuby -- a better Ruby than Ruby?

JVM scripting language No. 3: Scala -- fast, multiparadigm programming

JVM scripting language No. 4: Fantom -- Java and .Net plus performance

JVM scripting language No. 5: Jython -- Python for the JVM

Clojure, JavaFX, and NetRexx

Top scripting languages on the JVM

  Groovy JRuby Scala Fantom Jython
Style / typing OO / Dynamic OO / Dynamic OO, Functional / Static OO / Static OO / Dynamic
Modeled on Java Ruby N/A N/A Python
Execution Compiled Compiled, Interpreted Compiled Semicompiled Compiled
Platform(s) JVM JVM JVM JVM, .Net CLR JVM
Integration with Java Excellent Excellent Excellent Fair Excellent
Execution speed Fair Fair Excellent Very Good Slow
Tool support Extensive Fair Extensive Little Little
1 2 3 4 5 6 Page 1
Page 1 of 6