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. It is a specification.
JVMs are available for many hardware and software platforms (so JVM is platform dependent).
JRE stands for Java Runtime Environment. It is the implementation of JVM.
JDK is an acronym for Java Development Kit. It physically exists. It contains JRE + development tools.