Java Development Kit
| Company type | Software development kit |
|---|---|
| Industry | Software development |
| Founder | Oracle Corporation |
Area served | Worldwide |
| Products | Java SE Development Kit, Java virtual machine, compiler, debugging tools, performance analyzers |
| Owner | Oracle Corporation |
| Website | https://www.oracle.com/java/technologies/javase-downloads.html |
The Java Development Kit (JDK) represents Oracle Corporation's official distribution of Java technology. It adheres to the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS), delivering the Standard Edition (SE) of the Java Application Programming Interface (API). Built upon the community-led OpenJDK, which Oracle oversees, the JDK bundles vital software components required for Java application creation, including the Java virtual machine, compiler, debugging utilities, performance analyzers, and various other tools.
Oracle distributes the JDK under the Oracle No-Fee Terms and Conditions (NFTC) license. The supported environments cover x86-64 architectures for Windows, macOS, and Linux platforms, as well as aarch64 architectures on macOS and Linux. Previous releases included support for Oracle Solaris and SPARC hardware. Oracle’s main implementation of the JVMS is the HotSpot (virtual machine).
JDK contents
The JDK offers a collection of development utilities such as:
- appletviewer – enables execution and debugging of Java applets independently from web browsers
- apt – tool for processing annotations
- extcheck – identifies conflicts among JAR files
- idlj – compiler translating IDL files into Java bindings via Java IDL
- jabswitch – Java Access Bridge facilitating assistive technology support on Windows
- java – application launcher and interpreter superseding the earlier jre launcher
- javac – compiler that transforms Java source code into bytecode
- javadoc – generates documentation from source code comments
- jar – utility for archiving class libraries into JAR files and managing them
- javafxpackager – tool for packaging and signing JavaFX applications
- jarsigner – utility to sign and verify JAR files
- javah – generates C header files and stubs for native method integration
- javap – disassembler for class files
- javaws – launcher designed for Java Web Start applications
- JConsole – console for monitoring and managing Java applications
- jdb – debugger tool
- jhat – experimental Java Heap Analysis Tool
- jinfo – experimental tool to extract configuration from active Java processes or crash dumps
- jmap – experimental utility displaying memory maps and heap information
- jmc – Java Mission Control toolset
- jpackage – experimental tool to create self-contained application bundles
- jps – experimental utility listing instrumented HotSpot JVM instances on the host system
- jrunscript – command-line scripting shell
- jshell – interactive read–eval–print loop introduced with Java 9
- jstack – experimental tool printing stack traces of Java threads
- jstat & jstatd – experimental JVM statistics monitoring utilities
- keytool – manages keystores used in security configurations
- pack200 – utility for compressing JAR files
- policytool – graphical utility to create and manage runtime security policies
- VisualVM – integrated profiling and monitoring tool combining multiple command-line utilities (removed starting with JDK 9)
- wsimport – generates portable JAX-WS artifacts to support web services development
- xjc – JAXB API component that produces Java classes from XML schema definitions
Note that experimental tools may be discontinued in upcoming versions.
Included within the JDK is a comprehensive private Java Runtime Environment (JRE), which contains a JVM alongside all standard class libraries plus additional developer-oriented libraries such as those supporting internationalization and IDL. The kit also provides numerous sample applications illustrating extensive use of the Java API.
Alternative JDKs
In addition to the main JDK previously discussed, there are numerous other JDK implementations available across different platforms. Some of these are based on Sun JDK code, while others have been created independently. Although all adhere to the fundamental Java specifications, they vary in aspects such as garbage collection methods, compilation techniques, and performance enhancements. Notable examples include:
Currently active or supported:
- Azul Systems Zing – a Linux-focused JDK designed for minimal latency;
- Azul Systems / OpenJDK-derived Zulu – compatible with Linux, Windows, macOS, embedded devices, and cloud infrastructures;
- OpenJDK / IcedTea;
- Aicas JamaicaVM;
- IBM J9 JDK – offered for platforms including AIX, Linux, Windows, MVS, OS/400, Pocket PC, and z/OS.
No longer maintained or discontinued:
- Apache Harmony;
- Apple's Mac OS Runtime for Java JVM/JDK tailored for Classic Mac OS;
- Blackdown Java – a Linux adaptation of Sun's JDK;
- GNU's Classpath and GCJ;
- Oracle Corporation's JRockit JDK supporting Windows, Linux, and Solaris.
See also