The JVM is a component that interprets Java byte code and runs the appropriate native instructions. Most JVMs now can also compile byte code to native code and execute the compiled code. They choose the parts of the program most likely to yield performance gains, usually things that are repeated a lot. You start the JVM with the "java" command on the command line.
The JRE is the JVM plus a bunch of supporting libraries and native modules for the platform, eg DLLs on Windows. You need the whole JRE to run programs.
The JDK or SDK is the JRE plus all the development tools such as the compiler, JavaDoc and many other things you may or may not ever need.
Does that answer match your question?
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi