Java Memory Model

Oracle has two major Java Virtual Machine (JVM) implementations, the Java HotSpot VM and the Oracle JRockit JVM. In the short-to-medium term, both will continue as strategic JVMs with active investment. Over time, Oracle plans to converge the functionality and code bases of these JVMs.
HotSpot is an “ergonomic” JVM. Based upon the platform configuration, it will select a compiler, Java heap configuration, and garbage collector that produce good to excellent performance for most applications. Under special circumstances, however, specific tuning may be required to get the best possible performance. The resources collected here will help the reader understand and tune the Java HotSpot Virtual Machine.

The definition of what exactly is a Java Virtual Machine is stated in the Java Virtual Machine Specification

The JVM is by definition a virtual machine, i. e. a software machine that simulates what a real machine does. Like a real machine, it has an instruction set, a virtual computer architecture and an execution model. It is capable of running code written with this virtual instruction set, pretty much like a real machine can run machine code.

HotSpot is an an implementation of the JVM concept. It was originally developed by Sun and now it is owned by Oracle. There are other implementations of the JVM specification, like JRockit, IBM J9, among many others.

See List of Java Virtual Machine Implementations

The OpenJDK is a project under which an opensource implementation of HotSpot (and many other pieces of the JDK e.g compiler, APIs, tools, etc) is developed.

Good Article
https://www.oracle.com/technetwork/java/whitepaper-135217.html