The Java Virtual Machine (JVM) was designed for Java, a statically typed language. This paper examines the workloads imposed on the JVM by dynamically typed languages, particularly Clojure, Python, and Ruby. Potential optimizations and benchmarking techniques are discussed.
The paper is relatively short: 10 pages including one page of bibliography and four pages of figures. While none of the results struck me as very surprising, they do appear rigorous and well studied.
Those looking to implement or optimize a dynamically typed language compiling to the JVM may find this paper interesting.