The JRE is a java distribution for running java programs. It does not contain the development tools needed to compile and debug java programs.
The JDK is a java distribution for both running and developing java programs. In includes the deveopment tools.
The JVM is part of both the JDK and the JRE. It is the 'engine' that executes java bytecodes, performs garbage collection and does just-in-time compilation.
HTH