Java development kit (JDK) distributions, or Java runtime environment (JRE) distributions provide the necessary resources and processes to run Java applications atop an underlying operating system. These elements include all required Java SE (Standard Edition) classes and code execution environments. JDK / JRE distributions also include a Java Virtual Machine (JVM) which enables Java's cross-platform portability and allows Java’s compiled code to be smaller in size. Java is a popular programming language, and the JDK / JRE can be thought of as a communication layer between written Java programs and operating systems. All distributions of the JDK derive from OpenJDK, the open-source implementation of Java SE which is collectively developed and maintained by the major vendors in this space.
Development teams use their chosen distribution of the JDK to gain access to classes (prewritten code with functionality that can be called via shorthand commands), to write Java code and develop applications, to verify and validate their written code including error and security remediation, and to run their code as an application. For JDK or JRE distributions to be considered compatible with Java SE, it must pass the technology compatibility kit (TCK) test suite. The Java TCK, also referred to as the JCK, is made available through the OpenJDK Community TCK License Agreement (OCTLA) to organizations who are working in and contributing to the OpenJDK Community. Additionally, some distributions (often referred to as “downstream" distributions) provide highly differentiated benefits such as significantly improved application experiences and reduced infrastructure costs. These can include enhanced performance (better garbage collection, faster warm-up, etc.) and cloud native capabilities.
To qualify for inclusion in the Java Development Kit (JDK) Distributions category, a product must:
Include a Java Virtual Machine (JVM)
Include the Java SE API (application programming interface) - a set of internal classes to build Java applications
Provide the packages and tools for developing, testing, and monitoring Java applications