Unfortunately the JVM is optimized for Java, rather than for computer languages in general. This is a problem because you can't just say execute function 'foo' on object bar, you have to look up the type of bar to find foo and then execute it.
Clojure gets around this by having all its functions implement a standard interface, and Java 7 has sorta seen the light (still no closures, but they can kind be emulated).
JRuby just suffers.