The difference between JDK, JRE, and JVM is one of the popular interview questions. You might also be asked to explain JDK vs JRE vs JVM.
Table of Contents
Difference between JDK, JRE, and JVM
JDK, JRE, and JVM are core concepts of Java programming language. We don’t use these concepts in programming. But, as a Java developer, we should know about them.
Java Development Kit aka JDK is the core component of Java Environment and provides all the tools, executables, and binaries required to compile, debug, and execute a Java Program.
JDK is a platform-specific software and that’s why we have separate installers for Windows, Mac, and Unix systems.
We can say that JDK is the superset of JRE since it contains JRE with Java compiler, debugger, and core classes.
JVM is the heart of Java programming language. When we execute a Java program, JVM is responsible for converting the byte code to the machine-specific code.
JVM is also platform-dependent and provides core java functions such as memory management, garbage collection, security, etc.
JVM is customizable and we can use java options to customize it. For example, allocating minimum and maximum memory to JVM.
JVM is called virtual because it provides an interface that does not depend on the underlying operating system and machine hardware.
This independence from hardware and the operating system makes java program write-once-run-anywhere.
JRE is the implementation of JVM. It provides a platform to execute java programs. JRE consists of JVM, Java binaries, and other classes to execute any program successfully.
JRE doesn’t contain any development tools such as Java compiler, debugger, JShell, etc.
If you just want to execute a java program, you can install only JRE. You don’t need JDK because there is no development or compilation of java source code is required.
Now that we have a basic understanding of JDK, JVM, and JRE, let’s look into the difference between them.
JDK vs JRE vs JVM
Let’s look at some of the important differences between JDK, JRE, and JVM.
- JDK is for development purpose whereas JRE is for running the java programs.
- JDK and JRE both contains JVM so that we can run our java program.
- JVM is the heart of java programming language and provides platform independence.
Just-in-time Compiler (JIT)
Sometimes you will find JIT alongside JVM, JDK, and JRE in textbooks. JIT is part of the JVM that optimizes the process of converting byte code to machine-specific language. It compiles similar byte codes at the same time and reduces the overall time taken for the compilation of byte code to machine-specific language.