Advertentie

De Java Virtual Machine (JVM) is een echte naamdruppelaar wanneer u in Java programmeert. In tegenstelling tot wat de naam aangeeft, kan de Java Virtual Machine ook worden aangetroffen in relatie tot andere programmeertalen.

Over het algemeen is het niet nodig om te weten wat de virtuele Java-machine is, of zelfs wat deze doet, om in Java te kunnen programmeren. Aan de andere kant helpt het vertrouwd raken met de innerlijke werking van een machine om uw begrip en algemeen inzicht te vergroten.

Dit artikel behandelt het idee van de Java Virtual Machine, wat het voor u doet en enkele van de belangrijkste voor- en nadelen. Hoewel ik heb geprobeerd het simpel te houden, en er is zeker meer geavanceerde literatuur over het onderwerp, wordt een rudimentair begrip van Java en programmeren verwacht.

Talen op hoog niveau

De semantiek van een programmeertaal is ontworpen om dicht bij onze natuurlijke taal te blijven, terwijl ze beknopt en gemakkelijk te interpreteren blijft voor een machine. Zoals u waarschijnlijk weet, is de programmeertaal totaal anders dan machinecode, de set instructies die een computer gebruikt om een ​​programma te bouwen en uit te voeren. Dit noemen we

talen op hoog niveau; een of meer abstractieniveaus van de machinecode.

Voordat het kan worden uitgevoerd, moet code op hoog niveau eerst worden geïnterpreteerd. Veel programmeerinterfaces compileren vooraf (AOT-compilatie) voor een specifiek platform. Dit maakt het programma tijdens runtime efficiënter, maar veel minder compatibel met verschillende platforms. Java werkt daarentegen met een tussentaal genaamd Java-bytecode en de Java virtuele machine.

JVM & Java Bytecode

Wanneer uw Java-project bouwt, vertaalt het de broncode (opgenomen in *.Java bronbestanden) naar Java bytecode (meestal in * .class-bestanden). Dit brengt uw code op hoog niveau een stap dichter bij machinecode, maar is er nog niet helemaal. Deze bytecode is een verzameling compacte instructies; gemakkelijker voor een machine om te interpreteren, maar minder leesbaar.

Wanneer u een Java-toepassing op uw computer, mobiele telefoon of een ander voor Java geschikt platform uitvoert, geeft u deze Java-bytecode in wezen door aan de Java Virtual Machine. De tolk in de Java Virtual Machine begint meestal met het compileren van de volledige bytecode tijdens runtime, volgens de principes van de zogenaamde just-in-time compilatie. Dit zorgt voor de typische, zij het vaak lichte vertraging bij het openen van een Java-toepassing, maar verbetert over het algemeen de programmaprestaties vergeleken met geïnterpreteerde compilatie.

java virtuele machine

Het grote voordeel van dit systeem is de verhoogde compatibiliteit. Omdat uw applicaties op een virtuele machine draaien in plaats van rechtstreeks op uw hardware, kan de ontwikkelaar en programmeren bouwen hun applicatie één keer, die vervolgens op elk apparaat kan worden uitgevoerd met een implementatie van de Java Virtual Machine. Dit principe heeft de slogan van Java doen ontstaan: “Schrijf een keer, ren overal heen.”

Pro: compatibiliteit en verhoogde beveiliging

Afgezien van codecompatibiliteit, heeft de Java Virtual Machine nog andere voordelen. Een van de belangrijkste is de relatieve beveiliging van Java-programma's als gevolg van de Java Virtual Machine. Beveiliging, wat betekent dat een programma dat op een virtuele machine wordt uitgevoerd, veel minder snel het besturingssysteem van de gebruiker verstoort of gegevensbestanden beschadigt als er fouten optreden.

Con: Verschillende JVM-implementaties en foutopsporing

Een van de belangrijkste kritiekpunten op de codecompatibiliteit en de Java Virtual Machine is te wijten aan de vele verschillende implementaties van de laatste. U ziet, de Java Virtual Machine is niet één stuk software. Oracle, de eigenaren van Java, hebben hun implementatie van de Java Virtual Machine, maar andere mensen kunnen die van hen maken als deze voldoen aan verschillende praktische en contractuele claims.

Door deze verschillende implementaties kan uw code soepel werken op de ene virtuele Java-machine, maar crashen en branden op een andere. Hoewel u in de praktijk uw code één keer kunt schrijven en overal kunt uitvoeren, soms complexere code moet nog steeds worden opgespoord in verschillende Java Virtual Machine-implementaties om een ​​correcte werking te garanderen.

Heb je ervaring met het werken met de Java Virtual Machine? Zo ja, is er iets dat ik hier heb gemist dat moet worden vermeld?

Afbeelding tegoed: Michaelaw, Dcoetzee

Ik ben een schrijver en student computerwetenschappen uit België. Je kunt me altijd een plezier doen met een goed artikelidee, boekaanbeveling of receptidee.