I've never understood why a virtual machine is, in any way, better than an intermediate language that can be compiled to native code for a particular platform.
Garbage collection. GC makes people angry for some reason, but I'm personally happy not having to malloc memory all the time. Also hardware and OS independence. It's nice to just open a file and read and write from it, and not really care what the OS is, or what filesystem it's using, and so forth. Same with inputs and outputs, memory management, thread handling, etc. You could add all of these things to your hypothetical intermediate language, but in the end you'd just be recreating the JVM.
A fair number of languages besides Java run on the JVM. Others have been "ported" onto the JVM. http://en.wikipedia.org/wiki/List_of_JVM_languages
I think the JVM is here to stay. We're moving more and more towards high-level, interpreted languages. Hardware is fast enough, and with things like JIT there's no real performance loss anyway. Why not write on a JVM, which does so much for you?