We can differentiate between the three using a very nice diagrammatic approach collected from the internet. Here is a brief description on the three.
|JVM (Java Virtual Machine) is an abstract machine. It is a specification that provides runtime environment in which java bytecode can be executed.
The JVM performs following main tasks:
JRE : JRE consistes of JVM and other libraries like rt.jar etc.
JDK: Along with JVM and JRE , JDK consists of the actual development tools such as javac and java.
The diagrammatic approach shown in http://www.javatpoint.com/difference-between-jdk-jre-and-jvm link is very helpful.