Java är namnet på ett programmeringsspråk som skapats av Sun Microsystems. Sun köptes upp av Oracle Corporation, som fortsatt utvecklar officiella Java‑implementationer, men utvecklingen av språket och körmiljön sker i stor utsträckning i den öppna OpenJDK‑gemenskapen där flera företag bidrar. Java har en regelbunden releasecykel med nya funktioner var sjätte månad och särskilda LTS‑utgåvor (Long Term Support) ungefär vart tredje år. LTS‑versionerna som många företag väljer för produktion är till exempel Java 8, Java 11 och Java 17; sedan 2023 finns även Java 21 som LTS. För produktionsmiljöer rekommenderas ofta en LTS‑version eftersom den får längre support och uppdateringar.

Historia och versioner

Språket hette ursprungligen Oak under den tidiga utvecklingen. Sedan Java 9 (2017) infördes den nya snabba releasemodellen med halvårsutgåvor; tidigare stora förändringar skedde mer sällan. Oracle erbjuder både Oracle JDK och bidrar till OpenJDK; licensmodellerna har förändrats vilket gjort att många organisationer använder OpenJDK‑builds från olika leverantörer för kostnadsfri användning och säkerhetsuppdateringar.

Objektorienterat och språkegenskaper

Java är objektorienterat, vilket innebär att program struktureras kring objekt som representerar data och beteenden. Språket stödjer klassisk objektorientering med inkapsling, arv (single inheritance för klasser), polymorfism och gränssnitt (som tillåter multipelt ”är‑en” beteende). Syntaxen i Java påminner om C, C++ och C#, men kod från de språken kan vanligtvis inte köras i Java utan ändringar.

Språket har utvecklats över tiden: typiska funktioner som generics (Java 5), lambda‑uttryck och Stream API (Java 8), modulär struktur (Java 9) och förbättrade verktyg för minneshantering och samtidighet har lagts till. Java är ett statiskt typat språk med stark typkontroll, och har primitiva typer (int, boolean etc.) samt referenstyper (klasser, gränssnitt).

JVM, bytecode och plattformsoberoende

Java gör sig plattformsoberoende genom att kompilera källkod till Java‑bytecode istället för direkt till maskinkod. När kompilatorn körs genereras .class‑filer som innehåller bytecode. Denna bytecode körs av Java Virtual Machine (JVM) som tolkar eller JIT‑kompilerar (Just‑In‑Time) bytekoden till maskinkod på den aktuella plattformen. JVM‑implementeringar, som HotSpot (vanlig i OpenJDK/Oracle JDK), innehåller avancerade optimeringar och olika garbage collectors (till exempel G1, ZGC) för att förbättra prestanda och minneshantering.

Mer konkret: Java‑kompilatorn omvandlar koden till Java-bytecode i stället för maskinkod, och JVM ansvarar för att översätta och köra den på den lokala datorn. Denna separering gör att samma bytecode kan köras på olika operativsystem och arkitekturer utan att källkoden ändras.

Java på Android och andra plattformar

Java körs på många olika operativsystem, inklusive Android, världens mest populära operativsystem för mobiltelefoner (Android använder dock inte alltid standard‑JVM; Android‑appar skrivna i Java kompileras i praktiken till DEX‑format och körs på Android Runtime (ART) eller tidigare Dalvik). Google har på senare år rekommenderat Kotlin som primärt språk för Android, men Kotlin är fullständigt interoperabelt med befintlig Java‑kod och använder samma Java‑ekosystem.

Utöver mobiltelefoner används Java mycket inom server‑ och företagsapplikationer (back‑end), webbservrar, desktopapplikationer, inbyggda system, stordatabearbetning (t.ex. Hadoop), och som bas för många ramverk och bibliotek (t.ex. Spring, Jakarta EE).

Verktyg, distributioner och säkerhet

Den som utvecklar i Java använder vanligtvis en JDK (Java Development Kit) som innehåller kompilatorn (javac), verktyg och standardbibliotek. Populära byggverktyg och beroendehanterare är t.ex. Maven och Gradle, och vanliga IDE:er är IntelliJ IDEA, Eclipse och NetBeans. Flera leverantörer erbjuder OpenJDK‑byggnader med olika supportvillkor; välj en leverantör som ger de säkerhetsuppdateringar och den support som krävs för din miljö.

Java får regelbundet säkerhetsuppdateringar. För produktionssystem är det viktigt att använda en nyare LTS‑release eller en distributionsleverantör som tillhandahåller fortlöpande patchar.

Sammanfattning

  • Java är ett moget, objektorienterat och portabelt språk med bred användning i både klient‑ och serversystem.
  • Plattformsoberoendet uppnås genom bytecode och JVM, men Android använder ett eget körformat (DEX/ART).
  • Välj en lämplig LTS‑version och distributionsleverantör för stabilitet och säkerhetsuppdateringar.
  • Ekosystemet är stort: ramverk, verktyg och ett aktivt samhälle gör Java till ett praktiskt val för många typer av projekt.