Mida peaksite teadma Java virtuaalsest masinast?



Selles ajaveebis käsitletakse üksikasjalikult Java virtuaalse masina kontseptsiooni koos selle arhitektuuri komponentidega ning peamiste erinevustega JVM, JRE ja JDK vahel

keel on olnud IT-tööstuses hiiglaslik juba pikka aega. Sellel on mõned tipptasemel mõisted, mis muudavad selle paremaks kui ülejäänud programmeerimiskeel. Üheks selliseks kontseptsiooniks on Java virtuaalne masin, sellest artiklist saame teada selle erinevatest aspektidest virtuaalmasin üksikasjalikult. Siin blogis käsitletakse järgmisi teemasid:

klassi __init__ püüton

Mis on Java virtuaalne masin?

Java virtuaalne masin on platvormist sõltumatu abstraktne masin, mis pakub käituskeskkonda, kus käivitatakse Java baidikood.





See on Java käituskeskkonna osa, mis teisendab Java baitkoodi masinloetavaks keeleks. Peamine mis meil Java programmis on, kutsub tegelikult Java virtuaalne masin.

jvm - java virtuaalne masin - edureka

Miks me vajame Java virtuaalset masinat?

Vajame Java virtuaalset masinat selle teostatavate ülesannete jaoks, mis on ülimalt vajalikud igasuguse Java-ga seotud arenduse jaoks. Järgnevalt on toodud mõned ülesanded, mida Java virtuaalne masin teeb.



  • Laadib koodi
  • Koodi kontrollimine
  • Koodi täitmine
  • See pakub rakenduste käitamise keskkonda
  • Mälupiirkond
  • Registrikomplekt
  • Annab prügikorjamise kuhja
  • Surmavatest vigadest teatamine
  • Pakub a klass failiformaat

Kõigi nende toimingute korral on Java virtuaalne masin Java arenduse lahutamatu osa. Proovime Java virtuaalse masina arhitektuuri abil mõista, kuidas see töötab.

Java virtuaalse masina arhitektuur

Java virtuaalmasina arhitektuur on üsna lihtne, teiste komponentide hulgas on mälupiirkond, klassi laadur ja käivitamismootor. arutame neid kõiki üksikasjalikult.

ClassLoader

See on alamsüsteem, mida kasutatakse klassi failide laadimiseks. Alati, kui käivitame programmi Java-s, laadib selle esmalt ClassLoader. peamine funktsioon hõlmab initsialiseerimist, linkimist ja laadimist. Järgmised on Java sisseehitatud klassirakendajad.



    • Bootstrap ClassLoader - see on laienduse ClassLoader superklass, mis laadib faili rt.jar.

    • Pikendamine ClassLoader - see laadib kataloogis olevad purkfailid.

    • Süsteem / rakendus ClassLoader - see laadib klassi failid klassirajalt.

    • Laadimine - Kõigepealt laadib classLoader .class-failid ja genereerib vastavad andmed binaarses vormingus, mis salvestatakse meetodi piirkonda.

    • Operatsiooni linkimine - Pärast laadimist see valmistab ette, kontrollib ja lahendab. JVM eraldab klassi muutujate jaoks mälu ja lähtestab mälu vaikeväärtusteks. See tagab .class-faili õigsuse ja kui kontrollimine ebaõnnestub, kuvatakse runtime-erandi viga.

    • Initsialiseerimine - Kõigile staatilistele muutujatele määratakse nende väärtused, mis on määratletud selles faasis koodiplokis.

JVM mälu

  • Meetodi ala - See salvestab iga klassi struktuurid nagu kood, väljaandmed, käituse konstantse kogumi, meetodi andmed jne.

  • Hunnik - Objektid eraldatakse kuhja käitamise ajal.

  • JVM-i keelevirnad - See salvestab kohalikud muutujad ja tulemused. Sellel on oluline roll tulemuste esilekutsumisel ja tagastamisel. Alati, kui meetodit käivitatakse, luuakse kaader ja see hävitatakse kohe, kui kutsumine lõpeb või lõpeb.

  • PC registrid - Sellel on käivitatava JVMinstructioni aadress või asukoht.

  • Kohaliku meetodi korstnad - Kõik rakendustes kasutatavad natiivmeetodid on olemas natiivmeetodi virnades.

  • Täitemootor - Täitemootor sisaldab virtuaalset protsessorit, tõlki ja a JIT koostaja.

  • Native meetod Liides - See on mis annab.

Nüüd, kui oleme aru saanud JVM-i arhitektuurist, heitkem pilk täitmisprotsessile ja koodi kompileerimisele.

Täitmisprotsess

Järgmised toimingud toimuvad Java-koodi käivitamise ja kompileerimise ajal.

  • Põhimeetod on salvestatud ühte faili ja muud meetodid erinevatesse failidesse.
  • Pärast kompileerimist pakub see vastavaid .class-faile, millel on erinevalt C-st baitkood ilma linkideta.
  • Käivitamise ajal kontrollitakse klassi faile Classloaderi abil rikkumiste osas.
  • Pärast seda teisendatakse baitkood vastavaks masina koodiks. See on ka põhjus, miks Java on suhteliselt aeglasem.

Nüüd, kui teame, kuidas täitmine töötab, heitkem pilk JDK, JRE ja JVM erinevusele.

JDK, JRE ja JVM erinevus

Järgnevalt on toodud mõned olulised erinevused JDK , JVM ja JRE.

  1. JDK tähistab Java arenduskomplekti ja JRE Java käituskeskkonda.
  2. JDK on mõeldud arendamiseks, samas kui JRE on tööaja keskkond.
  3. JVM on JDK ja JRE oluline osa mis tahes Java-programmi käivitamiseks.
  4. JVM on Java programmeerimise lahutamatu osa ja tagab platvormi sõltumatuse.

See viib meid selle artikli lõppu, kus oleme Java virtuaalse masina kohta üksikasjalikult õppinud. Loodan, et teil on selge kõigega, mida teiega selles õpetuses jagati.

Kui leiate, et see artikkel on jaotises „Java virtuaalne masin” asjakohane, vaadake Edurekat , usaldusväärne veebiõppeettevõte, mille võrgustik sisaldab üle 250 000 rahuloleva õppija, levis üle kogu maailma.

Oleme siin, et aidata teid igal sammul oma teekonnal ja koostada õppekava, mis on mõeldud õpilastele ja spetsialistidele, kes soovivad olla Java arendajad. Kursus on loodud selleks, et anda teile Java programmeerimises edukas algus ja õpetada teid nii Java-põhiprogrammide kui ka edasijõudnute mõistete ning erinevate Java-raamistike, näiteks Hibernate & Spring, jaoks.

Kui teil tekib küsimusi, esitage julgelt kõik oma küsimused jaotise „Java Virtual Machine“ kommentaaride osas ja meie meeskond vastab sellele hea meelega.