Java virtual machine English is a fictional computer device simulated by specific software for each platform that executes programs compiled into Java bytecode. The device is simulated by a specific software for each platform (machines or OS) which enables applications of Java to produce the same results regardless of the platform as it is provided with the Java virtual machine proper.
Overview of Java Virtual Machine
Java Virtual Machine can run other languages than Java language, as long as a compiler transforms the expressions of that other language in a series of binary bytes in a format of a java class.
Java Virtual Machine executes instructions provided by the bytecode contained in the java class by following the model of the stack – each level of the stack contains data specific to each operation. Java Virtual Machine is distributed and compiled with libraries that implement Java API.
---

Specification from Sun describes the functions and properties that must comply with all Java virtual machines. Moreover, most of these machines have a garbage collector, the concept is mentioned in the specification, but not formally mandatory or a compiler on the fly.
Java HotSpot Virtual Machine : Proprietary Java Virtual Machine
This is the Java Virtual Machine which is most commonly used. It was produced by Sun, it is now owned by Oracle. Java Virtual Machine is free.
In November 11, 2006, Sun Microsystems released the source code of their HotSpot Java Virtual Machine and its compiler licensed under GNU GPL.
Among other Java Virtual Machine, JRockit was originally developed by BEA and now by Oracle Corporation. It is mainly used for Weblogic. Apple has own Java Virtual Machine for their Mac OS. Dalvik Virtual Machine developed by Google for Android.
There are more Java Virtual Machine softwares, most are free of cost and is Open Source.
