In this article you will learn about what is JVM, JRE, JDK and JIT in Java. Also about the differences between them.
Java Development Kit (JDK):is a software development environment used for developing Java applications. It includes the Java Runtime Environment (JRE), an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc) and other tools needed in Java development.
Java Runtime Environment (JRE):is part of the Java Development Kit (JDK), but can be downloaded separately. JRE was originally developed by Sun Microsystems Inc., a wholly-owned subsidiary of Oracle Corporation.
Java Virtual Machine (JVM):is an abstract machine. It is a specification that provides runtime environment in which java bytecode can be executed.VMs are available for many hardware and software platforms (i.e. JVM is platform dependent).Its implementation is known as JRE (Java Runtime Environment).
Just In Time compiler (JIT):is part of JVM that optimizes byte code to machine specific language compilation by compiling similar byte codes at the same time, hence reducing overall time taken for the compilation of byte code to machine specific language.
JDK contains JRE, JRE contains JVM, JVM contains JIT.Hence once we install JDK all other components gets installed
Simply we can say,
Java Developer Kit(JDK) contains tools needed to develop the Java programs, and JRE to run the programs. The tools include compiler (javac.exe), Java application launcher (java.exe), Appletviewer etc. Compiler converts java code into byte code. Java application launcher opens a JRE, loads the class, and invokes its main method. You need JDK, if at all you want to write your own programs, and to compile them. For running java programs, JRE is sufficient.
JRE is targeted for execution of Java files. i.e. JRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries. JDK is mainly targeted for java development.
The Just-In-Time (JIT) compiler is a component of the Java™ Runtime Environment that improves the performance of Java applications at run time.
This article is contributed by Sibin. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above