Mis on JVM? Java Virtuaalne masin Architektuur
Milles on JVM Java?
Java Virtuaalmasin (JVM) on mootor, mis pakub tรถรถkeskkonna juhtimiseks Java Code vรตi rakendusi. See teisendab Java baitkood masina keelde. JVM on osa Java Runtime Environment (JRE). Teistes programmeerimiskeeltes toodab kompilaator konkreetse sรผsteemi jaoks masinkoodi. Siiski Java kompilaator toodab koodi virtuaalmasinale, mida tuntakse kui Java Virtuaalne masin.
Kuidas JVM tรถรถtab?
Esiteks Java kood kompileeritakse baitkoodiks. Seda baitkoodi tรตlgendatakse erinevates masinates. Hostsรผsteemi ja Java allikas, baitkood on vahekeel. JVM sisse Java vastutab mรคluruumi eraldamise eest.
Sellest JVM-i รตpetusest saate teada
ArchiJVM (Java virtuaalne masin)
Nรผรผd selles JVM-i รตpetuses mรตistame ArchiJVM-i struktuur. JVM-i arhitektuur sisse Java sisaldab klassilaadurit, mรคluala, tรคitmismootorit jne.
1) ClassLoader
Klassilaadur on alamsรผsteem, mida kasutatakse klassifailide laadimiseks. See tรคidab kolme peamist funktsiooni, nimelt. Laadimine, linkimine ja lรคhtestamine.
2) meetodi ala
JVM-i meetodiala salvestab klassistruktuure, nagu metaandmed, konstantse kรคitusaja kogum ja meetodite kood.
3) hunnik
Kรตik Objektid, nendega seotud eksemplarimuutujad ja massiivid salvestatakse hunnikusse. See mรคlu on tavaline ja jagatud mitme lรตime vahel.
4) JVM keele virnad
Java Language Stacks salvestab kohalikke muutujaid ja see on osalised tulemused. Igal lรตimel on oma JVM-i virn, mis luuakse lรตime loomisega samal ajal. Uus kaader luuakse iga kord, kui meetod kutsutakse vรคlja ja see kustutatakse, kui meetodi kutsumisprotsess on lรตppenud.
5) arvutiregistrid
PC register salvestab aadressi Java virtuaalmasina kรคsk, mida praegu tรคidetakse. sisse Java, igal lรตimel on eraldi arvutiregister.
6) Native Method Stacks
Looduslike meetodite virnad sisaldavad natiivse koodi juhiseid, olenevalt natiivsest raamatukogust. Selle asemel on see kirjutatud teises keeles Java.
7) Tรคitmismootor
See on teatud tรผรผpi tarkvara, mida kasutatakse riistvara, tarkvara vรตi terviklike sรผsteemide testimiseks. Testimismootor ei sisalda kunagi teavet testitud toote kohta.
8) Native Method liides
Native Method Interface on programmeerimisraamistik. See vรตimaldab Java kood, mis tรถรถtab JVM-is, et helistada teekide ja omarakenduste kaudu.
9) Native Method Libraries
Native Libraries on Native Libraries (C, C++), mida tรคitmismootor vajab.
tarkvara Code Kompileerimise ja teostamise protsess
Tarkvaraprogrammi kirjutamiseks ja kรคivitamiseks vajate jรคrgmist
1) Toimetaja โ Programmi sisestamiseks vรตib selleks kasutada mรคrkmikku
2) Kompilaator โ Kรตrge keele programmi teisendamiseks omakeelseks masinkoodiks
3) Linker โ Pรตhiprogrammi erinevate programmifailide viidete kombineerimiseks.
4) Laadija โ Failide laadimiseks oma teisesest salvestusseadmest, nagu kรตvaketas, vรคlkmรคlupulk, CD, RAM-i tรคitmiseks. Laadimine toimub automaatselt, kui kรคivitate oma koodi.
5) Tรคitmine - Koodi tegelik tรคitmine, mida teie OS ja protsessor haldavad.
Selle taustaga vaadake jรคrgmist videot ja รตppige JVM-i sisemist tรถรถd ja JVM-i arhitektuuri (Java Virtuaalne masin).
Click siin kui video pole juurdepรครคsetav
C-koodi koostamise ja tรคitmise protsess
Et mรตista Java kompileerimisprotsess sisse Java. Vaatame kรตigepealt C-vormingus kompileerimis- ja linkimisprotsessi.
Oletame, et pรตhiosas olete kutsunud kaks funktsiooni f1 ja f2. Pรตhifunktsioon on salvestatud faili a1.c.
Funktsioon f1 on salvestatud faili a2.c
Funktsioon f2 on salvestatud faili a3.c
Kรตik need failid, st a1.c, a2.c ja a3.c, suunatakse kompilaatorisse. Mille vรคljundiks on vastavad objektifailid, mis on masinakood.
Jรคrgmine samm on kรตigi nende objektifailide integreerimine linkeri abil รผheks exe-failiks. Linker รผhendab kรตik need failid kokku ja loob .exe-faili.
Programmi kรคitamise ajal laadib laadimisprogramm faili a.exe faili RAM hukkamise eest.
Java koodi koostamine ja teostamine sisse Java VM
Nรผรผd selles JVM-i รตpetuses vaatleme JAVA protsessi. Peamiselt on teil kaks meetodit f1 ja f2.
- Peamine meetod on salvestatud faili a1.java
- f1 salvestatakse faili nimega a2.java
- f2 salvestatakse faili nimega a3.java
Kompilaator kompileerib kolm faili ja toodab 3 vastavat .class faili, mis koosneb BYTE koodist. Erinevalt C-st linkimist ei tehta.
. Java VM vรตi Java Virtuaalmasin asub RAM-is. Tรคitmise ajal tuuakse klassilaaduri abil klassi failid RAM-i. BYTE koodi kontrollitakse turvarikkumiste suhtes.
Jรคrgmisena teisendab tรคitmismootor baitkoodi natiivseks masinkoodiks. See on รตigel ajal koostamisel. See on รผks peamisi pรตhjuseid, miks Java on suhteliselt aeglane.
MรRKUS: JIT vรตi Just-in-time kompilaator on osa Java Virtuaalmasin (JVM). See tรตlgendab osa baidist Code millel on samal ajal sarnane funktsionaalsus.
Miks Java nii tรตlgitud kui ka koostatud keel?
Programmeerimiskeeled klassifitseeritakse
- Kรตrgema taseme keele nt. C++, Java
- Kesktaseme keeled nt. C
- Madala tasemega keel, nt Assembly
- lรตpuks madalaim tase masinakeelena.
A kompilaator on programm, mis teisendab programmi รผhelt keeletasemelt teisele. Konversiooni nรคide C++ programm masinkoodiks. Java kompilaator teisendab kรตrgetasemelise java koodi baitkoodiks (mis on samuti teatud tรผรผpi masinkood).
An tรตlk on programm, mis teisendab รผhel tasemel programmi teisele programmeerimiskeelele samal tasemel. Konversiooni nรคide Java sisse programmeerida C++
In Java, just รตigel ajal Code generaator teisendab baitkoodi natiivseks masinkoodiks, mis on samal programmeerimistasemel.
Seega Java on nii koostatud kui ka tรตlgitud keel.
Miks Java aeglane?
Aegluse kaks peamist pรตhjust Java See on
- Dรผnaamiline linkimine: Erinevalt C-st toimub linkimine kรคitamise ajal, iga kord, kui programm kรคivitatakse Java.
- Tรถรถaja tรตlk: Baitkoodi teisendamine natiivseks masinkoodiks toimub kรคitamise ajal Java mis veelgi aeglustab kiirust
Kuid uusim versioon Java on suurel mรครคral tegelenud tulemuslikkuse kitsaskohtadega.
kokkuvรตte:
- JVM-i tรคisvorm on Java Virtuaalne masin. JVM sisse Java on mootor, mis juhib Java Code. See teisendab Java baitkood masina keelde.
- JVM-i arhitektuur sisse Java sisaldab klassilaadurit, mรคluala, tรคitmismootorit jne.
- JVM-is Java kood kompileeritakse baitkoodiks. Seda baitkoodi tรตlgendatakse erinevates masinates
- JIT tรคhistab just-in-time kompilaatorit. JIT on osa Java Virtuaalmasin (JVM). Seda kasutatakse tรคitmisaja kiirendamiseks
- Vรตrreldes teiste kompilaatoritega on JVM in Java vรตib tรคitmine olla aeglane.









