Java Development Kit

The Java Development Kit is an implementation of either one of the Java Platform, Standard Edition, Java Platform, Enterprise Edition, or Java Platform, Micro Edition platforms released by Oracle Corporation in the form of a binary product aimed at Java developers on Solaris, Linux, macOS or Windows. The JDK includes a private JVM and a few other resources to finish the development of a Java application. Since the introduction of the Java platform, it has been by far the most widely used Software Development Kit. On 17 November 2006, Sun announced that they would release it under the GNU General Public License, thus making it free software. This happened in large part on 8 May 2007, when Sun contributed the source code to the OpenJDK.

JDK contents

The JDK has as its primary components a collection of programming tools, including:
Experimental tools may not be available in future versions of the JDK.
The JDK also comes with a complete Java Runtime Environment, usually called a private runtime, due to the fact that it is separated from the "regular" JRE and has extra contents. It consists of a Java Virtual Machine and all of the class libraries present in the production environment, as well as additional libraries only useful to developers, such as the internationalization libraries and the IDL libraries.
Copies of the JDK also include a wide selection of example programs demonstrating the use of almost all portions of the Java API.

Ambiguity between a JDK and an SDK

The JDK forms an extended subset of a software development kit. It includes "tools for developing, debugging, and monitoring Java applications". Oracle strongly suggests to now use the term JDK to refer to the Java SE Development Kit. The Java SE SDK is available with or without the JDK, by which they specifically mean the Java SE 7 JDK.

Other JDKs

In addition to the most widely used JDK discussed in this article, there are other JDKs commonly available for a variety of platforms, some of which started from the Sun JDK source and some that did not. All adhere to the basic Java specifications, but often differ in explicitly unspecified areas, such as garbage collection, compilation strategies, and optimization techniques. They include:
In development or in maintenance mode:
Not being maintained or discontinued: