Java Virtual Machine (JVM)
The Java Virtual machine (JVM) is
the virtual machine that run the Java bytecodes. The JVM doesn't understand
Java source code.
You compile your *.java files to
obtain *.class files that contain
the bytecodes understandable by the JVM.
JVM makes Java to be a "portable language" (write once, run anywhere).
There are specific implementations of the JVM for different systems
(Windows, Linux, MacOS) the aim is that with the same bytecodes they all give
the same results.
Java Runtime Environment (JRE)
The Java Runtime Environment
(JRE) provides the libraries, the Java Virtual Machine, and other components to
run applets and applications written in the Java programming language. The JRE
does not contain tools and utilities such as compilers or debuggers for
developing applets and applications. If we want only to execute the
programs written by others, then JRE alone
will be sufficient.
Java Development Kit (JDK)
The JDK is a superset of the JRE,
and contains everything that is in the JRE, plus tools such as the compilers
and debuggers necessary for developing applets and applications.