A process virtual machine (VM) presents an application binary interface (ABI) to an application process. It translates the operating system and user-level instructions to another one as shown below. To achieve cross-platform portability, the ABI does not correspond to any specific machine. Two common examples of this approach are the Java VM architecture and the Microsoft Common Language Infrastructure, which is the foundation of the .NET framework.
Process virtual machines. (William Stallings, (2012)