Annonse
Java Virtual Machine (JVM) er en virkelig dropper når du programmerer i Java. I motsetning til hva navnet indikerer, kan Java Virtual Machine også oppstå i forhold til andre programmeringsspråk.
Generelt er det ikke nødvendig å vite hva Java Virtual Machine er, eller til og med hva den gjør, for å kunne programmere i Java. På den annen side hjelper deg å gjøre deg kjent med maskinens indre virkning for å øke forståelsen og den generelle innsikten.
Denne artikkelen børster om ideen om Java Virtual Machine, hva den gjør for deg og noen av de viktigste fordeler og ulemper. Selv om jeg har prøvd å holde det enkelt, og det definitivt er mer avansert litteratur om emnet, forventes en rudimentær forståelse av Java og programmering.
Høyt nivå språk
Semantikken i et programmeringsspråk er designet for å være i nærheten av vårt naturlige språk, mens du forblir kortfattet og lett å tolke for en maskin. Som du sikkert vet, er programmeringsspråket helt forskjellig fra maskinkode, settet med instruksjoner en datamaskin bruker for å konstruere og kjøre et program. Dette kaller vi
høyt nivå språk; ett eller flere nivåer av abstraksjon fra maskinkoden.Før den er i stand til å kjøre, må kode på høyt nivå først tolkes. Mange programmeringsgrensesnitt samles på forhånd (AOT-samlingen) for en spesifikk plattform. Dette gjør programmet mer effektivt under kjøretid, men langt mindre kompatibelt med forskjellige plattformer. Java, derimot, fungerer med et mellomspråk som heter Java bytekode og Java Virtual Machine.
JVM og Java Bytecode
Når Java-prosjektet ditt bygger, oversetter det kildekoden (inneholder *.java kildefiler) til Java bytekode (som oftest finnes i * .klasse filer). Dette tar høynivåkoden din ett skritt nærmere maskinkoden, men ikke helt der ennå. Denne bykoden er en samling av kompakte instruksjoner. enklere for en maskin å tolke, men mindre lesbar.
Når du kjører et Java-program på datamaskinen, mobiltelefonen eller en hvilken som helst annen Java-aktivert plattform, passerer du i grunn denne Java-bytekoden til Java Virtual Machine. Tolken i Java Virtual Machine starter vanligvis å kompilere hele bytekoden under kjøretid, etter prinsippene om såkalt just-in-time kompilering. Dette gir den typiske, om enn ofte svake forsinkelsen når du åpner en Java-applikasjon, men forbedrer generelt programytelsen sammenlignet med tolket sammenstilling.
Hovedfordelen med dette systemet er økt kompatibilitet. Siden applikasjonene dine kjører i en virtuell maskin i stedet for direkte på maskinvaren din, kan utvikleren programmere og bygg applikasjonen sin en gang, som deretter kan kjøres på alle enheter med implementering av Java Virtual Maskin. Dette prinsippet har født Java-slagordet: “Skriv en gang, løp overalt.”
Pro: Kompatibilitet og økt sikkerhet
Bortsett fra kodekompatibilitet, har Java Virtual Machine andre fordeler. En av de viktigste av dem er den relative sikkerheten til Java-programmer som et resultat av Java Virtual Machine. Sikkerhet, noe som betyr at et program som kjører i en virtuell maskin, er langt mindre sannsynlig å forstyrre brukerens operativsystem, eller ødelegge datafiler, hvis feil oppstår.
Con: Ulike implementeringer og feilsøking av JVM
En av de viktigste kritikkene som ble sagt mot kodekompatibiliteten og Java Virtual Machine skyldes de mange forskjellige implementeringene av sistnevnte. Du skjønner, Java Virtual Machine er ikke ett stykke programvare. Oracle, eierne av Java, har implementeringen av Java Virtual Machine, men andre mennesker kan gjøre sitt hvis det tilfredsstiller forskjellige praktiske og kontraktsmessige krav.
Disse forskjellige implementeringene betyr at koden din kan fungere problemfritt på en Java Virtual Machine, men krasjer og brenner på en annen. Selv om du i praksis kan skrive koden en gang og kjøre den overalt, mer kompleks kode noen ganger må fortsatt feilsøkes i forskjellige implementeringer av Java Virtual Machine for å sikre korrekt drift.
Har du noen erfaring med å jobbe med Java Virtual Machine? Er det i så fall noe jeg savnet her som bør nevnes?
Bildekreditt: Michaelaw, Dcoetzee
Jeg er en skribent og informatikkstudent fra Belgia. Du kan alltid gjøre meg en tjeneste med en god artikkelidee, bokanbefaling eller oppskriftside.