“Virtual Machine” seems to have two distinct meanings:
- Sysadmins deal with “system” virtual machines, i.e. guest operating systems running on a VM host.
- The application programmer generally deals with a “process” virtual machine, such as
- the Java Virtual Machine
- the Common Language Runtime (CLR) for .NET
The “process” virtual machine may be running on an operating system which (in turn) may be running as a “system” virtual machine on a VM host. So, in some sense when we put a .NET application on Windows on Hyper-V (or a Java application on Linux on ESXi) we are actually virtualizing twice. The question arises as to whether we can actually virtualize only once, by putting the CLR or the JVM directly on the VM Host. In this action of course we remove the operating system.