Wat u moet weten over Java Virtual Machine?



Deze blog behandelt het concept van virtuele Java-machines in detail met de componenten van de architectuur en de belangrijkste verschillen tussen JVM, JRE en JDK

taal is al heel lang een gigant in de IT-industrie. Het heeft een aantal eersteklas concepten die het beter maken dan de rest van de programmeertaal. Een voorbeeld van zo'n concept is de virtuele Java-machine, in dit artikel zullen we meer te weten komen over de verschillende aspecten van virtuele machine in detail. Hieronder volgen de onderwerpen die in deze blog worden besproken:

Wat is Java Virtual Machine?

Java virtual machine is een platformonafhankelijke abstracte machine die een runtime-omgeving biedt waarin de Java-bytecode wordt uitgevoerd.





Het is een onderdeel van de Java-runtime-omgeving die de Java-bytecode omzet in machinaal leesbare taal. De belangrijkste die we in een Java-programma hebben, wordt eigenlijk aangeroepen door de virtuele Java-machine.

jvm - java virtuele machine - edureka

Waarom hebben we Java Virtual Machine nodig?

We hebben de virtuele Java-machine nodig voor de taken die deze uitvoert, die uiterst noodzakelijk zijn voor elke ontwikkeling waarbij Java betrokken is. Hieronder volgen enkele taken die de virtuele Java-machine uitvoert.



  • Laadt de code
  • Code verificatie
  • Uitvoering van de code
  • Het biedt de run-time omgeving voor de applicaties
  • Geheugengebied
  • Registreer set
  • Biedt een vuilnisophaalhoop
  • Rapportage van de fatale fouten
  • Verschaft een klasse bestandsformaat

Bij al deze bewerkingen is de virtuele Java-machine een integraal onderdeel van de Java-ontwikkeling. Laten we proberen te begrijpen hoe het werkt met behulp van de Java virtuele machine-architectuur.

Java Virtual Machine Architecture

De architectuur van de virtuele Java-machine is vrij eenvoudig, het heeft naast andere componenten een geheugengebied, een klassenlader en een uitvoeringsengine. laten we ze allemaal in detail bespreken.

ClassLoader

Het is een subsysteem dat wordt gebruikt om klassebestanden te laden. Elke keer dat we een programma in Java draaien, wordt het eerst geladen door de ClassLoader. de belangrijkste functie omvat initialisatie, koppeling en laden. Hieronder volgen de ingebouwde classloaders in Java.



    • Bootstrap ClassLoader - Het is de superklasse van Extension ClassLoader die het bestand rt.jar laadt.

    • Uitbreiding ClassLoader - Het laadt de jar-bestanden die zich in de directory bevinden.

    • Systeem / applicatie ClassLoader - Het laadt de classfiles van het classpath.

    • Laadoperatie - Eerst laadt de classLoader de .class-bestanden en genereert de overeenkomstige gegevens in het binaire formaat die worden opgeslagen in het methodegebied.

    • Koppelingsbewerking - Na het laden bereidt het zich voor, verifieert het en maakt het een oplossing. JVM wijst het geheugen toe aan klassevariabelen en initialiseert het geheugen naar standaardwaarden. Het verzekert de juistheid van het .class-bestand en wanneer de verificatie mislukt, krijgen we de runtime-uitzonderingsfout.

    • Initialisatie - Alle statische variabelen worden toegewezen met hun waarden die in deze fase in het codeblok zijn gedefinieerd.

JVM-geheugen

  • Methode gebied - Het slaat de structuren voor elke klasse op, zoals de code, veldgegevens, runtime-constante pool, methodegegevens, enz.

  • Hoop - Objecten worden toegewezen tijdens de runtime in de heap.

  • JVM-taalstapels - Het slaat lokale variabelen en resultaten op. Het speelt een belangrijke rol bij het oproepen en retourneren van resultaten. Telkens wanneer een methode wordt aangeroepen, wordt een frame gemaakt en vernietigd zodra de aanroep eindigt of is voltooid.

  • PC-registers - Het heeft het adres of de locatie van de JVM-instructie die wordt uitgevoerd.

  • Native Method Stacks - Alle native methoden die in de applicaties worden gebruikt, zijn aanwezig in de native methodestacks.

  • Uitvoeringsmotor - Een uitvoeringsengine bevat een virtuele processor, een interpreter en een JIT compiler.

  • Native methode Koppel - Het is een dat biedt.

Nu we de architectuur van de JVM hebben begrepen, gaan we eens kijken naar het uitvoeringsproces en de compilatie van code.

Uitvoeringsproces

De volgende stappen vinden plaats tijdens het uitvoeren en compileren van een Java-code.

  • De belangrijkste methode wordt opgeslagen in een enkel bestand en andere methoden worden opgeslagen in verschillende bestanden.
  • Na de compilatie levert het overeenkomstige .class-bestanden met de bytecode zonder enige koppeling, in tegenstelling tot C.
  • Tijdens de uitvoering worden de klassebestanden gecontroleerd op inbreuken met behulp van de Classloader.
  • Hierna wordt de bytecode omgezet in de bijbehorende native machinecode. Dit is ook de reden waarom Java relatief langzamer is.

Nu we weten hoe de uitvoering werkt, gaan we eens kijken naar het verschil tussen JDK, JRE en JVM.

Verschil tussen JDK, JRE en JVM

Hieronder volgen enkele belangrijke verschillen tussen JDK , JVM en JRE.

verschil tussen hash-map en hash-tabel
  1. JDK staat voor Java Development Kit en JRE staat voor Java runtime environment.
  2. JDK is voor ontwikkeling, terwijl JRE voor de runtime-omgeving is.
  3. JVM is een essentieel onderdeel van JDK en JRE om elk Java-programma uit te voeren.
  4. JVM is een integraal onderdeel van Java-programmering en biedt platformonafhankelijkheid.

Dit brengt ons aan het einde van dit artikel waar we in detail hebben geleerd over de virtuele Java-machine. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Java Virtual Machine' relevant vond, bekijk dan de Edureka , een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om u te helpen bij elke stap op uw reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Mocht u nog vragen tegenkomen, stel dan gerust al uw vragen in het commentaargedeelte van 'Java Virtual Machine' en ons team zal u graag antwoorden.