• Java
    • JAXB Tutorial
      • What is JAXB
      • JAXB Marshalling Example
      • JAXB UnMarshalling Example
  • Spring Tutorial
    • Spring Core Tutorial
    • Spring MVC Tutorial
      • Quick Start
        • Flow Diagram
        • Hello World Example
        • Form Handling Example
      • Handler Mapping
        • BeanNameUrlHandlerMapping
        • ControllerClassNameHandlerMapping
        • SimpleUrlHandlerMapping
      • Validation & Exception Handling
        • Validation+Annotations
        • Validation+ResourceBundle
        • @ExceptionHandler
        • @ControllerAdvice
        • Custom Exception Handling
      • Form Tag Library
        • Textbox Example
        • TextArea Example
        • Password Example
        • Dropdown Box Example
        • Checkboxes Example
        • Radiobuttons Example
        • HiddenValue Example
      • Misc
        • Change Config file name
    • Spring Boot Tutorial
  • Hibernate Tutorial
  • REST Tutorial
    • JAX-RS REST @PathParam Example
    • JAX-RS REST @QueryParam Example
    • JAX-RS REST @DefaultValue Example
    • JAX-RS REST @Context Example
    • JAX-RS REST @MatrixParam Example
    • JAX-RS REST @FormParam Example
    • JAX-RS REST @Produces Example
    • JAX-RS REST @Consumes Example
    • JAX-RS REST @Produces both XML and JSON Example
    • JAX-RS REST @Consumes both XML and JSON Example
  • Miscellaneous
    • JSON Parser
      • Read a JSON file
      • Write JSON object to File
      • Read / Write JSON using GSON
      • Java Object to JSON using JAXB
    • CSV Parser
      • Read / Write CSV file
      • Read/Parse/Write CSV File – OpenCSV
      • Export data into a CSV File
      • CsvToBean and BeanToCsv – OpenCSV

JavaInterviewPoint

Java Development Tutorials

Difference between JDK, JRE and JVM

February 15, 2016 by javainterviewpoint Leave a Comment

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.

  1. What is JVM in Java ?
  2. What is JIT Compiler in Java?
  3. What is JRE in Java ?
  4. What is JDK in Java ?

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.

  1. 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 )
  2. Runtime Data Area – Provides memory for all variables, operators etc. 
  3. 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.

JDK = JRE + Development Tools

Other interesting articles which you may like …

  • Object and Object Class in Java
  • Difference between JDK, JRE and JVM
  • What is a Class in Java with Example
  • How to open .class file in Java
  • How to Set Classpath for Java in Windows
  • ClassNotFoundException Vs NoClassDefFoundError
  • How HashMap works in Java
  • How to make a class Immutable in Java
  • Polymorphism in Java – Method Overloading and Overriding
  • Types of polymorphism in Java
  • Types of Inheritance in Java
  • Java does not supports Multiple Inheritance Diamond Problem?

Filed Under: Core Java, Java Tagged With: Difference between, JDK, JRE, JVM

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Java Basics

  • JVM Architecture
  • Object in Java
  • Class in Java
  • How to Set Classpath for Java in Windows
  • Components of JDK
  • Decompiling a class file
  • Use of Class.forName in java
  • Use Class.forName in SQL JDBC

Oops Concepts

  • Inheritance in Java
  • Types of Inheritance in Java
  • Single Inheritance in Java
  • Multiple Inheritance in Java
  • Multilevel Inheritance in Java
  • Hierarchical Inheritance in Java
  • Hybrid Inheritance in Java
  • Polymorphism in Java – Method Overloading and Overriding
  • Types of Polymorphism in java
  • Method Overriding in Java
  • Can we Overload static methods in Java
  • Can we Override static methods in Java
  • Java Constructor Overloading
  • Java Method Overloading Example
  • Encapsulation in Java with Example
  • Constructor in Java
  • Constructor in an Interface?
  • Parameterized Constructor in Java
  • Constructor Chaining with example
  • What is the use of a Private Constructors in Java
  • Interface in Java
  • What is Marker Interface
  • Abstract Class in Java

Java Keywords

  • Java this keyword
  • Java super keyword
  • Final Keyword in Java
  • static Keyword in Java
  • Static Import
  • Transient Keyword

Miscellaneous

  • newInstance() method
  • How does Hashmap works internally in Java
  • Java Ternary operator
  • How System.out.println() really work?
  • Autoboxing and Unboxing Examples
  • Serialization and Deserialization in Java with Example
  • Generate SerialVersionUID in Java
  • How to make a class Immutable in Java
  • Differences betwen HashMap and Hashtable
  • Difference between Enumeration and Iterator ?
  • Difference between fail-fast and fail-safe Iterator
  • Difference Between Interface and Abstract Class in Java
  • Difference between equals() and ==
  • Sort Objects in a ArrayList using Java Comparable Interface
  • Sort Objects in a ArrayList using Java Comparator

Follow

  • Coding Utils

Useful Links

  • Spring 4.1.x Documentation
  • Spring 3.2.x Documentation
  • Spring 2.5.x Documentation
  • Java 6 API
  • Java 7 API
  • Java 8 API
  • Java EE 5 Tutorial
  • Java EE 6 Tutorial
  • Java EE 7 Tutorial
  • Maven Repository
  • Hibernate ORM

About JavaInterviewPoint

javainterviewpoint.com is a tech blog dedicated to all Java/J2EE developers and Web Developers. We publish useful tutorials on Java, J2EE and all latest frameworks.

All examples and tutorials posted here are very well tested in our development environment.

Connect with us on Facebook | Privacy Policy | Sitemap

Copyright ©2023 · Java Interview Point - All Rights Are Reserved ·