Difference between JDK, JRE and JVM
With Java programming language, the three terms i.e. JDK, JRE and JVM will always be there to understand the difference between them. If you area Java developer, it is very important to know about these core concepts of Java language. Once, if you understand these things, then it would be quite easy for you to visualize things in logical manner.
So let’s begin to understand each term one by one in order to know the actual role of the three concepts.
JDK (Java Development Kit)
JDK is abbreviation of Java Development kit which is the core component of Java environment. It is a kit that is the combination of developing tools to develop Java programs and JRE (Java Runtime Environment) to run the programs.
- The developing tools includes compiler (javac.exe), Java application launcher (java.exe), Applet-viewer, etc.
- Compiler converts Java programs into byte code.
- Java application launcher opens JRE, loads the class, and invokes its main method.
- JRE is used to run the Java programs.
JDK is necessary for writing and compiling the Java program. But for running Java program, JRE is sufficient. As JRE is targeted for execution of Java files i.e. JRE = JVM + Java Packages Classes (such as util, lang, math, awt, swing, etc.) + Runtime libraries.
JDK is mainly targeted for Java development, i.e. you can create Java file (with the help of Java packages), compile a Java file, and run a Java file (with the help of JRE).
JDK is platform specific software and that is why we have separate installers for Windows, Mac and UNIX systems. We can say that JDK is superset of JRE since it contains JRE with Java compiler, debugger and core classes. Current version of JDK is 1.7 also known as Java 7.
JRE (Java Runtime Environment)
JRE is the abbreviation of Java Runtime Environment that is used to provide the runtime environment to the Java programs. JRE is smaller than JDK, so it needs less disk space and it is so because JRE does not contains and development tools such as compiler, debugger, etc.
JRE contains JVM, set of class libraries, and other supporting files. Actually, JRE is the implementation of JVM, as JVM runs the program by using class libraries and other files provided in JRE. If you only want to run any Java program, you should have JRE installed in the system, but we don’t need JDK to run any Java program.
JVM (Java Virtual Machine)
JVM is the abbreviation of Java Virtual Machine which is considered as the heart of Java programming language. It is also an abstract machine. It is a specification that provides the runtime environment in which Java byte code can be executed.
A Java program execution uses both, compilation and interpretation. Java programs are compiled into machine language, but it is a machine language for a computer that is, virtual and doesn’t really exists. This so-called “virtual” computer is known as the Java virtual machine.
The JVM is called as “virtual”, because the machine interface that does not depend on the underlying operating system and machine hardware architecture. This independence from hardware and operating system is a corner-stone of “Write Once Run Anywhere (WORA)” value of Java program.
The machine language for the JVM (Java Virtual Machine) is called the Java byte code.”
As we all know that, when a Java file is compiled, output is not an “.exe” file but it’s a “.class” file, and .class file consists of Java byte code which is understandable by JVM. It interprets the byte code into machine code depending upon the underlying operating system and hardware combination. It is responsible for all the things like garbage collection, array bounds checking, security, memory management, etc. JVM is also customizable and we use Java option to customize it, for example minimum or maximum memory to JVM.
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 on. They can too differ in implementation especially 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.
JVMs are available for many hardware and software platforms. JVM, JRE and JDK are platform dependent because configuration of each OS differs. But, Java is platform independent.”
JDK vs JRE vs JVM
JIT (Just in Time Compiler)
JIT is the name of the compiler that is a part of JVM. It is an advance compiler which is used by JVM to optimize byte code into machine specific language by compiling similar byte code at same time and thus reduces the overall execution time. It also performs other optimizations such as in-lining function.
Thank you for your patience 🙂
The one, who is learning Java language, should know the complete process of JVM, that what are the requirements such as compiler, how to compile, how to execute, what are the steps of execution, etc. to understand and take the feel of the more…