JDK means Java Development Kit which contains tools and programs needed to develop the Java programs, and JRE to run the programs. The tools include compiler (javac.exe), Java application launcher (java.exe), Appletviewer, etc… Compiler converts java code into byte code. Java application launcher opens a JRE, loads the class, and invokes its main method.
Now coming to JVM i.e. Java Virtual Machine, as I said when we compile a Java file, output is a ‘.class’ file which consists of Java byte codes which are understandable by JVM. Java Virtual Machine interprets the byte code into the machine code depending upon the underlying operating system and hardware combination.