The Adventurous Developer’s Guide to JVM Languages
“What I really care about is the Java Virtual Machine as a concept, because that is the thing that ties it all together; it’s the thing that makes Java the language possible; it’s the thing that makes things work on all kinds of different platforms; and it makes all kinds of languages able to coexist.”
-James Gosling, creator of Java
***
Sometimes you wake up in the morning and you feel like having an adventurous coding day, right?
As James Gosling above states, the ability for various coding languages to coexist is one of the best things about the excellent engineering behind the JVM–and if the thought of spending a little time outside of the Java you know so well gets your geeky brain percolating, then why not explore some of the 50+ JVM languages that we’ve seen emerge since the mid-1990s?
In “The Adventurous Developer’s Guide to JVM Languages”, we don our explorers’ hats as we test out eight languages with an HTTP server example that you can find on Github. We also pinged the experts for this report and included commentary from 5 of the actual creators or project leads of the languages we look at. James Gosling & Rich Hickey, we’re looking at you for the next report ;)
Here’s a kind of report “set list” for what you can expect to see. Warning, at 50+ total pages, you might find yourself spending more time with this report than originally intended!
- Introduction & History – Intro, JVM languages timeline, where on Github to see our code examples
- Java 8 – Getting started with Java 8, a bit about Lambdas, functional interfaces in JDK8, defender methods and commentary by our report experts
- Scala – Getting started with Scala, main differences from Java, case classes and pattern matching and fun with strings
- Groovy – Getting started with Groovy, closures, collections, static typing, commentary by Guillaume Laforge, Cedric Champeau, Andres Almiray (Project lead and senior committers of Groovy)
- Fantom – Getting started with Fantom, pods/scripts, standard library & elegance, interop, static & dynamic typing, immutability & concurrency, functions & closures, commentary by Brian and Andy Frank (creators of Fantom)
- Clojure – Getting started with Clojure, IDE support, Read-Eval Print Loop (REPL), thinking about functional programming, Java interoperability, concurrency and order of methods
- Ceylon – Getting started with Ceylon, how it’s built on JBoss, Java interoperability and commentary by Gavin King (creator of Ceylon)
- Kotlin – Getting started with Kotlin, how to code elegantly, writing safe code (unless you don’t want to!), functions and documentation, and commentary by Andrey Bretslav (creator of Kotlin)
- Xtend – Getting started with Xtend, translating Xtend code to Java code, what you can do with Xtend that you cannot in Java, code snippets, Java interoperability and commentary by Sven Efftinge (creator of Xtend)
- Overall Summary (TL;DR) - the ZeroTurnaround take and round up of each of the eight JVM languages covered.
We hope you love our report. It look a lot of time, sweat and brains, so let us know what you think via Twitter @Rebel_Labs!
p.s. Intentional typos can be found in this report. Be the first to email your highlighted corrections to us at labs@zeroturnaround.com and you can win something, like a free copy of JRebel (or WAT, an all-expenses paid trip to Ireland)?
p.p.s. sharing this page with other geeks is cool. You should do it!
-
john