A virtual-machine is software emulating complete computer hardware. There are various applications that supply this functionality. **Note**: For questions on the Java VM, use the specific tag [jvm], and for the Android virtual machine, use the tag [dalvik]. For other questions on implementation details of other kinds of VMs like interpreters, automata or Turing-machines, use the tag [vm-implementation]. ONLY QUESTIONS ABOUT PROGRAMMING ARE ON-TOPIC.