It's important to differentiate "Java" from the "JVM". Java is a programming language that gets compiled to bytecodes, and the JVM is an execution environment that runs bytecodes. (There is some java-language-ish stuff in the bytecode spec, but for the most part you can treat them separately). In my opinion, Java is a clumsy language but the JVM is awesome. Static typing and lack of first-class functions or easy data…
What is the advantage of using Rhino on JVM against using native Ruby or Python? In Java, at least I know I will be very confortable doing automatic refactorings with Eclipse, which is the biggest advantage of Java against these other languages. Having coded a tool in Ruby with some good testing coverage, I still don't feel as safe to refactor as I was using Java.