Mikä on JVM? Java Virtuaalikone Archirakenne
Mitä JVM sisältää Java?
Java Virtuaalikone (JVM) on moottori, joka tarjoaa ajonaikaisen ympäristön ajamiseen Java Koodi tai sovellukset. Se muuttaa Java tavukoodi konekieleksi. JVM on osa Java Runtime Environment (JRE). Muissa ohjelmointikielissä kääntäjä tuottaa konekoodin tietylle järjestelmälle. Kuitenkin, Java kääntäjä tuottaa koodin virtuaalikoneelle, joka tunnetaan nimellä Java Virtuaalikone.
Miten JVM toimii?
Ensimmäinen, Java koodi käännetään tavukoodiksi. Tämä tavukoodi tulkitaan eri koneilla. Isäntäjärjestelmän ja Java lähdekoodi, Bytecode on välikieli. JVM sisään Java on vastuussa muistitilan varaamisesta.

Tässä JVM-opetusohjelmassa opit
ArchiJVM:n rakenne (Java Virtuaalikone)
Ymmärretään nyt tässä JVM-opetusohjelmassa ArchiJVM:n rakenne. JVM-arkkitehtuuri sisään Java sisältää luokanlataajan, muistialueen, suoritusmoottorin jne.
1) ClassLoader
Luokkalataaja on alijärjestelmä, jota käytetään luokkatiedostojen lataamiseen. Se suorittaa kolme päätehtävää, ts. Lataus, linkitys ja alustus.
2) Menetelmäalue
JVM Method Area tallentaa luokkarakenteet, kuten metatiedot, jatkuvan ajonaikaisen poolin ja menetelmien koodin.
3) Kasa
Kaikki Esineet, niihin liittyvät ilmentymämuuttujat ja taulukot tallennetaan kasaan. Tämä muisti on yleinen ja jaettu useille säikeille.
4) JVM-kielipinot
Java Kielipinot tallentavat paikalliset muuttujat, ja se on osittaista. Jokaisella säikeellä on oma JVM-pinonsa, joka luodaan samanaikaisesti säiettä luotaessa. Uusi kehys luodaan aina, kun menetelmää kutsutaan, ja se poistetaan, kun menetelmän kutsuprosessi on valmis.
5) PC-rekisterit
PC-rekisteri tallentaa osoitteen Java virtuaalikoneen käsky, joka on parhaillaan suoritettavana. sisään Java, jokaisella säikeellä on oma PC-rekisterinsä.
6) Alkuperäiset menetelmäpinot
Natiivit menetelmäpinot sisältävät alkuperäisen koodin käskyt riippuen alkuperäisestä kirjastosta. Se on kirjoitettu toisella kielellä sen sijaan Java.
7) Suoritusmoottori
Se on eräänlainen ohjelmisto, jota käytetään laitteiston, ohjelmiston tai kokonaisten järjestelmien testaamiseen. Testin suoritusmoottori ei koskaan sisällä mitään tietoa testatusta tuotteesta.
8) Native Method -liittymä
Native Method Interface on ohjelmointikehys. Se sallii Java koodi, joka on käynnissä JVM:ssä kirjastojen ja alkuperäisten sovellusten kutsumiseksi.
9) Native Method Libraries
Native Libraries on kokoelma alkuperäiskirjastoja (C, C++), joita Execution Engine tarvitsee.
Ohjelmistokoodin kokoamis- ja suoritusprosessi
Jotta voit kirjoittaa ja suorittaa ohjelmiston, tarvitset seuraavat asiat
1) Toimittaja – Ohjelman kirjoittamiseen voidaan käyttää muistilehteä
2) kääntäjä – Muuntaa korkean kielen ohjelmasi alkuperäiseksi konekoodiksi
3) Linkkeri – Pääohjelman eri ohjelmatiedostoviitteiden yhdistäminen yhteen.
4) Kuormaaja – Tiedostojen lataaminen toissijaiselta tallennuslaitteelta, kuten kiintolevyltä, flash-asemalta, CD-levyltä, RAM-muistiin suorittamista varten. Lataus tapahtuu automaattisesti, kun suoritat koodisi.
5) Toteutus – Käyttöjärjestelmäsi ja prosessorisi käsittelemän koodin todellinen suoritus.
Tällä taustalla katso seuraava video ja opi JVM:n sisäinen toiminta ja arkkitehtuuri (Java Virtuaalikone).
Napauta tätä jos video ei ole saatavilla
C-koodin käännös- ja suoritusprosessi
Ymmärtää Java käännösprosessi sisään Java. Katsotaanpa ensin lyhyesti C:n kääntämis- ja linkitysprosessia.
Oletetaan, että olet pääsääntöisesti kutsunut kaksi funktiota f1 ja f2. Päätoiminto on tallennettu tiedostoon a1.c.
Funktio f1 on tallennettu tiedostoon a2.c
Funktio 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. Jonka tulos on vastaavat objektitiedostot, jotka ovat konekoodi.
Seuraava askel on integroida kaikki nämä objektitiedostot yhdeksi .exe-tiedostoksi linkerin avulla. Linkkeri yhdistää kaikki nämä tiedostot yhteen ja tuottaa .exe-tiedoston.
Ohjelman ajon aikana latausohjelma lataa a.exe-tiedoston tiedostoon RAM teloitusta varten.
Java koodin kokoaminen ja suorittaminen sisään Java VM
Tässä JVM-opetusohjelmassa tarkastellaan JAVA-prosessia. Pääasiassa sinulla on kaksi menetelmää f1 ja f2.
- Päämenetelmä on tallennettu tiedostoon a1.java
- f1 on tallennettu tiedostoon nimellä a2.java
- f2 on tallennettu tiedostoon nimellä a3.java
Kääntäjä kokoaa kolme tiedostoa ja tuottaa 3 vastaavaa .class-tiedostoa, joka koostuu BYTE-koodista. Toisin kuin C, linkitystä ei tehdä.
- Java VM tai Java Virtuaalikone sijaitsee RAM-muistissa. Suorituksen aikana luokkalataajaa käyttämällä luokkatiedostot tuodaan RAM-muistiin. BYTE-koodi tarkistetaan tietoturvaloukkausten varalta.
Seuraavaksi suoritusmoottori muuntaa tavukoodin alkuperäiseksi konekoodiksi. Tämä on juuri ajoissa kokoamassa. Se on yksi tärkeimmistä syistä Java on verrattain hidas.
HUOMAUTUS: JIT tai Just-in-time-kääntäjä on osa Java Virtuaalikone (JVM). Se tulkitsee osan tavukoodista, jolla on samat toiminnot samanaikaisesti.
MIkä tekee Java sekä tulkittu että käännetty kieli?
Ohjelmointikielet luokitellaan
- Korkeamman tason kieli esim. C++, Java
- Keskitason kielet esim. C
- Matalatasoinen kieli esim Assembly
- lopulta konekielinä alin taso.
A kääntäjä on ohjelma, joka muuntaa ohjelman kielitasolta toiselle. Esimerkki muuntamisesta C++ ohjelma konekoodiksi. Java-kääntäjä muuntaa korkean tason Java-koodin tavukoodiksi (joka on myös eräänlainen konekoodi).
An tulkki on ohjelma, joka muuntaa yhdellä tasolla olevan ohjelman toiselle ohjelmointikielelle osoitteessa sama taso. Esimerkki muuntamisesta Java ohjelma sisään C++
In Java, Just In Time Code -generaattori muuntaa tavukoodin alkuperäiseksi konekoodiksi, joka on samalla ohjelmointitasolla.
Siten, Java on sekä koottu että tulkittu kieli.
MIkä tekee Java hidas?
Kaksi pääasiallista syytä hitaus Java olemme
- Dynaaminen linkitys: Toisin kuin C, linkitys tehdään ajon aikana, joka kerta, kun ohjelma ajetaan Java.
- Ajonaikainen tulkki: Tavukoodin muuntaminen alkuperäiseksi konekoodiksi tapahtuu ajon aikana Java mikä edelleen hidastaa nopeutta
Kuitenkin uusin versio Java on käsitellyt suorituskyvyn pullonkauloja suuressa määrin.
Yhteenveto:
- JVM:n täysi muoto on Java Virtuaalikone. JVM sisään Java on moottori, joka käyttää Java Koodi. Se muuttaa Java tavukoodi konekieleksi.
- JVM-arkkitehtuuri sisään Java sisältää luokanlataajan, muistialueen, suoritusmoottorin jne.
- JVM:ssä Java koodi on käännetty tavukoodiksi. Tämä tavukoodi tulkitaan eri koneilla
- JIT on lyhenne sanoista Just-in-time-kääntäjä. JIT on osa Java Virtuaalikone (JVM). Sitä käytetään nopeuttamaan suoritusaikaa
- Verrattuna muihin kääntäjäkoneisiin, JVM in Java saattaa olla hidasta toteuttaa.