JVM, JRE and JDK
Java Virtual Machine is a program that runs precompiled Java programs, which means JVM executes .class files (bytecode) and produces output. The JVM is written for each platform supported by Java. Included in the Java Runtime Environment (JRE). The Oracle JVM is written in the C programming language. There are many JVM implementations developed by different organizations. They may somewhat differ in performance, reliability, speed and so. They can too differ in implementation specially in those features where Java specification does not mention implementation details of the feature. Garbage collection is the nice example which is left on vendor’s choice and Java specification does not provide any implementation details.
JRE is an implementation of the JVM which actually executes Java programs. It includes the JVM , core libraries and other additional components to run applications and applets written in Java. Java Runtime Environment is a must install on machine in order to execute precompiled Java Programs. JRE is smaller than the JDK so it needs less Disk space and it is so, because JRE does not contain java compiler and other software tools needed to develop Java programs.
Java Development Kit is needed for developing java applications. It is a bundle of software that are used to develop Java based applications. It includes the JRE, set of API classes, Java compiler, Webstart and additional files needed to write Java applets and applications.