Invokedynamic was a feature first introduced in Java 7, as a way to make the JVM a better target for non-Java languages. Since then, it has seen wide use and now supports key features in dozens of languages. And with Java 8, we saw the first use of invokedynamic for Java, to support the new Lambda closures we all know and love. But what is this invokedynamic thing anyway? This talk will provide an overview of how the JVM works and why invokedynamic is such a powerful addition. Charles will go through some basics of JVM bytecode and method dispatch, and then walk through a couple invokedynamic samples. By the end of this talk, attendees might not be ready to make their own language...but perhaps they will be tempted.