A Java source file has an extension of.java.
This file is compiled to create a .class file which is also called bytecode.
The bytecode is portable and can be executed (using a JVM) on any machine. This is why Java is said to be a WORA (Write Once, Run anywhere) platform.
JVM stands for Java Virtual Machine. It is used to execute the bytecode (created after compiling a Java program).
JDK stands for Java Development kit.
It is used by developers to develop (and test) Java applications.
JVM is a part of the JDK.
JRE stands for Java Runtime Environment.
It is used to run/execute applications in Java (that were built using the JDK). It is installed on most machines (and is used by people world over who use applications made in Java).
JVM is a part of JRE which is a part of JDK.