Java Development Kit

**Java Development Kit** (**JDK**) on Oracle Corporationin julkaisema Javan kehitysympäristö, joka sisältää työkalut Java-ohjelmien koodaamiseen Standard Edition (SE) ympäristössä. Java Development Kit on ladattavissa yleisimmille käyttöjärjestelmille (Windows, Mac, Linux).

Se on ollut Javan esittelystä lähtien eniten käytetty Javan ohjelmistokehityspaketti (SDK). Sun Microsystems ilmoitti 2006 julkaisevansa Java Development Kitin ilmaisena GNU General Public License -lisenssin (GPL) alaisena ja lahjoitti vuonna 2007 koodin OpenJDK:lle. Javan virallinen kehittäjä on nykyisin Eclipse Foundation.

Täten Javasta on olemassa muitakin versioita ja sen on käännettävissä useille alustoille. Amazonin kehitysympäristö Amazon Corretto on ajoittain noussut käytetyimmäksi JDK:n versioksi vuosina 2023 ja 2023. Muita kehitysympäristön julkaisijoita ovat Azul Systems, BellSoft, Debian, Eclipse Foundation, Red Hat ja SAP SE.

JDK:sta ilmestyy säännöllisesti, kaksi kertaa vuodessa uusi versio. Keväällä 2023 uusin versio Oraclen sivuilla on Java SE Development Kit 20. Java JDK 20:ssä on 7 uutta ominaisuutta: Vector API- ehdotus, virtuaaliset säikeet, rakenteellien rinnakkaisuus, scoped values, kuvioiden tallentaminen, vieras toiminto ja muisti API, kuvioiden testaus switch -lauseisiin.

Osaa vanhemmista versioista tuetaan edelleen ja niihin julkaistaan päivityksiä. Osalle julkaisuista luvataan pitkäaikainen tuki (LTS, Long-Term Support).
Pitkäaikaisesti tuetut versiot ovat JDK 8, 11 ja 17. Seuraava LTS versio ilmestyy syyskuussa 2023. Tutkimuksen mukaan vuonna 2022 JDK 11 oli yhä käytetyin versio

* Java 20 (Java SE Development Kit 20): julkaistu maaliskuu 2023

* Java 17 (Java SE Development Kit 17): julkaisu syyskuu 2021, LTS

* Java 11 (Java SE Development Kit 11): julkaisu syyskuu 2018, tuki vähintään syyskuu 2026

* Java 8 (Java SE Development Kit 8): julkaisu maaliskuu 2014, tuki vähintään joulukuu 2030

Oraclen sivuilta on saatavissa myös JRE (Java SE Runtime Environment), mutta se sisältää vain Java-ohjelmien ajamiseen tarvittavan virtuaalikoneen ja standardit luokkakirjastot, joten sen avulle ei voi kehittää omia Java-ohjelmia. JDK sisältää JRE:n.

Java-koodin kirjoittamiseen myös kehitystyökalu, jonka kautta JDK:ta voidaan käyttää. Javan kehitystyökaluja ovat mm. IntelliJ IDEA, Eclipse ja NetBeans. Kehitystyökalun tietty versio voi vaatia vähintään tietyn JDK:n version.

## Sisältö
JDK sisältää mm. seuraavia osia, jotka ovat tärkeitä kehitykselle ja testaukselle:

* jar - arkistoija, joka pakkaa luokkia ja resursseja yhteen jar-tiedostoon ja auttaa hallinnoimaan niitä

* jarsigner - mahdollistaa jar-tiedostojen allekirjoituksen ja varmennuksen

* java - Java-applikaatioden lataaja 

* javac - Java-kääntäjä, joka kääntää lähdekoodin Java-tavukoodiksi ja class-tiedostoiksi.

* javadoc - dokumenttigeneraattori, joka luo automaattisesti HTML-dokumentaation lähdekoodin perusteella

* javap - mahdollistaa yhden tai useamman luokkatiedoston jakamisen osiin

* jcmd - mahdollistaa diagnostisten komentopyyntöjen lähettämisen Java-virtuaalikoneelle

* jconsole - graafinen konsoli Java-ohjelmien tarkkailuun ja hallinnointiin

* jdb - deguggeri, jonka avulla voidaan löytää ja korjata bugeja
* appletviewer - työkalu jota käytetään käynnistämään ja paikantamaan virheet Java sovelmassa ilman internetselainta
* apt - kommentointi ja käsittely väline
* extcheck - apuohjelma, joka havaitsee JAR-tiedostoristiriidat
* idlj - IDL-Java-kääntäjä. Tämä apuohjelma luo Java-sidoksia annetusta Java IDL -tiedostosta.
* jabswitch - Java Access Bridge. Esittelee avustavia tekniikoita Microsoft Windows -järjestelmissä.
* javafxpackager – työkalu JavaFX-sovellusten pakkaamiseen ja allekirjoittamiseen
* javah - C-otsikko- ja tynkägeneraattori, jota käytetään natiivimenetelmien kirjoittamiseen
* javaws - Java Web Start -käynnistysohjelma JNLP-sovelluksille
* jhat - Java-keon analyysityökalu (kokeellinen)
* jinfo - Tämä apuohjelma saa määritystiedot käynnissä olevasta Java-prosessista tai kaatumisvedosta. (kokeellinen)
* jmc - Java Mission Control, kerää yksityiskohtaisia ja matalan tason suoritusaikatietoja mahdollistaen jälkikäteen tapahtuneen tapahtuman analysoinnin.
* jmap - Tämä apuohjelma tulostaa Java-muistikartan ja voi tulostaa tietyn prosessin tai ydinvedosten jaetut objektimuistikartat tai kasamuistin tiedot. (kokeellinen)
* jpackage - työkalu itsenäisten sovelluspakettien luomiseen. (kokeellinen)
* jps - Java Virtual Machine Process Status Tool -työkalu listaa kohdejärjestelmän instrumentoidut HotSpot Java Virtual Machines (JVM:t). (kokeellinen)
* jrunscript - Java komentorivin komentosarjan kuori.
* jshell - luku-eval-tulostussilmukka, joka esiteltiin Java 9:ssä.
* jstack - apuohjelma, joka tulostaa Java-säikeiden pinojäljet. (kokeellinen)
* jstat - Java Virtual Machine -tilastojen seurantatyökalu (kokeellinen)
* jstatd &#x2013; jstat daemon (kokeellinen)
* keytool - työkalu avainsäilön käsittelyyn
* pack200 - JAR-pakkaustyökalu
* policytool - käytäntöjen luonti- ja hallintatyökalu, joka voi määrittää Java-ajonaikaisen käytännön ja määrittää, mitkä oikeudet ovat saatavilla eri lähteistä tulevalle koodille.
* VisualVM - visuaalinen työkalu, joka integroi useita komentorivin JDK-työkaluja ja kevyitä suorituskyky- ja muistiprofilointiominaisuuksia (ei enää sisälly JDK 9+ -versioon)
* wsimport - luo kannettavia JAX-WS-artefakteja verkkopalvelun käynnistämiseksi.
* xjc - Kuuluu Java API for XML Binding (JAXB) API. Hyväksyy XML-mallin ja luo Java-luokkia.

Kokeellisia työkaluja ei välttämättä ole saatavilla JDK:n tulevissa versioissa. JDK sisältää myös täydellisen Java Runtime Environmentin (JRE), jota yleensä kutsutaan erilliseksi suoritusympäristöksi. Tämä johtuu siitä, että se on erotettu "tavallisesta" JRE:stä ja siinä on ylimääräistä sisältöä. Se koostuu Java Virtual Machinesta ja kaikista luokkakirjastoista, jotka ovat käytettävissä tuotantoymäpäristössä, sekä kehihittäjille hyödyllisistä lisäkirjastoista, kuten kansainvälistämiskirjastoista ja IDL-kirjastoista

## Muut JDK:t
Java Development Kitistä on saatavilla myös mm. avoimen lähdekoodin versio OpenJDK. Sen kehitys aloitettiin vuonna 2007, kun Sun Microsystems julkaisi JDK:n GLP(General Public Licence)-lisenssin alaisena. Muitakin JDK.ta on saatavilla useille alustoille. Kaikki nämä noudattavat Javan perusmäärityksiä, mutta usein ne roavan nimenomaan määrittelemättömillä alueilla, kuten turhan koodi poisto, käännöstrategioissa ja optomointitekniikoissa.

Erilaisia JDK:ta:

* Azul Systems Zing, pienen viiveen JDK Linuxille
* Azul Systems / OpenJDK-Zulu-pohjainen suunniteltu Linuxille, Windows:lle, Mac OS X:lle, sulautettuna ja pilveen
* OpenJDK / IcedTea;
* Aicas JamaicaVM;
* IBM J9 JDK käyttöjärjestelmille AIX, Linux, Windows, MVS, OS/400, Pocket PC, z/OS;

## Lähteet