JVM is an acronym for Java Virtual Machine, it is an abstract machine which provides the runtime environment in which java bytecode can be executed.
JVMs are available for many hardware and software platforms (so JVM is plateform dependent).
JRE stands for Java Runtime Environment. It is the implementation of JVM and physically exists.
JDK is an acronym for Java Development Kit. It physically exists. It contains JRE + development tools.