A virtual machine provides services that don’t exist, such as the Java Virtual Machine, which provides things like accurate timers and locks that may not be easily available on certain hardware. An emulator is a software duplicate of hardware that exists.
Virtual machines can be called as an advanced Emulators.