InvokeDynamic is a new JVM instruction that allows method calls to be dynamically dispatched at runtime based on the actual object type, enabling just-in-time compilation optimizations for any language by making non-Java call sites visible to the HotSpot JVM compiler. It uses bootstrap methods, call sites holding method handle chains, and switch points to dynamically bind calls based on guard conditions checking the actual object type and rebinding if needed.