A Virtual Machine is an abstract computing machine that provides a runtime environment in which bytecode can be executed.
The code is compiled to bytecode, which is a binary format that is independent of the hardware and operating system. The bytecode is stored in a file with the .class/.pyc
extension. The VM reads the bytecode and executes it on the host platform.
In the context of Java, a Java Virtual Machine (JVM) is an abstract computing machine that provides a runtime environment in which Java bytecode can be executed.
From the OS perspective, Virtualization is a technique that allows multiple operating systems to run on a single physical machine.