In this tutorial, we will discuss what is JDK (Java Development Kit) in Java but before going to discuss it, we will understand about Java platform briefly.
Java Platform (Ecosystem)
A platform is a combination of hardware and software that provides an environment in which applications are developed and run. It usually consists of hardware (CPU, memory, and storage) combined with an operating system (OS). Some of the most common platforms are Microsoft Windows, Linux, macOS, and Solaris.
The Java platform is a software-based platform that runs on top of underlying operating systems such as Microsoft Windows, Linux, and macOS. It is composed of a hierarchy of components, such as the Java Virtual Machine (JVM), Java Runtime Environment (JRE), and Java Development Kit (JDK), as shown in the figure below.
What is Java Development Kit (JDK)?
Java Development Kit (JDK) is a software development environment used for developing Java applications, such as desktop, web, enterprise, mobile, cloud, and backend applications. It is the top-level component of the Java platform. It provides everything required to develop, compile, debug, and run Java applications for programmers.
Java Development Kit is maintained by Oracle and also distributed by multiple vendors based on the OpenJDK.
Components of Java Development Kit (JDK)
In modern Java (Java 11+), the JDK consists of the following components:
- Java Runtime Environment (JRE)
- Java Virtual Machine (JVM)
- Core Java libraries
- Java Development Tools
- javac, java, javadoc, jdb, jar, monitoring tools, etc.
1. Java Runtime Environment (JRE)
JRE is a runtime environment that is required for running a Java application. In simple words, it is used only for executing Java programs.
Java Runtime Environment (JRE) contains the Java Virtual Machine (JVM) and core Java class libraries, also known as Java APIs. Since Java 11, the JRE is no longer distributed separately and is bundled within the JDK.
Core Java class libraries are built-in libraries provided by Java that are commonly used by Java programs, such as java.lang, java.util, java.io, and java.net. These libraries provide ready-made functionality for performing common programming tasks.
2. Java Development Tools
Java Development Tools inside JDK include essential command-line tools such as:
- javac compiler
- java application launcher
- javadoc documentation tool
- jdb debugger
- JAR packaging tool
- Monitoring and diagnostic tools.
The most important tools are javac compiler, java launcher, and javadoc documentation tool. Java Development Tools provides everything for compiling, running, monitoring, debugging, and documenting Java applications. We will understand the components of JDK one by one in the further tutorial.
When we compile a C or C++ program, the program code is directly translated into machine code of a particular processor or a particular platform. But, Java programs are compiled by the javac compiler and executed by the JVM, which uses an interpreter and a JIT compiler.
The JVM first interprets bytecode and then uses JIT compilation to convert it into native machine code at runtime. This allows Java programs to run on different platforms. Due to JVM startup and runtime overhead, Java programs may have slightly slower than C/C++, but their performance is often comparable once the program is running.
Java Compiler
Java compiler (javac) is a program written in Java that translates Java source code into bytecode. javac is short for Java compiler, which is platform-independent because it runs on the Java Virtual Machine.
The Java compiler is responsible for the following tasks:
- Java compiler checks the source code for syntax and semantic errors.
- It converts Java source code (.java files) into bytecode (.class files) with the help of Java Virtual Machine (JVM).
- Java compiler also adds the additional code to your program if required.
- It generates metadata required by the JVM to execute the program. This metadata is an important part of the generated .class files.
Bytecode is an intermediate, platform-independent representation of a Java program. It is not machine code and cannot be executed directly on a computer. The bytecode is executed by the Java Virtual Machine, which makes Java platform-independent.
Java Application Launcher
The Java application launcher (java) is a tool used to start Java applications. It launches the JVM, loads the required classes, and executes the main() method of a Java program.
Javadoc Documentation Tool
The javadoc tool generates HTML documentation from Java source code comments. It helps us to create well-structured and readable API documentation automatically.
Java Debugger
jdb is a command-line Java debugger used to find and fix bugs in Java programs. It allows us to set breakpoints, step through code, and inspect variables during the execution of program.
JAR Packaging Tool
The jar (Java Archive) is a packaging tool that packages multiple Java class files, associated metadata, and resources (like images, audio, etc.) into a single .jar file. It is commonly used for distributing Java applications and libraries.
What is Java Interpreter?
The Java interpreter is a core component of the Java Virtual Machine, which is responsible for executing Java bytecode. The JVM implementation is platform-dependent, while Java bytecode remains platform-independent.
To understand Java interpreter in more detail, read this tutorial: What is Interpreter in Java
What is Java Language Specification?
The Java Development Kit implements the Java Language Specification, which defines the syntax and semantics of the Java programming language.
The Java language specification is a technical definition of syntax and semantics of the Java programming language. Here, you can find the complete Java language specification at https://docs.oracle.com/javase/specs/.
Editions of Java Platforms
The Java platform comes in three editions based upon device type. They are as follows:
1. Java SE (Standard Edition): This edition is used to develop client-side applications. It is used to develop applications for desktop, communication, and user interface.
2. Java EE (Enterprise Edition): This edition is used to develop server-side applications such as Java servlets, JavaServer Pages (JSP), and JavaServer Faces (JSF). In other words, it is used to develop web-based, messaging, distributed, and enterprise applications.
3. Java ME (Micro Edition): This edition is used to develop applications for mobile devices, such as cell phones. It is also used to develop Personnel Digital Assistants, Setup Box, and printers applications.
We will use Java SE to learn Java programming. Java SE is the foundation upon which all other Java technology is based. There are many versions of Java SE but you download the latest and stable Java SE edition.
Oracle releases each version with a Java Development Toolkit (JDK). For example, for Java SE 8, the Java Development Toolkit is called JDK 1.8 (also known as Java 8 or JDK 8).
List of Java Development Kit (JDK) version
Here, we have listed JDK versions with release dates that are as follows:
- JDK Beta: 1995
- JDK 1.0: January 1996
- JDK 1.1: February 1997
- JDK (J2SE) 1.2: December 1998
- JDK (J2SE) 1.3: May 2000
- JDK (J2SE) 1.4: February 2002
- JDK (J2SE) 5.0: September 2004
- JDK (Java SE) 6: December 2006
- JDK (Java SE) 7: July 2011
- JDK (Java SE) 8 (LTS): March 2014
- JDK (Java SE) 9: September 2017
- JDK (Java SE) 10: March 2018
- JDK (Java SE) 11 (LTS): September 2018
- JDK (Java SE) 12: March 2019
- JDK (Java SE) 13: September 2019
- JDK (Java SE) 14: March 2020
- JDK (Java SE) 15: September 2020
- JDK (Java SE) 16: March 2021
- JDK (Java SE) 17 (LTS): September 2021
- JDK (Java SE) 18: 22nd March 2022
- JDK (Java SE) 19: 20th Sept 2022
- Java SE 20: 21st March 2023
- JDK (Java SE) 21 (LTS): September 2023
- JDK (Java SE) 22: March 2024
- JDK (Java SE) 23: September 2024
- JDK (Java SE) 24: March 2025
- JDK (Java SE) 25 (LTS): September 2025
Here, LTS stands for long-term support. LTS versions receive updates for several years. The current and future LTS versions:
- Java 8
- Java 11
- Java 17
- Java 21
- Java 25
Confusion Regarding Using JDK and JRE
Often, new Java programmers may confuse about whether to use JDK or JRE. To run Java applications, simply download JRE. To develop Java applications and run them, JDK is useful.
Java developers who want to work in an integrated development environment (IDE), download a JDK bundled with Netbeans from the Oracle website.
Such IDEs speed up the development process by introducing point-and-click and drag-and-drop features for developing an application.
Conclusion
We hope this tutorial has covered the most important basic points related to “What is JDK”. You have understood the fundamental concepts of the Java platform and the Java Development Kit. Stay tuned for some important frequently asked questions on the Java Development Kit, which are commonly asked in interviews.








