Kit de Desenvolvemento de Java

O **Kit de Desenvolvemento de Java** (**JDK**) é unha distribución de tecnoloxía Java da Oracle Corporation. Implementa a Especificación da Linguaxe Java **(JLS)** e a Especificación da Máquina Virtual Java **(JVMS)**, ademais de proporcionar a Edición Estándar **(SE)** da Interface de Programación de Aplicacións Java **(API)**. É un derivado do OpenJDK, impulsado pola comunidade e xestionado por Oracle. Proporciona software para traballar con aplicacións de Java. Algúns exemplos de software incluídos no JDK son a máquina virtual de Java, un compilador, ferramentas de control do rendemento, un depurador, e outras utilidades que Oracle considera útiles para programadores de Java.

Oracle liberou a versión actual do software baixo a licenza de Termos e Condicións sen Taxas de Oracle (**NFTC**). Liberaron os binarios para a arquitectura x86-64 para os sistemas operativos baseados en Windows, macOS, e Linux, e para a arquitectura aarch64 de macOS e Linux. As versións anteriores soportaban o sistema operativo Oracle Solaris e a arquitectura SPARC.

A implementación principal da JVMS de Oracle coñécese como HotSpot (máquina virtual).

## Contidos do JDK 
O JDK ten como os seus principais compoñentes unha colección de ferramentas de programación, que inclúen:

* **appletviewer** &#x2013; Esta ferramenta pódese usar para executar e depurar applets de Java sen un navegador web.
* **apt** - A ferramenta de procesamento de anotacións.
* **extcheck** &#x2013; Unha utilidade que detecta conflitos de ficheiro JAR.
* **idlj** &#x2013; O compilador de IDL a Java. Esta utilidade xera ligazóns Java dende un ficheiro IDL de Java dado.
* **jabswitch** &#x2013; A Ponte de Acceso a Java. Expón tecnoloxías de asistencia en sistemas Microsoft Windows.
* **java** &#x2013; O cargador para aplicacións de Java. Esta ferramenta é un intérprete que pode interpretar os ficheiros de clase xerados polo compilador javac. Con isto úsase un único lanzador tanto para o desenvolvemento como para o despregamento. O antigo lanzador de implementación, jre, xa non inclúe o JDK Sun e, no seu lugar, foi substituído por este novo cargador Java.
* **javac** &#x2013; O compilador Java, o cal converte código fonte a bytecode de Java.
* **javadoc** &#x2013; O xerador de documentación, o cal automaticamente xera documentación a partir de comentarios do código fonte.
* **jar** &#x2013; O arquivador, o cal empaqueta bibliotecas de clases relacionadas nun único ficheiro JAR. Esta ferramenta tamén axuda a xestionar ficheiros JAR.
* **javafxpackager** &#x2013; Ferramenta para empaquetar e asinar aplicacións JavaFX.
* **jarsigner** &#x2013; A ferramenta de sinatura e verificación de ficheiros JAR.
* **javah** &#x2013; O xerador de cabeceiras e stubs de C, usado para escribir métodos nativos.
* **javap** &#x2013; O desensamblador de ficheiros de clase.
* **javaws** &#x2013; O lanzador de Java Web Start para aplicacións JNLP.
* **JConsole** &#x2013; Consola de monitorización e xestión de Java.
* **jdb** &#x2013; O depurador.
* **jhat** &#x2013; Ferramenta de Análise do Heap de Java. (experimental)
* **jinfo** &#x2013; Esta utilidade consegue información de configuración dun proceso de Java en execución ou dun *crush dump*. (experimental)
* **jmap** Oracle jmap – Mapa de memoria -  Esta utilidade produce o mapa de memoria para Java e pode imprimir mapas de memoria de obxectos compartidos ou detalles da memoria dinámica dun proceso ou volcado de núcleo determinado. (experimental)
* **jmc** &#x2013; Control de Misión de Java.
* **jpackage** &#x2013; Unha ferramenta para xerar paquetes de aplicacións autónomos. (experimental)
* **jps** &#x2013; A ferramenta de estado do proceso de máquinas virtuais de Java enumera as máquinas virtuais de Java (JVM) HotSpot instrumentadas no sistema obxectivo. (experimental)
* **jrunscript** &#x2013;  shell de script de liña de comandos de Java.
* **jshell** – Un bucle de lectura-avaliación-impresión introducido en Java 9.
* **jstack** &#x2013; Utilidade que imprime os rastros da pila dos fíos de Java. (experimental)
* **jstat** &#x2013; Ferramenta de monitorización de estatísticas de Máquinas Virtuais de Java. (experimental)
* **jstatd** &#x2013; demonio do jstat (experimental)
* **keytool** &#x2013; Ferramenta para manipular o keystore (almacén de chaves).
* **pack200** &#x2013; ferramenta de compresión JAR.
* **policytool** &#x2013; A ferramenta de creación e xestión de políticas, que pode determinar a política para o tempo de execución de Java, especificando que permisos están dispoñibles para o código de varias fontes.
* **VisualVM** &#x2013; Ferramenta visual que integra varias ferramentas JDK por liña de comandos  e capacidades lixeiras de perfís de memoria e rendemento (xa non se inclúe en JDK 9+)
* **wsimport** &#x2013; Xera artefactos JAX-WS portátiles para invocar un servizo web.
* **xjc** &#x2013; Parte da API de Java para a vinculación XML (JAXB). Acepta un esquema XML e xera clases Java.

As ferramentas experimentais poden non estar dispoñíbeis en versións futuras do JDK.

O JDK vén tamén cunha Contorna de Execución de Java (JRE) completo, normalmente chamada contorna de execución privada, debido a que está separado do JRE "normal" e ten contido adicional. Consiste nunha máquina virtual Java e todas as bibliotecas de clase presentes no ambiente de produción, así como as bibliotecas adicionais útiles só para os desenvolvedores, como as bibliotecas de internacionalización e as bibliotecas de IDL.

Copias do JDK tamén inclúen unha ampla selección de programas de exemplo que mostran o uso de case todas as porcións da API de Java.

## Outros JDKs 
Máis alá do JDK máis amplamente utilizado falado neste artigo, hai outros JDKs xeralmente dispoñíbles para unha variedade de plataformas, algúns dos cales arrancaron desde a fonte do JDK Sun e outros que non. Todos se adhiren ás especificacións básicas de Java, mais a miúdo difiren en áreas explicitamente non especificadas, como a recolección de lixo, estratexias de compilación, e técnicas de optimización. Inclúen:

En modo de desenvolvemento ou de mantemento:

* Azul Sistemas Zing, JDK de baixa latencia para Linux;
* Azul Sistemas / Zulu baseado en OpenJDK para Linux, Windows, Mac OS X, sistemas embebidos e a nube;
* OpenJDK / IcedTea;
* Aicas JamaicaVM;
* IBM J9 JDK, para AIX, Linux, Windows, MVS, OS/400, Pocker PC, z/OS;

Descontinuadas ou sen mantemento:

* Apache Harmony;
* Mac OS Runtime para Java de Apple JVM/JDK para o Mac OS clásico;
* Blackdown Java &#x2013; Porto do JDK de Sun para Linux;
* A Classpath de GNU e GCJ (O compilador GNU para Java);
* JRockit JDK de Oracle, para Windows, Linux, e Solaris;

## Referencias 
## Véxase tamén 
### Ligazóns externas 
* Oracle Java SE
* Oracle Java SE Support Roadmap
* Open source OpenJDK project
* OpenJDK builds from Oracle
* OpenJDK builds from AdoptOpenJDK
* IBM Java SDK Downloads
* Open source JDK 7 project
* GNU Classpath &#x2013; un JDK alternativo de Software libre