Java
Yleistä

Java-ohjelmointikielen kehittivät Bill Joy ja James Gosling kollegoineen Sun Microsystemsillä 1990-luvun alussa. JDK 1.0 (Java Development kit) julkaistiin syksyllä 1995. Se soveltui www-sivulle luotavien applettien tekemiseen, mikä nosti Javan nopeasti ohjelmointimaailman kuumimmaksi puheenaiheeksi. Keväällä 1997 julkaistiin JDK 1.1, jossa oli muuttunut erityisesti käyttöliittymän ohjelmointi oliomaisempaan suuntaan. JDK 1.2 julkaistiin loppuvuonna 1998, ja se sisälsi uuden JFC-luokkakirjaston (Java Foundation Classes), jossa mukaan tuli mm. Swing käyttöliittymien luominen ja monipuolisia tietorakenneluokkia.
Java-kielen 1990-luvun lopulla saavuttaman suuren suosion takana ovat laitteistoriippumattomuuden lisäksi kielen C++-kieltä läheisesti muistuttava, mutta helpommin omaksuttavaksi suunniteltu kielioppi, oliopohjaisuus ja virtuaalikoneen mukana tuleva, erittäin kattava standardikirjasto. Myös muistinhallintaa on helpotettu ottamalla käyttöön roskienkeräin (engl. garbage collector), joka vapauttaa muistia kun sitä ei enää tarvita. Java kuuluu ohjelmointikieliin, joissa on käytössä ns. vahva tyypitys. Tämä tarkoittaa sitä, että jokaisella muuttujalla on tyyppi ja muuttujat voivat saada ainoastaan tyyppinsä mukaisia arvoja.
Toisin kuin tavanomaisen kielet, Javan lähdekoodia ei käännetä suoraan konekielelle, vaan tavukoodiksi, joka suoritetaan virtuaalikoneessa. Koska Java-ohjelmat ajetaan virtuaalikoneessa, ne eivät normaalisti pysty vaikuttamaan suoraan muihin prosesseihin, eivätkä pääse virtuaalikoneelle määrätyn hiekkalaatikon ulkopuolelle vaan esimerkiksi tiedostoja käsitellessä käskyt kulkevat virtuaalikoneen läpi, joka varmistaa että käsky on turvallisuusasetusten mukainen. Java-ohjelmat ovat mm. näiden rajoitusten vuoksi tavanomaisia konekieliohjelmia turvallisempia, mutta samalla hieman hitaampia.
Javan standardikirjasto sisältää valmiita toteutuksia useille asioille, kuten graafisen käyttöliittymäkirjaston, rinnakkaisuuden hallinnan, verkko-ominaisuudet ja eräät muut rajapinnat, jotka toisissa kielissä ovat käyttöjärjestelmäriippuvaisia tai kolmansien osapuolten kirjastojen varassa.
Javaa markkinoitiin alun perin Web-käyttöön, selaimen sisällä ajettavia sovelmia varten. Se löi kuitenkin varsinaisesti läpi palvelinkäytössä, dynaamisia www-sivuja luotaessa (JSF, JSP, servlet), raskaissa palvelinsovelluksissa (Java EE) ja kännyköissä ja taskutietokoneissa (Java ME). Yleisyytensä ja ilmaisuutensa ansiosta se on myös suosittu opetuskieli.
Java-alustan käyttöä ei ole rajattu Java-ohjelmointikieleen, vaan mm. Python-, Ruby- ja Scheme-kielille on olemassa kääntäjä, joka tuottaa Java-tavukoodia. Sun Microsystemsin lisäksi ainakin IBM ja GNU ovat kehittäneet omat Java-kääntäjänsä ja IBM, Novell, BEA Systems ja Apache omat virtuaalikoneensa lukuisten avoimen lähdekoodin toteutusten (kuten Kaffe, SableVM, JamVM, CACAO, Jikes RVM, VMkit) lisäksi. GNU:n kääntäjäympäristöön GCC:hen kuuluva GCJ osaa kääntää Javaa konekielelle.
GNU ryhtyi myös kehittämään korvaavaa, vapaata luokkakirjastoa GNU Classpath -projektissa.
Sun ilmoitti 13. marraskuuta 2006 julkaisevansa Javan GNU GPL-lisenssillä.
Googlen Android on käyttänyt Apache Harmony -toteutusta Javan kirjastoille, mutta siirtyi käyttämään OpenJDK-toteutusta. Vuodesta 2019 lähtien Kotlin on ollut suositeltu ohjelmointikieli Android-sovelluksille Javan sijaan.