MVM from a quality viewpoint
My bailiwick here is Quality, so I just want to toss in a comment on the MVM subject from this point of view.
Let me start by saying MVM is an interesting idea ... I've heard the MVM give his presentation to the Performance group, of which Chet is a part. He's certainly done some really good work to solve some really sticky problems with how you'd write a Java VM that would share applications.
Chet mentioned in his posting the issue I have, from a Quality perspective that is. Namely: If that MVM process were to crash, it would take down all Java applications running on the system. All.
This is so obviously a problem, that I'm suprised with the emphaticness of the people pushing for MVM. If we put MVM into the platform your complaints would turn from "it's slow" to "it crashes all my applications". No matter how stable Java has become, it still has bugs, and there's still lots of ways to crash it. That won't change under MVM.
Which means expending effort on ways to isolate crashes in the native code. It's not just JNI calls that are at issue, there's quite a bit more native code lying around such as (ahem) hotspot, the garbage collector, etc. All of that can crash. As some of the commenters in Chet's thread pointed out, there are C level techniques for catching that level of crash and doing something like turning it into a Java exception. That would help in some cases, but for example the garbage collector generally stops the VM so it can collect garbage. What if the garbage collector crashes while the VM is stopped?
In short there's a lot more research to be done into this idea.
UPDATE: I suppose I should mention these disclaimers ... I haven't actually run mvm ... it's been awhile since I looked at any mvm docs, maybe the researcher has already addressed some of the problems I mentioned ... and finally, while I work in the Quality team, I have no say in whether mvm gets "in" or not, this is purely my opinion.