Ce este JVM? Java Mașină virtuală Architectură
În ce este JVM Java?
Java Mașină virtuală (JVM) este un motor care oferă un mediu de rulare pentru a conduce Java Cod sau aplicații. Se convertește Java bytecode în limbajul mașinilor. JVM face parte din Java Mediul de rulare (JRE). În alte limbaje de programare, compilatorul produce cod de mașină pentru un anumit sistem. Cu toate acestea, Java compilatorul produce cod pentru o mașină virtuală cunoscută ca Java Mașină virtuală.
Cum funcționează JVM?
În primul rând, Java codul este compilat în bytecode. Acest bytecode este interpretat pe diferite mașini. Între sistemul gazdă și Java sursă, Bytecode este un limbaj intermediar. JVM în Java este responsabil pentru alocarea spațiului de memorie.
În acest tutorial JVM, veți învăța-
Architectura JVM (Java mașină virtuală)
Acum, în acest tutorial JVM, să înțelegem Architectura JVM. Arhitectura JVM în Java conține classloader, zonă de memorie, motor de execuție etc.
1) ClassLoader
Încărcătorul de clasă este un subsistem folosit pentru încărcarea fișierelor de clasă. Îndeplinește trei funcții majore și anume. Încărcare, conectare și inițializare.
2) Zona Metodă
Zona de metode JVM stochează structuri de clasă, cum ar fi metadate, pool-ul constant de rulare și codul pentru metode.
3) grămada
Toate Obiecte, variabilele lor de instanță aferente și matricele sunt stocate în heap. Această memorie este comună și partajată în mai multe fire.
4) Stive de limbaj JVM
Java Stivele de limbă stochează variabile locale și sunt rezultate parțiale. Fiecare thread are propriul stiv JVM, creat simultan pe măsură ce este creat firul. Un nou cadru este creat ori de câte ori este invocată o metodă și este șters când procesul de invocare a metodei este finalizat.
5) Registre PC
Registrul PC stochează adresa Java instrucțiunea de mașină virtuală care se execută în prezent. În Java, fiecare thread are un registru PC separat.
6) Stive de metode native
Stivele de metode native dețin instrucțiunile codului nativ depinde de biblioteca nativă. Este scris în altă limbă în loc de Java.
7) Motor de execuție
Este un tip de software folosit pentru a testa hardware, software sau sisteme complete. Motorul de execuție a testului nu conține niciodată informații despre produsul testat.
8) Interfață Native Method
Interfața Native Method este un cadru de programare. Permite Java cod care rulează într-un JVM pentru a fi apelat de biblioteci și aplicații native.
9) Biblioteci cu metode native
Native Libraries este o colecție de Native Libraries (C, C++) care sunt necesare pentru Execution Engine.
Procesul de compilare și execuție a codului software
Pentru a scrie și a executa un program software, aveți nevoie de următoarele
1) Editor – Pentru a tasta programul, ar putea fi folosit un bloc de note
2) compilator – Pentru a converti programul în limbaj înalt în cod nativ de mașină
3) Linker – Pentru a combina diferite fișiere de referință de program în programul principal.
4) Încărcător – Pentru a încărca fișierele de pe dispozitivul de stocare secundar, cum ar fi hard disk, flash drive, CD în RAM pentru execuție. Încărcarea se face automat când executați codul.
5) Executarea – Execuția reală a codului care este gestionată de sistemul de operare și procesorul dumneavoastră.
Cu acest fundal, consultați următorul videoclip și aflați funcționarea internă JVM și arhitectura JVM (Java mașină virtuală).
Clic aici dacă videoclipul nu este accesibil
Procesul de compilare și execuție a codului C
Pentru a înțelege Java proces de compilare în Java. Să aruncăm mai întâi o privire rapidă asupra procesului de compilare și conectare în C.
Să presupunem că, în principal, ați apelat două funcții f1 și f2. Funcția principală este stocată în fișierul a1.c.
Funcția f1 este stocată într-un fișier a2.c
Funcția f2 este stocată într-un fișier a3.c
Toate aceste fișiere, adică a1.c, a2.c și a3.c, sunt transmise compilatorului. A cărui ieșire sunt fișierele obiect corespunzătoare care sunt codul mașinii.
Următorul pas este integrarea tuturor acestor fișiere obiect într-un singur fișier .exe cu ajutorul linkerului. Linker-ul va combina toate aceste fișiere și va produce fișierul .exe.
În timpul rulării programului, un program de încărcare va încărca a.exe în fișierul RAM pentru executare.
Java compilarea și executarea codului în Java VM
Acum, în acest tutorial JVM, să ne uităm la procesul pentru JAVA. În principal, aveți două metode f1 și f2.
- Metoda principală este stocată în fișierul a1.java
- f1 este stocat într-un fișier ca a2.java
- f2 este stocat într-un fișier ca a3.java
Compilatorul va compila cele trei fișiere și va produce 3 fișiere .class corespunzătoare care constă din codul BYTE. Spre deosebire de C, nu se face nicio legătură.
Java VM sau Java Mașina virtuală se află pe memoria RAM. În timpul execuției, folosind încărcătorul de clasă, fișierele de clasă sunt aduse pe RAM. Codul BYTE este verificat pentru orice încălcare a securității.
Apoi, motorul de execuție va converti Bytecode în cod nativ de mașină. Aceasta este compilarea la timp. Este unul dintre motivele principale pentru care Java este relativ lent.
NOTĂ: JIT sau Compilatorul just-in-time face parte din Java Mașină virtuală (JVM). Acesta interpretează o parte din codul octet care are o funcționalitate similară în același timp.
De ce este Java atât limbaj interpretat, cât și limbaj compilat?
Limbaje de programare sunt clasificate ca
- Limbaj de nivel superior Ex. C++, Java
- Limbi de nivel mediu Ex. C
- Limbaj de nivel scăzut Ex Assembly
- în cele din urmă cel mai de jos nivel ca Limbajul Mașinii.
A compilator este un program care convertește un program de la un nivel de limbaj la altul. Exemplu de conversie a C++ programul în codul mașinii. Compilatorul java convertește codul java de nivel înalt în bytecode (care este, de asemenea, un tip de cod de mașină).
An interpret este un program care convertește un program la un nivel într-un alt limbaj de programare la acelasi nivel. Exemplu de conversie a Java program în C++
In Java, generatorul Just In Time Code convertește bytecode în codul mașină nativ care se află la aceleași niveluri de programare.
Prin urmare, Java este atât limbaj compilat, cât și interpretat.
De ce este Java încet?
Cele două motive principale din spatele încetinirii Java sunt
- Legătura dinamică: Spre deosebire de C, legătura se face în timpul execuției, de fiecare dată când programul este rulat Java.
- Interpret de rulare: Conversia codului de octeți în cod de mașină nativ se face în timpul execuției în Java care în continuare încetinește viteza
Cu toate acestea, cea mai recentă versiune a Java a abordat blocajele de performanță în mare măsură.
Rezumat:
- Forma completă a JVM este Java Mașină virtuală. JVM în Java este motorul care antrenează Java Cod. Se convertește Java bytecode în limbajul mașinilor.
- Arhitectura JVM în Java conține classloader, zonă de memorie, motor de execuție etc.
- În JVM, Java codul este compilat în bytecode. Acest bytecode este interpretat pe diferite mașini
- JIT înseamnă compilator Just-in-time. JIT este o parte a Java Mașină virtuală (JVM). Este folosit pentru a accelera timpul de execuție
- În comparație cu alte mașini compilatoare, JVM în Java poate fi lentă în execuție.









