Java (programmeringsspråk)

**Java** er et objektorientert  programmeringsspråk, utviklet av James Gosling og andre utviklere hos Sun Microsystems. I november 2006 kunngjorde Sun at selskapet ville frigi Javakoden som åpen kildekode og dermed bli en av de største bidragsyterne innen dette globale miljøet.

I motsetning til f.eks. C, kompileres ikke Java til maskinkode, men til plattformuavhengig bytekode som kjøres av et underliggende lag programvare kalt Java Virtual Machine (JVM). Javaprogrammer kan derfor kjøre på alle operativsystemer hvor det finnes en Java Virtual Machine.

For å kjøre vanlige Javaprogrammer trenger man en Java Runtime Environment (JRE). Denne består av JVM samt de grunnleggende bibliotekene. For utvikling av Javaprogrammer må man ha Java Development Kit (JDK), som i tillegg til en fullverdig JRE inneholder Javakompilatoren og andre sentrale verktøy for Javautvikling.

## Utgaver
Java blir i motsetning til tidligere programmeringsspråk, som for eksempel C++, levert med et stort bibliotek av klasser og metoder, blant annet for bygging av grafiske grensesnitt og for kommunikasjon over Internett. Man kan grovt sett dele opp Java i tre; en standardutgave (Java SE), en forretningsutgave (Java EE) og en mikroutgave (Java ME).

### Java SE
Java SE (Java Standard Edition) inneholder de grunnleggende og nødvendige bibliotekene for å utvikle og kjøre Javaprogrammer. 
Versjon 8.0 ble sluppet 18. mars 2014

### Java EE
Java EE (Java Enterprise Edition), bygger på Java SE og er en paraplybetegnelse på en mengde rammeverk som blant annet gir muligheter for å lage komponentbaserte, distribuerte flerlagsløsninger og webapplikasjoner. Den seneste versjonen av Java EE er for tiden EE 6. Akronymet *J2EE* (Java2 Enterprise Edition) ble benyttet fram til versjon 5 ble lansert.

### Java ME
Det finnes i tillegg til Java SE og Java EE en tredje versjon, Micro Edition (Java ME) som er et utdrag av Java SE spesielt tilpasset utvikling på mobiltelefoner. Denne teknologien har fått en enorm popularitet, noe f.eks. støtten for mobilspill og programmer på mobiltelefoner er et bevis på.

## Java som åpen kildekode
13. november 2006 kunngjorde Sun at store deler av Java ble lisensiert under GPL-lisensen. 8. mai 2007 var prosessen ferdig, og alt unntatt en liten del Sun ikke hadde rettigheter til å relisensere er nå fritt. Et initiativ av Red Hat ble igangsatt for å bytte ut den ufrie delen med fri programvare igjennom prosjektet IcedTea. 4 % var ufritt i mai 2007, og mindre enn 1 % i mai 2008.

Åpningsprosessen har vært varslet i lang tid. I februar 2004 skrev blant annet presidenten i Open Source Initiative, Eric S. Raymond et åpent brev til Sun der selskapet ble oppfordret til å gjøre Java om til åpen kildekode.

## Programutviklingsmiljøer
Det finnes flere integrerte utviklingsmiljø for å utvikle i Java. Disse har gjerne støtte for refaktorering, testrammeverk som JUnit og TestNG, og byggesystemer som Ant, Maven og Gradle.

Refactoring innebærer å forbedre kildekoden et program er basert på, uten å endre programmets oppførsel. Et eksempel er at hvis du endrer navn på en metode, skjer en automatisk endring på alle steder i koden der den metoden brukes. IntelliJ IDEA, Eclipse og NetBeans er tre eksempler på integrerte utviklingsmiljøer. Alle tre finnes i frie utgaver.

## Norge

Det norske javamiljøet er (per 2025) aktivt og arrangerer jevnlig fagmøter og – siden 2001 – den årlige konferansen JavaZone.

### Høyere utdanning
Både Universitetet i Oslo, Oslomet – storbyuniversitetet, Universitetet i Bergen, Universitetet i Agder, Høgskolen i Bergen, Norges teknisk-naturvitenskapelige universitet, Høgskolen i Telemark, Høgskolen i Østfold og Norges Informasjonsteknologiske Høgskole lærer bort Java i data-grunnkursene sine, og legger også stor vekt på Java i senere kurs.

## Utvikling i Java
Utvikling i Java krever at Java Development Kit er installert på datamaskinen. Den følgende *[[Hello, world]]*-strengen er et eksempel på et enkelt program som printer tekst til en konsoll i det integrerte utviklingsmiljøet:

```java
// Hello.java
public class Hello {

    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```


## Se også

* JavaScript

## Referanser


## Eksterne lenker
* 
* Java SE
* Java EE 
* Java i Norge
* JavaZone
* TheServerSide.com
* Full Java Tutorial