JDK, JRE, and JVM are the three most important keywords which you often hear with Java Programming Language and even many of the Java Developers fails to get the difference between them or they think they are the same. At the end of this Java article, we will know the answers for the below questions.
Once you understood what is JDK, JRE, and JVM, it will be much easy to visualize things better
1. What is JVM in Java ?
JVM is an abstract machine which provides a specification for the Runtime Environment where the bytecode will be executed. The compiled Java code (.class file) act as the input for the JVM as it can understand Java bytecode only. JVM itself is actually platform dependent. It interprets the bytecode into machine level language which can then be executed by any JVM implementation.
JVM has the below three major components.
- Class Loader Subsystem – Loading (loads the required class/jar files), Linking (assigning references and verification) and Initialization (initializing static variable and execution of static block )
- Runtime Data Area – Provides memory for all variables, operators etc.
- Execution Engine – Performs the interpretation and execution
JVM = Class Loader Subsystem + Runtime Data Area + Execution Engine
2. What is JIT Compiler in Java ?
Before knowing about JIT Compiler we need to have some basic knowledge about how an Interpreter works in Java. Interpreter Reads the bytecode interprets it and executes it one by one. The interpreter interprets the Java bytecode faster but executes slowly. The disadvantage of an interpreter is that when one method is called multiple times,each and every time interpretation is required.
JIT Compiler helps us to overcome the disadvantage of the Interpreter ( the single method is interpreted multiple times for multiple calls ), The Execution Engine uses Interpreter to read and interprets the bytecode but when it came across repeated code it uses JIT compiler which compiles the entire Java bytecode once and changes it to native code. This native code will be used directly from next time onwards for repeated method calls.
3. What is JRE in Java ?
Java Runtime Environment is typically the implementation of a JVM. It consists of JVM, class libraries (rt.jar), and other supporting files(java,javaw etc) required for execution. Actually, JVM runs the program, it uses the libraries provided in the JRE. It doesn’t contain development tools such as compiler(javac), disassembler(javap), debugger(jdb) etc. In simple terms, we can say JRE is equal to JVM and libraries
JRE = JVM + Libraries
4. What is JDK in Java ?
Java Developer Kit contains tools which a Java developer needed to develop the Java programs and JRE to run the program. Suppose if you want to write your own code, compile and run then only JDK is required. Just for running the already compiled code then JRE alone is sufficient.
In simple terms we can say that JDK is equal to JRE and Development Tools. The tools include Java Compiler (javac), Java Disassembler (Javap), Java Debugger (jdb) , Java HeaderFile Generator (javah), Documentation (javadoc) and many others.