Pre-conj Prep: Ghadi Shayban

Free Beginner Workshop

From OO to Clojure Workshop!

Watch my free workshop to help you learn Clojure faster and shift your paradigm to functional.

Talk: JVM Creature Comforts

Ghadi Shayban's talk at the conj is about the Java Virtual Machine. In case you don't know, the JVM was originally designed by James Gosling and originally only hosted Java. Recently, the JVM has become the target platform for some very popular languages, including Groovy, JRuby, Scala, and of course Clojure.

Background

I always recommend studying up on history. James Gosling gave a talk a while ago about How the JVM Spec Came To Be. It's a personal history that chronicles the experiences that led up to the design decisions that are embedded in the JVM today. A good introduction to how the JVM method invocation works in bytecode (very basically) is Charles Nutter's keynote at JAX 2012. It's also a good introduction to invokedynamic and Method Handles, also mentioned in the talk description.

Briefly, invokedynamic is a way to dynamically dispatch based on language-specific semantics in a fast way. Method Handles are a way to refer to a method directly as first-class values. Some other things mentioned: value types are a proposal to support immutable aggregate types directly in Java. classdynamic is an idea for instantiating patterns of classes.

Why it matters

The JVM is evolving. The growing number of languages that compile to the JVM are influencing that evolution. invokedynamic is an example of such an influence. It is used extensively in JRuby and Nashorn (the new Javascript implementation on the JVM). The JVM is shaping up to be an even better host than when Rich Hickey chose to target it.

About Ghadi Shayban

Twitter - Github

Ghadi Shayban is an accomplished pianist. Check out this and this.