JDK ( Java Development Kit) contains tools that are necessary to develop java application , its intended for the java developers and developed by ORACLE. On the other hand JVM(Java Virtual Machine) executes the java program's bytecode(.class files) , the byte code is generated after the compiler compiles the java programs. JVM interprets the bytecode in to the machine code depending on operation system of the machine and the hardware combination.
Another aspect worth mentioning:
JDK (java development kit):
You will need it for development purposes like the name suggest.
For example: a software company will have JDK install in their computer because they will need to develop new software which involves compiling and running their Java programs as well.
So we can say that JDK = JRE + JVM.
JRE (java run-time environment):
It's needed to run Java programs. You can't compile Java programs with it .
For example: a regular computer user who wants to run some online games then will need JRE in his system to run Java programs.
JVM (java virtual machine):
As you might know it run the bytecodes. It make Java platform independent because it executes the .class file which you get after you compile the Java program regardless of whether you compile it on Windows, Mac or Linux.
Conclusion:
If you are a Java programmer you will need JDK in your system and this package will include JRE and JVM as well but if you are normal user who like to play online games then you will only need JRE and this package will not have JDK in it.
Regards
JDK= Java Development Kit means the standard collection of classes you use when developing java SE application
JVM=Java Virtual Machine which is the container that runs your java application compiled to bytecode