Annons

Java Virtual Machine (JVM) är ett riktigt namn dropper när du programmerar i Java. Till skillnad från vad namnet indikerar, kan Java Virtual Machine också stöta på i förhållande till andra programmeringsspråk.

I allmänhet är det inte nödvändigt att veta vad Java Virtual Machine är, eller ens vad den gör för att kunna programmera i Java. Å andra sidan hjälper dig att bekanta dig med maskinens inre funktioner för att öka din förståelse och övergripande insikt.

Den här artikeln går över tanken på Java Virtual Machine, vad den gör för dig och några av de viktigaste för- och nackdelarna. Även om jag har försökt att hålla det enkelt, och det finns definitivt mer avancerad litteratur om ämnet, förväntas en rudimentär förståelse av Java och programmering.

Språk på hög nivå

Semantiken i ett programmeringsspråk är utformad för att ligga nära vårt naturliga språk, samtidigt som den är kortfattad och lätt att tolka för en maskin. Som du antagligen vet är programmeringsspråket helt annorlunda från maskinkoden, den uppsättning instruktioner som en dator använder för att konstruera och köra ett program. Detta kallar vi

instagram viewer
språk på hög nivå; en eller flera nivåer av abstraktion från maskinkoden.

Innan den kan köras måste kod på hög nivå först tolkas. Många programmeringsgränssnitt sammanställs i förväg (AOT-sammanställning) för en specifik plattform. Detta gör programmet mer effektivt vid körning, men mycket mindre kompatibelt med olika plattformar. Java, däremot, fungerar med ett mellanspråk som heter Java-bykod och den Java Virtual Machine.

JVM & Java Bytecode

När ditt Java-projekt bygger översätter det källkoden (ingår i *.java källfiler) till Java-bytekod (finns ofta i * .klassfiler). Detta tar din högnivåkod ett steg närmare maskinkoden, men inte riktigt där ännu. Den här kodkoden är en samling av kompakta instruktioner. lättare för en maskin att tolka, men mindre läsbar.

När du kör ett Java-program på din dator, mobiltelefon eller någon annan Java-aktiverad plattform, skickar du i grunden denna Java-bytekod till Java Virtual Machine. Tolkaren i Java Virtual Machine börjar vanligtvis sammanställa hela bytkoden under körning, enligt principerna om så kallade just-in-time sammanställning. Detta skapar den typiska, om än ofta små förseningen när du öppnar en Java-applikation, men förbättrar generellt programprestanda jämfört med tolkad sammanställning.

java virtuell maskin

Den största fördelen med detta system är den ökade kompatibiliteten. Eftersom dina applikationer körs i en virtuell maskin istället för direkt på din hårdvara kan utvecklaren programmera och bygga sin applikation en gång, som sedan kan köras på alla enheter med en implementering av Java Virtual Maskin. Denna princip har fött Java-slogan: "Skriv en gång, kör överallt.”

Pro: Kompatibilitet och ökad säkerhet

Förutom kodkompatibilitet kommer Java Virtual Machine med andra fördelar. En av de viktigaste av dem är den relativa säkerheten för Java-program till följd av Java Virtual Machine. Säkerhet, vilket innebär att ett program som körs i en virtuell maskin är mycket mindre benägna att störa användarens operativsystem eller skada datafiler, om fel uppstår.

Con: Olika implementeringar av JVM och felsökning

En av de viktigaste kritikerna som uttrycks mot kodkompatibiliteten och Java Virtual Machine beror på de många olika implementeringarna av den senare. Du förstår, Java Virtual Machine är inte en mjukvara. Oracle, ägarna till Java, har implementerat Java Virtual Machine, men andra kan göra sitt om det uppfyller olika praktiska och avtalsmässiga anspråk.

Dessa olika implementeringar innebär att din kod kan fungera smidigt på en Java Virtual Machine, men kraschar och bränns på en annan. Även om du i praktiken kan skriva din kod en gång och köra den överallt, mer komplex kod ibland måste fortfarande felsökas i olika Java Virtual Machine-implementationer för att säkerställa korrekt drift.

Har du någon erfarenhet av att arbeta med Java Virtual Machine? Om så är fallet, är det något jag missade här som bör nämnas?

Bildkredit: Michaelaw, Dcoetzee

Jag är författare och datavetenskapsstudent från Belgien. Du kan alltid göra mig en tjänst med en bra artikelidé, bokrekommendation eller receptidé.