Mis on JVM?
Java virtuaalne masin (JVM) on mootor, mis pakub käituskeskkonda Java-koodi või rakenduste juhtimiseks. See teisendab Java baidekoodi masinate keeleks. JVM on osa Java Run Environmentist (JRE). Teistes programmeerimiskeeltes toodab kompilaator konkreetse süsteemi jaoks masinakoodi. Kuid Java kompilaator toodab koodi virtuaalsele masinale, mida nimetatakse Java virtuaalseks masinaks.
JVM töötab nii
Esiteks, Java kood viiakse baitkoodiks. Seda baitkoodi tõlgendatakse erinevates masinates
Hostisüsteemi ja Java-allika vahel on Bytecode vahendajakeel.
JVM Java-s vastutab mäluruumi eraldamise eest.

Selles JVM-i õpetuses saate teada
- JVM arhitektuur
- Tarkvarakoodi koostamise ja täitmise protsess
- C-koodi koostamise ja täitmise protsess
- Java koodi koostamise ja täitmise protsess
- Miks Java on nii tõlgendatud kui ka kompileeritud keel?
- Miks Java on aeglane?
JVM arhitektuur
Nüüd selles JVM-i õpetuses mõistame JVM-i arhitektuuri. JVM-i arhitektuur Java-s sisaldab klassilaadijat, mälupinda, täitmismootorit jne.
1) ClassLoader
Klassilaadur on alamsüsteem, mida kasutatakse klassifailide laadimiseks. See täidab kolme peamist funktsiooni, nimelt. Laadimine, linkimine ja initsialiseerimine.
2) meetodi piirkond
JVM-i meetodipiirkond salvestab klassistruktuurid nagu metaandmed, pideva käituse kogumi ja meetodite koodi.
3) Hunnik
Kõik objektid, nendega seotud eksemplari muutujad ja massiivid salvestatakse kuhja. See mälu on ühine ja jagatud mitme lõime vahel.
4) JVM-i keelevirnad
Java keele virnad salvestavad kohalikke muutujaid ja see on osaline tulemus. Igal lõimel on oma JVM-i virn, mis on loodud niidi loomisel samaaegselt. Iga meetodi käivitamisel luuakse uus raam ja meetodi kutsumisprotsessi lõppedes see kustutatakse.
5) PC registrid
PC register salvestab Java-virtuaalmasina käsu aadressi, mida praegu täidetakse. Javas on igal lõimel eraldi arvutiregister.
6) Native Method Stacks
Native meetodivirnad hoiavad, et natiivkoodi juhendamine sõltub emakeelest. See on kirjutatud Java asemel muus keeles.
7) täitmismootor
See on tarkvara tüüp, mida kasutatakse riistvara, tarkvara või terviklike süsteemide testimiseks. Katse käivitamise mootor ei kanna kunagi katsetatud toote kohta mingit teavet.
8) Native Method liides
Native Method Interface on programmeerimisraamistik. See võimaldab JVM-is töötavat Java-koodi helistada raamatukogude ja kohalike rakenduste kaudu.
9) Native Methodi raamatukogud
Native Libraries on emakeelekogude (C, C ++) kogu, mida täitmismootor vajab.
Tarkvarakoodi koostamise ja täitmise protsess
Tarkvaraprogrammi kirjutamiseks ja käivitamiseks vajate järgmist
1) Redaktor - programmi sisestamiseks võib selleks kasutada märkmikku
2) kompilaator - kõrgkeelse programmi teisendamiseks masina emakeeleks
3) Linker - erinevate programmifailide viide põhiprogrammis kokku ühendamiseks.
4) Laadur - failide laadimiseks teisendmäluseadmest, nagu kõvaketas, välkmäluseade, CD, täitmiseks RAM-i. Laadimine toimub automaatselt, kui täidate oma koodi.
5) täitmine - koodi tegelik täitmine, mida teie OS ja protsessor käsitsevad.
Selle taustaga vaadake järgmist videot ja õppige õppima JVM-i JVM-i (Java Virtual Machine) sisemist tööd ja arhitektuuri.
Kui videole pole juurdepääsu, klõpsake siin
C-koodi koostamise ja täitmise protsess
Java Java kompileerimisprotsessi mõistmiseks. Vaatame kõigepealt kiirelt protsessi C koostamise ja linkimise.
Oletame, et põhiliselt olete kutsunud kaks funktsiooni f1 ja f2. Põhifunktsioon on salvestatud faili a1.c.
Funktsioon f1 on salvestatud faili a2.c
Funktsioon f2 salvestatakse faili a3.c
Kõik need failid, st a1.c, a2.c ja a3.c, suunatakse kompilaatorisse. Kelle väljund on vastavad objektifailid, mis on masinakood.
Järgmine samm on kõigi nende objektifailide integreerimine linkeri abil ühte .exe-faili. Linker koondab kõik need failid kokku ja loob .exe-faili.
Programmi käivitamise ajal laadib laadimisprogramm a.exe täitmiseks RAM-i.
Java-koodi koostamine ja täitmine Java VM-is
Vaatame nüüd selles JVM-i õpetuses JAVA protsessi. Põhimõtteliselt on teil kaks meetodit f1 ja f2.
- Peamine meetod on salvestatud faili a1.java
- f1 on failis salvestatud kui a2.java
- f2 on failis salvestatud kui a3.java
Koostaja kompileerib kolm faili ja toodab 3 vastavat .class-faili, mis koosneb BYTE-koodist. Erinevalt C-st linkimist ei tehta .
Java VM või Java Virtual Machine asub RAM-is. Käivitamise ajal tuuakse klassi laaduri abil klassi failid RAM-i. BYTE koodi kontrollitakse turvarikkumiste osas.
Järgmisena teisendab käivitamismootor Bytecode'i masina Native koodiks. See on just õigel ajal koostamisel. See on üks peamisi põhjusi, miks Java on suhteliselt aeglane.
MÄRKUS. JIT ehk Just-in-time kompilaator on Java virtuaalse masina (JVM) osa. See tõlgendab baidikoodi osa, millel on samal ajal sarnane funktsionaalsus.
Miks on Java nii tõlgendatud kui ka kompileeritud keel?
Programmeerimiskeeled on liigitatud- Kõrgema taseme keel Ex. C ++, Java
- Keskastme keeled nt. C
- Madalama taseme keelte eksam
- lõpuks madalaim tase masinakeelena.
Koostaja on programm, mis teisendab programmi ühest tase keelest teise. Näide programmi C ++ teisendamisest masinakoodiks.
Java kompilaator teisendab kõrgetasemelise java koodi baitkoodiks (mis on ühtlasi ka masinakoodi tüüp).
Tõlk on programm, mis teisendab programmi ühelt tasemelt teisele programmeerimiskeelt on samal tasemel. Näide Java-programmi teisendamisest C ++ -ks
Java-s muudab Just In Time Code'i generaator baitkoodi omaks masinakoodiks, mis on samal programmeerimistasandil.
Seega on Java nii kompileeritud kui ka tõlgendatud keel.
Miks Java on aeglane?
Java pea aegluse taga on kaks peamist põhjust
- Dünaamiline linkimine: erinevalt C-st toimub linkimine käitamise ajal iga kord, kui programmi Java-ga käitatakse.
- Käitusaja interpretaator: baitkoodi teisendamine kohalikuks masinakoodiks toimub Java-s käivitamise ajal, mis veelgi aeglustab kiirust
Java uusim versioon on aga jõudluse kitsaskohtadele suures osas tähelepanu pööranud.
Kokkuvõte :
- JVM-i täielik vorm on Java virtuaalne masin. JVM Java-s on Java-koodi juhtiv mootor. See teisendab Java baidekoodi masinate keeleks.
- JVM-i arhitektuur Java-s sisaldab klassilaadijat, mälupinda, täitmismootorit jne.
- JVM-is kompenseeritakse Java kood baidekoodiks. Seda baitkoodi tõlgendatakse erinevates masinates
- JIT tähistab just-in-time kompilaatorit. JIT on Java virtuaalse masina (JVM) osa. Seda kasutatakse täitmisaja kiirendamiseks
- Võrreldes teiste kompilaatormasinatega võib JVM Java-s olla aeglane.