The CLR is generally not used as a VirtualMachine (though there exist VMs which execute CLR bytecode). Instead, when a .NET program is run, DynamicCompilation from the CLR bytecode to the native code of the underyling processor occurs.

Same with Java. But how the code is 'executed' is secondary, the important point is the type safety.

More generically, pretty much any of the VMs that popular scripting languages run on, including Python, Perl, and the new Parrot VM.