Mikä on JVM?
Java Virtual Machine (JVM) on moottori, joka tarjoaa ajonaikaisen ympäristön Java-koodin tai -sovellusten ajamiseksi. Se muuntaa Java-tavukoodin koneiden kieleksi. JVM on osa Java Run Environment -ympäristöä (JRE). Muilla ohjelmointikielillä kääntäjä tuottaa konekoodin tietylle järjestelmälle. Java-kääntäjä tuottaa kuitenkin koodin virtuaalikoneelle, joka tunnetaan nimellä Java Virtual Machine.
Näin JVM toimii
Ensinnäkin Java-koodi noudatetaan tavukoodiksi. Tämä tavukoodi tulkitaan eri koneissa
Isäntäjärjestelmän ja Java-lähteen välillä Bytecode on välityskieli.
Java-JVM on vastuussa muistitilan varaamisesta.

Tässä JVM-opetusohjelmassa opit-
- JVM-arkkitehtuuri
- Ohjelmistokoodien kokoaminen ja suorittaminen
- C-koodin kokoamis- ja toteutusprosessi
- Java-koodin kokoamis- ja toteutusprosessi
- Miksi Java on sekä tulkittu että käännetty kieli?
- Miksi Java on hidas?
JVM-arkkitehtuuri
Nyt tässä JVM-opetusohjelmassa ymmärretään JVM: n arkkitehtuuri. JVM: n Java-arkkitehtuuri sisältää luokkakuormaajan, muistialueen, suoritusmoottorin jne.
1) ClassLoader
Luokkakuormaaja on alijärjestelmä, jota käytetään luokkatiedostojen lataamiseen. Se suorittaa kolme päätoimintoa, nimittäin. Ladataan, linkitetään ja alustetaan.
2) Menetelmäalue
JVM Method Area tallentaa luokkarakenteet, kuten metatiedot, vakion ajonaikaisen poolin ja menetelmien koodin.
3) Kasa
Kaikki objektit, niihin liittyvät ilmentymämuuttujat ja taulukot tallennetaan kasaan. Tämä muisti on yhteinen ja jaettu useiden säikeiden kesken.
4) JVM-kielipinot
Java-kielipinot tallentaa paikallisia muuttujia, ja se on osittainen tulos. Jokaisella säikeellä on oma JVM-pino, joka luodaan samanaikaisesti langan luomisen yhteydessä. Uusi kehys luodaan aina, kun menetelmää käytetään, ja se poistetaan, kun menetelmän kutsuprosessi on valmis.
5) PC-rekisterit
PC-rekisteri tallentaa parhaillaan suoritettavan Java-virtuaalikone-käskyn osoitteen. Java-ohjelmassa jokaisella säikeellä on erillinen PC-rekisteri.
6) Alkuperäinen menetelmä pinot
Natiivimenetelmäpinoissa on natiivikoodin ohje riippuu natiivikirjastosta. Se on kirjoitettu toisella kielellä Java: n sijaan.
7) Suoritusmoottori
Se on eräänlainen ohjelmisto, jota käytetään testaamaan laitteita, ohjelmistoja tai kokonaisia järjestelmiä. Testin suoritusmoottori ei koskaan sisällä mitään tietoja testatusta tuotteesta.
8) Natiivimenetelmän käyttöliittymä
Native Method Interface on ohjelmointikehys. Sen avulla Java-koodi, joka toimii JVM: ssä, voi soittaa kirjastojen ja natiivisovellusten kautta.
9) Native Method -kirjastot
Native Libraries on kokoelma natiivikirjastoja (C, C ++), joita Execution Engine tarvitsee.
Ohjelmistokoodien kokoaminen ja suorittaminen
Ohjelmiston kirjoittamiseen ja suorittamiseen tarvitaan seuraava
1) Editori - Ohjelman kirjoittamiseen tähän voidaan käyttää muistilehteä
2) Kääntäjä - Voit muuntaa korkean kielen ohjelman alkuperäiseksi konekoodiksi
3) Linkkeri - Voit yhdistää pääohjelman eri ohjelmatiedostoviitteet yhteen.
4) Loader - Lataa tiedostot toissijaisesta tallennuslaitteestasi, kuten kiintolevyltä, Flash-asemalta, CD-levyltä, RAM-muistiin suoritusta varten. Lataus tapahtuu automaattisesti, kun suoritat koodisi.
5) Suoritus - käyttöjärjestelmän ja prosessorin käsittelemän koodin todellinen suorittaminen.
Tätä taustaa vasten katso seuraava video ja opi JVM: n (Java Virtual Machine) JVM: n sisäinen toiminta ja arkkitehtuuri.
Napsauta tätä, jos video ei ole käytettävissä
C-koodin kokoamis- ja toteutusprosessi
Ymmärtää Java-kääntöprosessi Java-sovelluksessa. Tarkastellaan ensin nopeasti prosessin kokoamista ja linkittämistä C.
Oletetaan, että olet kutsunut pääosin kaksi funktiota f1 ja f2. Päätoiminto on tallennettu tiedostoon a1.c.
Toiminto f1 on tallennettu tiedostoon a2.c
Toiminto f2 on tallennettu tiedostoon a3.c
Kaikki nämä tiedostot, eli a1.c, a2.c ja a3.c, syötetään kääntäjälle. Kenen ulostulo on vastaavat objektitiedostot, jotka ovat konekoodeja.
Seuraava vaihe on kaikkien näiden objektitiedostojen integrointi yhdeksi .exe-tiedostoksi linkin avulla. Linkittäjä kerää kaikki nämä tiedostot yhteen ja tuottaa .exe-tiedoston.
Ohjelman ajon aikana latausohjelma lataa a.exe-tiedoston RAM-muistiin suoritusta varten.
Java-koodin kokoaminen ja suorittaminen Java VM: ssä
Katsotaan nyt tässä JVM-opetusohjelmassa JAVA: n prosessia. Pääasiassa sinulla on kaksi menetelmää f1 ja f2.
- Päämenetelmä on tallennettu tiedostoon a1.java
- f1 on tallennettu tiedostoon a2.java
- f2 on tallennettu tiedostoon a3.java
Kääntäjä kokoaa nämä kolme tiedostoa ja tuottaa 3 vastaavaa .class-tiedostoa, joka koostuu BYTE-koodista. Toisin kuin C, linkitystä ei tehdä .
Java VM tai Java Virtual Machine sijaitsee RAM-muistissa. Suorituksen aikana luokkatiedostot tuodaan luokan lataajaan RAM-muistiin. BYTE-koodi tarkistetaan mahdollisten tietoturvaloukkausten varalta.
Seuraavaksi suoritusmoottori muuntaa Bytecoden alkuperäiseksi konekoodiksi. Tämä on juuri ajoissa. Se on yksi tärkeimmistä syistä, miksi Java on suhteellisen hidas.
HUOMAUTUS: JIT tai Just-in-time-kääntäjä on Java-virtuaalikoneen (JVM) osa. Se tulkitsee osan tavukoodista, jolla on samanlainen toiminnallisuus samanaikaisesti.
Miksi Java on sekä tulkittu että käännetty kieli?
Ohjelmointikielet luokitellaan kieliksi- Korkeamman tason kieli, esim. C ++, Java
- Keskitason kielet Ex. C
- Matalan tason kielen Ex-kokoonpano
- lopulta alin taso konekielenä.
Kääntäjä on ohjelma, joka muuntaa ohjelman yksi taso kielestä toiseen. Esimerkki C ++ -ohjelman muuntamisesta konekoodiksi.
Java-kääntäjä muuntaa korkean tason Java-koodin tavukoodiksi (joka on myös konekoodityyppi).
Tulkki on ohjelma, joka muuntaa ohjelman tasolta toiselle ohjelmointikieli on samalla tasolla. Esimerkki Java-ohjelman muuntamisesta C ++: ksi
Javassa Just In Time Code -generaattori muuntaa tavukoodin alkuperäiseksi konekoodiksi, jotka ovat samalla ohjelmointitasolla.
Näin ollen Java on sekä käännetty että tulkittu kieli.
Miksi Java on hidas?
Kaksi tärkeintä syytä Java: n hitauteen ovat
- Dynaaminen linkitys: Toisin kuin C, linkitys tapahtuu ajon aikana, aina kun ohjelma suoritetaan Java-muodossa.
- Ajonaikainen tulkki: Tavu-koodin muuntaminen alkuperäiseksi konekoodiksi tapahtuu Java-ajon aikana, mikä edelleen hidastaa nopeutta
Viimeisin Java-versio on kuitenkin puuttunut suorituskyvyn pullonkauloihin suuressa määrin.
Yhteenveto :
- JVM: n koko muoto on Java Virtual Machine. JVM in Java on moottori, joka ohjaa Java-koodia. Se muuntaa Java-tavukoodin koneiden kieleksi.
- JVM: n Java-arkkitehtuuri sisältää luokkakuormaajan, muistialueen, suoritusmoottorin jne.
- JVM: ssä Java-koodi käännetään tavukoodiksi. Tämä tavukoodi tulkitaan eri koneissa
- JIT tarkoittaa Just-in-time-kääntäjää. JIT on Java-virtuaalikoneen (JVM) osa. Sitä käytetään nopeuttamaan suoritusaikaa
- Verrattuna muihin kääntäjäkoneisiin JVM Java-ohjelmassa saattaa olla hidasta.