Before you start coding Java programs, it's important to have clear understanding of JVM, JRE and JDK. People easily get confused among these three. So let's have a look on JVM, JRE and JDK.
A Java Virtual Machine (JVM) is an abstract computing machine that interprets & runs Java Bytecode. JVM is called "virtual" because it does not exist physically, the bytecode that Java source is compiled to is practically machine code for this virtual machine. It is a piece of software on the top of real hardware platform. JVM is responsible to make Java platform independent.
Java Runtime Environment (JRE) combines JVM, class libraries and other runtime libraries.
JRE provides runtime environment to Java applications.If you want to run any Java application on your system, you must have JRE installed in your system.
In simple words JRE = JVM + class libraries
Java Development Kit (JDK) includes JRE and Java development tools. To start Java development you need to install JDK. It provides Java compiler, Java disassembler, Java debugger and other tools required for Java development.
Basic tools what JDK provides are as following java, javac, javap, jdb, javadoc, jar, apt, appletviewer. They are the tools you use to create and build applications. JDK also provides so many other tools for security and other purposes.
In simple words JDK = JRE + Development tools