Wat is JVM?

JVM is een specificatie waarin de werking van de Java Virtual Machine specifiek wordt beschreven. Het algoritme is echter een onafhankelijke identiteit die alleen wordt gekozen door de implementatieprovider zoals Oracle en andere gerenommeerde bedrijven. Als zodanig is JVM een implementatie die bekend staat als Java Runtime Environment (JRE).

Definitie

Het wordt gedefinieerd als een beschrijving voor een softwareprogramma met een runtime-omgeving voor code en de belangrijke uitvoering ervan. Met andere woorden, het is de manier waarop we de Java-programma's uitvoeren - de JVM-instellingen configureren en erop vertrouwen dat we tijdens het uitvoeringsproces omgaan met programmabronnen.

Begrip

Java staat bekend als platformonafhankelijk vanwege de Java Virtual Machine. Wanneer een inzending wordt gedaan op verschillende computers met het verschillende besturingssysteem met JVM, wordt de bytecode door JVM in machinetaaltaal geïnterpreteerd. Om precies te zijn, zijn JVM-programma's geschreven in C-programmeertaal, terwijl JVM onafhankelijk is van het besturingssysteem. Het is een belangrijk onderdeel van de Java-architectuur.

Afgezien van dit alles is het verantwoordelijk voor het toewijzen van het essentiële geheugen dat vereist is voor een Java-programma. Het is ook verantwoordelijk voor het verbieden van de geheugenruimte.

Wat het doet?

De cruciale operaties die JVM uitvoert zijn als volgt:

  • Code laden
  • Code verifiëren
  • Code uitvoering
  • Runtime-omgevingsvoorziening

Afgezien van dit alles, rolt het classificaties uit voor Class-bestandsformaat, Geheugengebied, Garbage-verzamelde heap, Register-set, Fatale foutrapportage, etc.

JVM-architectuur

Laten we enkele belangrijke inzichten krijgen over de interne architectuur van JVM die bestaat uit:

1. Classloader

Het is een subsysteem van JVM dat wordt gebruikt om klassebestanden te laden. Tijdens het uitvoeren van het Java-programma wordt het eerst geladen door de classloader. De drie classloaders die Java bevat zijn als volgt:

a) Bootstrap ClassLoader

Het is de superklasse van Extension Classloader. Het helpt bij het laden van de rt.jar-bestanden die alle klasse-bestanden bevatten.

b) Uitbreiding ClassLoader

Het is de bovenliggende classloader van System classloader en onderliggende classloader van Bootstrap. De jar-bestanden in de map $ JAVA_HOME / jre / lib / ext kunnen worden geëxtraheerd via de Extension ClassLoader.

C) Systeem / toepassing ClassLoader

Het is het kind van Extension classloader ook bekend als Application classloader. De klassenbestanden van het klassenpad kunnen erdoor worden uitgepakt. Het Classpath, dat is ingesteld op de huidige map, kan standaard worden gewijzigd met de schakelaar '-cp' of '-classpath'.

2. Klasse (methode) gebied

De pre-class structuren zoals veld- en methodegegevens, runtime constante pool en de code voor methoden worden opgeslagen in Class (Method) Area. Het is een geheugen dat is gemaakt bij het opstarten van JVM en wordt gedeeld met alle threads zoals Heap.

3. Hoop

De objecten worden toegewezen via dit handige runtime-gegevensgebied. Het is een geheugenplaats waarin objecten samen met de instantievariabelen worden opgeslagen. Wanneer een object in Java wordt gemaakt, gaat het de heap in - het geheugengebied.

4. Stapel

Naast het opslaan van frames, bevat Java Stack variabelen en gedeeltelijke resultaten. Het speelt ook een centrale rol in methode, aanroep en terugkeer. Elke afzonderlijke thread bestaat uit zijn privé-JVM-stack, die tegelijkertijd met de thread is gemaakt. Wanneer een methode escaleert, wordt een nieuw frame gegenereerd dat wordt verbrijzeld wanneer de methode-aanroep wordt voltooid.

5. Registreren van programmateller (pc)

Het pc-register bevat het JVM-instructieadres op het moment van uitvoering. Door instructies bij te houden, heeft deze waarde voor elke instructie die niet is gedefinieerd voor de native methoden.

6. Native Method Stack

De native procedures die in de applicaties worden gebruikt, maken deel uit van de Native Method Stack. Deze methoden zijn geschreven in andere talen dan Java. Bij elke thread kunnen JVM-implementaties niet vertrouwen op conventionele stacks en kunnen ze geen native methoden laden. Om precies te zijn, het is vergelijkbaar met stapel, maar wordt gebruikt voor native methoden.

7. Motor

Als het belangrijkste aspect van JVM communiceert het met zijn verschillende geheugengebieden. Dit bevat:

een. Vuilnisman

Dit speelt een cruciale rol in het dynamische geheugenbeheersysteem van de JVM. Het geheugen dat bezet is en waarnaar niet langer door een van de bereikbare Java-objecten wordt verwezen, wordt vrijgegeven via de Garbage Collector.

b. Tolk

Het voert de instructies uit na het lezen van de bytecodestroom.

c. Just-in-time (JIT) compiler

De JIT-compiler maakt prestatieverbetering mogelijk en compileert tegelijkertijd delen van de bytecode met vergelijkbare functionaliteit. Het helpt bij het verminderen van de hoeveelheid tijd die nodig is voor het compilatieproces.

8. Java Native Interface (JNI)

De applicaties die in andere talen zijn geschreven, bijvoorbeeld C, C ++, Assembly, enz. Kunnen worden verbonden via een interface die wordt geleverd door JNI. JNI-framework wordt door Java gebruikt om te communiceren met OS-bibliotheken of om uitvoer naar de console te verzenden.

Wat is het nut van JVM?

De JVM heeft twee primaire functies: om Java-programma's op elk apparaat of besturingssysteem te laten draaien (bekend als het "Write once, run Any" -principe) en om programmageheugen te beheren en te optimaliseren.

Voor-en nadelen

Java-programma's worden toepasselijk uitgevoerd via JVM. Bytecode - een tussentaal wordt gebruikt om Java-programma's te compileren en vervolgens uitgevoerd via JVM. Elk individueel programma dat in bytecode wordt gecompileerd, kan worden uitgevoerd door elk platform dat wordt aangedreven door JVM. Dit maakt Java-software effectiever en ook compatibel volgens de verschillende computerplatforms. De JVM heeft een paar opmerkelijke voor- en nadelen die elke ontwikkelaar zorgvuldig moet wegen voordat hij in Java-ontwikkeling investeert.

1. Beveiliging

Door de beveiligingsvaardigheden van JVM kunnen de programmeurs effectief high-end beveiligde Java-programma's schrijven. Het stelt de bronnen van het besturingssysteem in staat om de kwaadaardige software te identificeren en helpt ook dienovereenkomstig te voorkomen.

2. Prestaties

Java-programma's die op een JVM draaien, bieden waarschijnlijk een tragere uitvoering in vergelijking met de programma's die in C ++ zijn geschreven. Dit komt door de code-optimalisatie die te veel afhankelijk is van verschillende systeemspecifieke functies. Bovendien kan de Java-bytecode niet worden geoptimaliseerd voor een specifieke hardwareset, omdat deze systeemneutraal is.

3. Juistheid

Correct is het programma, dat effectief presteert en ten volle voldoet aan de verwachting van een gebruiker. Dankzij de ingebouwde functies van JVM kan het correct en zonder fouten werken.

Waarom zouden we JVM gebruiken?

Ondanks het feit dat Java syntactische code heeft, kan JVM op verschillende taalprogramma's draaien. Hieronder vindt u enkele redenen waarom het zo veel wordt gebruikt en waarom het op verschillende platforms wordt gebruikt:

Het gebruikt heap-geheugen: heap-geheugen is een kerncomponent die wordt gebruikt voor dynamische geheugentoewijzing voor het definiëren van klassen en objectinitialisatie en aangezien JVM heap-geheugen ondersteunt, heeft het brede acceptatie.

Beveiliging bieden voor externe codelocatie: JVM-framework is zodanig ontworpen dat externe toepassingen eenvoudig kunnen worden uitgevoerd. Deze theorie wordt gevolgd voor het uitvoeren van de Java-applet.

Conclusie

Het feit dat JVM op meerdere besturingssystemen werkt, geeft het een duim omhoog in het technologiedomein. Door het te gebruiken op Windows, Linux en andere besturingssystemen, is het ingeschakeld om bytecode te transformeren, ongeacht de hardware en het besturingssysteem dat moet worden uitgevoerd. Bovendien is de mogelijkheid om beveiliging te bieden aan de hostcomputer door hun gegevens en programma te beveiligen een andere reden waarom JVM in het verleden zo succesvol is geweest en in de toekomst nog steeds dominant is.

Aanbevolen artikelen

Dit is een handleiding geweest voor Wat is een JVM (Java Virtual Machine). Hier hebben we de basisconcepten besproken met de lijst van architectuur en gebruik van JVM. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Beste Javascript Frameworks
  2. Is Python object georiënteerd
  3. Toepassingen van C ++ in Real World
  4. Carrière in ASP.NET
  5. JRE vs JVM | Top 8 verschillen met (infographics)