A JVM (
Java Virtual Machine) is an imaginary (theoretical) machine that executes Java bytecodes.
A JRE (Java Runtime Environment) is a software implementation of a JVM and all the standard Java libraries, and other bits and pieces that are needed to make the thing actually work.
A JDK (Java Developer's Kit) or J2SDK (Java 2 Software Developer's Kit) are two different names for the same thing: a JRE plus tools like the Java compiler, debugger, and other things needed for basic Java development.