Java Development Kit (JDK)
The Java Development Kit (JDK) is one of three core technology packages used in Java programming, along with the JVM (Java Virtual Machine) and the JRE (Java Runtime Environment). It's important to differentiate between these three technologies, as well as understanding how they're connected:
- The JVM is the Java platform component that executes programs.
- The JRE is the on-disk part of Java that creates the JVM.
- The JDK allows developers to create Java programs that can be executed and run by the JVM and JRE.
What is the Java Development Kit (JDK)?
The Java Development Kit (JDK) is a software development environment that offers a collection of tools and libraries necessary for developing Java applications. You need the JDK to convert your source code into a format that the Java Runtime Environment (JRE) can execute.
The JDK includes the Java Runtime Environment (JRE), an interpreter (java), a compiler (javac), an archiver (jar), a documentation generator (javadoc), and some other development tools. The Java Runtime Environment itself consists of the Java Virtual Machine (JVM), supporting files, and core classes.
The Java Development Kit (JDK) is a cross-platformed software development environment that offers a collection of tools and libraries necessary for developing Java-based software applications and applets. It is a core package used in Java, along with the JVM (Java Virtual Machine) and the JRE (Java Runtime Environment).
Beginners often get confused with JRE and JDK, if you are only interested in running Java programs on your machine then you can easily do it using Java Runtime Environment. However, if you would like to develop a Java-based software application then along with JRE you may need some additional necessary tools, which is called JDK.
JDK is an implementation of any one of the below given Java Platforms released by Oracle corporation:
- Standard Edition Java Platform
- Enterprise Edition Java Platform
- Micro Edition Java Platform
The JDK contains a private Java Virtual Machine (JVM) and a few other resources such as an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc) etc. to complete the development of a Java Application.
Latest version
The latest version is JDK 17, which was released in September 2021 Here’s a list of some of its new features:
- Switch expressions
- Pattern matching for instanceof
- Records
- Helpful NullPointerExceptions
- Text blocks
JDK contains:
- Java Runtime Environment (JRE),
- An interpreter/loader (Java),
- A compiler (javac),
- An archiver (jar) and many more.
The Java Runtime Environment in JDK is usually called Private Runtime because it is separated from the regular JRE and has extra contents.
Components of JDK
Following is a list of primary components of JDK:
appletviewer: |
This tool is used to run and debug Java applets
without a web browser. |
apt: |
It is an
annotation-processing tool. |
extcheck: |
it is a utility that
detects JAR file conflicts. |
idlj: |
An IDL-to-Java
compiler. This utility generates Java bindings from a given Java IDL file. |
jabswitch: |
It is a Java Access
Bridge. Exposes assistive technologies on Microsoft Windows systems. |
java: |
The loader for Java
applications. This tool is an interpreter and can interpret the class files
generated by the javac compiler. Now a single launcher is used for both
development and deployment. The old deployment launcher, jre, no longer comes
with Sun JDK, and instead it has been replaced by this new java loader. |
javac: |
It specifies the
Java compiler, which converts source code into Java bytecode. |
javadoc: |
The documentation
generator, which automatically generates documentation from source code
comments |
jar: |
The specifies the
archiver, which packages related class libraries into a single JAR file. This
tool also helps manage JAR files. |
javafxpackager: |
It is a tool to
package and sign JavaFX applications. |
jarsigner: |
the jar signing and
verification tool. |
javah: |
the C header and stub
generator, used to write native methods. |
javap: |
the class file
disassembler. |
javaws: |
the Java Web Start
launcher for JNLP applications. |
JConsole: |
Java Monitoring and
Management Console. |
jdb: |
the debugger. |
jhat: |
Java Heap Analysis
Tool (experimental). |
jinfo: |
This utility gets
configuration information from a running Java process or crash dump. |
jmap: |
Oracle jmap - Memory
Map- This utility outputs the memory map for Java and can print shared object
memory maps or heap memory details of a given process or core dump. |
jmc: |
Java Mission Control |
jps: |
Java Virtual Machine
Process Status Tool lists the instrumented HotSpot Java Virtual Machines
(JVMs) on the target system. |
jrunscript: |
Java command-line
script shell. |
jstack: |
It is a utility that
prints Java stack traces of Java threads (experimental). |
jstat: |
Java Virtual Machine
statistics monitoring tool (experimental). |
jstatd: |
jstat daemon
(experimental). |
keytool: |
It is a tool for
manipulating the keystore. |
pack200: |
JAR compression
tool. |
Policytool: |
It specifies the
policy creation and management tool, which can determine policy for a Java
runtime, specifying which permissions are available for code from various
sources. |
VisualVM: |
It is a visual tool
integrating several command-line JDK tools and lightweight [clarification
needed] performance and memory profiling capabilities |
wsimport: |
It generates portable
JAX-WS artifacts for invoking a web service. |
xjc: |
It is the part of
the Java API for XML Binding (JAXB) API. It accepts an XML schema and
generates Java classes. |
Most Popular JDKs:
- Oracle JDK: the most popular JDK and the main distributor of Java11,
- OpenJDK: Ready for use: JDK 15, JDK 14, and JMC,
- Azul Systems Zing: efficient and low latency JDK for Linux os,
- Azul Systems: based Zulu brand for Linux, Windows, Mac OS X,
- IBM J9 JDK: for AIX, Linux, Windows, and many other OS,
- Amazon Corretto: the newest option with the no-cost build of OpenJDK and long-term support.