Java – objektorienterat, plattformsoberoende programspråk

Lär dig Java: objektorienterat, plattformsoberoende programspråk. Historia, LTS-versioner, bytecode, JVM och Android-användning — allt för nybörjare och utvecklare.

Författare: Leandro Alegsa

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.

Java-koncept

Java utvecklades för att uppnå fem huvudmål. Dessa är:

  • Java ska vara lätt att lära sig, objektorienterat och distribuerat.
  • Java ska vara säkert och starkt.
  • Java bör inte vara beroende av någon datorarkitektur eller plattform.
  • Java bör fungera bra.
  • Java bör kunna ha en tolk som är skriven för den, och ha stöd för parallellism och dynamisk typning.

 

Java-plattform

Java-plattformen är en grupp programvaruprodukter från Sun Microsystems. Plattformen används för att utveckla och köra Java-program. Plattformen innehåller den exekveringsmotor (kallad Java Virtual Machine) som gör att Java-programmen kan göra samma sak på olika datorsystem.

Denna förmåga att kunna utveckla programvara på en plattform och köra den på andra plattformar kallas "plattformsoberoende förmåga".

Exempel på Java-program

Ett exempel på ett Java-program med "Hello World":

/** * Detta är ett enkelt program i Java.   * Det visar "Hello World!" på skärmen.   */ class HelloWorld { public static void main(String[] args) { System. out. println("Hello World!"); } }

Typer av Java-program

Det finns många typer av Java-program som körs på olika sätt:

  • Java-applet - litet program skrivet i Java som laddas ner från en webbplats och körs i en webbläsare på en klientdator.
  • Applikation - körs på en klientdator. Om den är online måste den laddas ner innan den kan köras.
  • JAR-fil (Java-arkiv) - används för att paketera Java-filer till en enda fil (nästan exakt som en zip-fil).
  • Servlet - körs på en webbserver och hjälper till att skapa webbsidor.
  • Swing-applikation - används för att bygga en applikation som har ett grafiskt gränssnitt (fönster, knappar, menyer osv.).
  • EJB - körs på en webbserver och används för att utveckla stora, komplexa webbplatser.

Fördelar

Java används ofta för att lära studenter att programmera som ett första språk, men används fortfarande även av yrkesverksamma.

  • Java kräver att varje variabel initieras. Vissa äldre språk, t.ex. C, tillåter att variabler inte initialiseras, vilket kan orsaka slumpmässiga fel med mystiska fel.
  • Java kräver att varje metod deklarerar en returtyp - metoden ska alltid returnera ett värde, utom om returtypen är void. Detta förhindrar också buggar.
  • Java har en stor uppsättning klasser och metoder, Java API, som kan användas utan att du behöver utveckla så mycket kod "från grunden".
  • Till skillnad från C är primitiva typer i Java, t.ex. int, alltid lika stora i antal bitar, vilket bidrar till plattformsoberoende kompatibilitet.
  • Java brukade anses vara långsammare än C, men det har blivit mindre viktigt på senare år eftersom datorerna är snabbare.
  • Java har undantagshantering som kräver att programmeraren hanterar felvillkor som t.ex. fel i Input/Output.
  • Kod som kompileras på en Javaplattform kan köras på andra plattformar som stöder Java utan att källkoden eller bytekoden ändras. Detta innebär att en person kan göra ett Java-program för en Windows-dator och låta det köras på en Linux-dator eller en Mac-dator.

Kritik

Java har också kritiserats. Några av kritikpunkterna är:

  • Generics lades till i Java på ett sådant sätt att befintlig kod kunde fortsätta att köras. Detta gjordes med hjälp av type erasure. Detta innebär att den faktiska typen av ett generiskt argument tas bort under kompileringen. Detta kan leda till att Java-tolken ibland beter sig på oväntade sätt.
  • Java har inga heltalstyper utan förtecken, vilket språk som C använder i stor utsträckning. Detta innebär också att det är omöjligt att direkt utbyta numeriska data mellan C och Java-program. Kryptografi är också i viss mån beroende av sådana typer; detta gör det svårare att skriva program som använder kryptografi i Java.
  • IEEE har definierat en standard för aritmetik med flytande punkter, IEE 754. Java stöder endast en del av funktionerna i denna standard.

Frågor och svar

F: Vad heter det programmeringsspråk som skapades av Sun Microsystems?


S: Det programmeringsspråk som skapats av Sun Microsystems heter Java.

F: Vem stöder och håller Java uppdaterat för närvarande?


S: Oracle Corporation stöder och håller Java uppdaterat.

F: Vilka är de aktuella LTS-versionerna (Long Term Support) av Java?


S: De nuvarande LTS-versionerna (Long Term Support) av Java är version 17, 11 och 8.

F: När släpptes den senaste versionen av Java?


S: Den senaste versionen av Java, version 19, släpptes i september 2022.

F: Finns det något annat företag som stöder Java förutom Oracle?


Svar: Ja, Eclipse Adoptium stöder också Java fram till minst maj 2026 för version 8 och minst september 2027 för version 17.

F: Vilken typ av kod använder Java?


S: Java använder objektorienterad kod, vilket innebär att den är baserad på objekt som arbetar tillsammans för att programmen ska kunna utföra sina uppgifter. Den liknar C, C++ eller C#, men kod som skrivits i dessa språk fungerar i de flesta fall inte utan att ändras.

F: Hur gör Java sig självt plattformsoberoende?


S: Java gör sig plattformsoberoende genom att kompilatorn omvandlar koden till ett särskilt format som kallas bytecode i stället för maskinkod. Detta innebär att när programmet körs kan bytekoden tolkas av ett särskilt program som kallas virtuell maskin som översätter den till maskinkod så att den kan köras på olika operativsystem, t.ex. Android.


Sök
AlegsaOnline.com - 2020 / 2025 - License CC3