prose :: and :: conz


Why a JVM on a VM?

This morning during my workout-procrastinating flip through my twitter feed, I came across Thoughts on Five Years of Emerging Languages. It is a fairly quick read which takes an interesting angle on the rather pedestrian set of language features implemented in Go as outlined in this article. It was certainly thought-provoking and has me reconsidering my disregard for Go. But that is a topic for another blog post.

Shortly after I retweeted that article, my mutual follower Gerbrand van Dieijen pointed out something that didn’t immediately jump out at me during my first reading:

That is an outstanding question. I’ve long believed in the value of hijacking the JVM despite the impedance mismatches languages like Scala and Clojure encounter. But for most of the past year all of the code I’ve shipped has been deployed in AWS on a VM. What’s the value in slapping a VM on top of that? All I need is something that runs on Linux that I can ship in Docker.

Recent developments in the Scala community certainly show the cost of running on the JVM. Typesafe’s plan for Scala 2.12 focuses on Java 8 interoperability. This of course has lead to the infamous forks of the Scala compiler. I’d wager a handsome bet this wouldn’t have happened if we weren’t paying the technical debt of our alien invasion of the Java virtual machine.

Neither Gerbrand or I are about to abandon the JVM, of course…

Although I’m beginning to understand what Brian McKenna meant by “mass delusion” of the value of the JVM, abandoning it would certainly be throwing the baby out with the bath water. One nice thing about the JVM in particular is getting to leverage all of those extant libraries. I’m not interested in a new ecosystem where everything has to be rebuilt like in Go. However, any well-established languages outside the JVM garner much more of my attention now. Haskell, anyone?

Tagged with: scala (41), java (22), web-development (19), polyglot (7)