Mis on JVM? Java Virtuaalne masin Architektuur
Milles on JVM Java?
Java Virtuaalmasin (JVM) on mootor, mis pakub töökeskkonna juhtimiseks Java Kood või rakendused. 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.
Tarkvarakoodi koostamise ja täitmise 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 baitkoodist, 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, teisendab Just In Time Code generaator baitkoodi natiivseks masinkoodiks, mis on samadel programmeerimistasemetel.
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 Kood. 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.









