JDK stands for Java Development Kit. It is the first thing you will have to deal with if you are getting started with Java's programming and building applications.
The detailed article will discuss why JDK is the only tool you need to start building scalable applications and tools with java. It will help you perform your best in interviews for your dream Java developer job. Let's start with understanding what a Java Development Kit (JDK) is.
What is JDK?
The Java Development Kit (JDK) is a cross-platform software development environment that has tools and libraries for creating Java-based software apps and applets. It is a core package in Java, the JRE (Java Runtime Environment), and the JVM (Java Virtual Machine).
It is a collection of software development tools and libraries, including Java Runtime Environment (JRE) and Java Virtual Machine (JVM).
Beginners often get confused between JDK and JRE and usually pose questions like to run Java programs, only the Java Run-time Environment is required, but why the entire JDK?
The answer is relatively straightforward, if all you want to do is run Java programs on your machine, you can do so with the Java Runtime Environment. However, if you create a Java-based software application, you will need some additional tools and libraries that are only available in the JDK.
To clear the confusion between JDK and JRE and JVM, let's understand the differences between them and the architecture of JDK.
Difference between JDK, JRE, and JVM
To draw a clear picture of their functions and properties it's important to distinguish between these three and understand how they're related:
- JDK: JDK stands for Java Development kit. It provides tools for developing applications, and testing programs written in Java or running on the Java platform.
- JRE: JRE stands for Java Run-time Environment. It is the Java on-disk component that generates the JVM.
- JVM: JVM stands for Java Virtual Machine. It is the component of the Java platform that executes programs.
Architecture of JDK
To understand the Architecture of JDK, let's define JDK differently - JDK, along with the JVM (Java Virtual Machine) and the JRE (Java Run-time Environment), is one of three core technology packages used in Java programming. Refer to the venn diagram given below to understand how they are related to each other.
Components of JDK
A comprehensive list of JDK's primary components is provided below:
- appletviewer: It is used to run and debug Java applets without a web browser
- apt: It is an Annotation Processing Tool
- extcheck: It detects JAR file conflicts
- idlj : It is an IDL-to-Java compiler. It generates Java bindings from a given Java IDL file
- Jabswitch: It is used to describe assistive technologies available on Microsoft Windows systems.
- Java: This is a java application loader, it can read and write class files generated by the javac compiler. A single launcher now handles both development and deployment. The old deployment launcher, JRE, is no longer included with the Sun JDK and has been replaced by this new java loader.
- Javac: Javac specifies the Java compiler, which converts source code into Java bytecode
- Javadoc: This is a documentation generator, it generates documentation automatically from source code comments
- Jar: It specifies how to package related class libraries into a single JAR file. It also aids in the management of JAR files.
- Javafxpackager: This is used for packaging and signing JavaFX applications
- Jarsigner: Jar signing and verification tool
- Javah: It is a C header and stub generator used to write native methods
- Javap: It is a class file disassembler
- Javaws: Java Web Start launcher for JNLP applications
- JConsole: Monitoring and Management Console
- Jdb: Debugger
- Jhat: It is Java Heap Analysis Tool
- Jinfo: It gets configuration information from a running Java process or crash dump.
- Jmap: Oracle jmap - Memory Map- It outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process.
- Jmc: Java Mission Control
- Jps: It is Java Virtual Machine Process Status Tool, that lists the instrumented HotSpot Java Virtual Machines (JVMs) on the target system
- Jrunscript: It is Java’s command-line script shell
- Jstack: It prints Java stack traces of Java threads
- Jstat: Java Virtual Machine statistics monitoring tool
- Jstatd: jstat daemon
- Keytool: For manipulating the keystore.
- Pack200: JAR compression tool.
- Policytool: It is a policy creation and management tool that 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 performance and memory profiling capabilities
- Wsimport: It generates portable JAX-WS artifacts for web service invocation
- Xjc: This is part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.
Most Popular JDK’s
Oracle JDK: the most popular JDK and the primary Java11 distributor
OpenJDK: JDK 15, JDK 14, and JMC are ready to use.
Azul Systems Zing: an efficient and low-latency Java development kit for Linux.
Azul Systems: based on the Zulu brand for Linux, Windows, and Mac OS X, IBM J9 JDK: for AIX, Linux, Windows, and various other operating systems,
Amazon Corretto: the most recent option, with a free build of OpenJDK and long-term support.