Java Virtual Machine (JVM), diferența JDK, JRE & JVM – Core Java

0 Comments

Java este un limbaj de programare la nivel înalt. Un program scris în limbaj de nivel înalt nu poate fi rulat direct pe nicio mașină. În primul rând, trebuie să fie tradus în acea limbă specială a mașinii. Compilatorul javac face acest lucru, este nevoie de programul java (.fișier java care conține codul sursă) și se traduce în cod mașină (denumit cod octet sau .fișier de clasă).,Java Virtual Machine (JVM) este o mașină virtuală care se află în mașina reală (computerul dvs.), iar limbajul mașinii pentru JVM este codul octetului. Acest lucru face mai ușor pentru compilator, deoarece trebuie să genereze cod de octet pentru JVM, mai degrabă decât cod de mașină diferit pentru fiecare tip de mașină. JVM execută codul octet generat de compilator și produce ieșire. JVM este cel care face platforma java independent.deci, acum am înțeles că funcția principală a JVM este de a executa codul de octet produs de compilator., Fiecare sistem de operare are diferite JVM, cu toate acestea producția pe care o produc după executarea codului octet este aceeași în toate sistemele de operare. Ceea ce înseamnă că codul octet generat pe Windows poate fi rulat pe Mac OS și invers. De aceea numim java ca limbă independentă de platformă. Același lucru poate fi văzut în diagrama de mai jos:

Deci, pentru a rezuma totul: Java Virtual machine (JVM) este o mașină virtuală care rulează pe mașină (computer) și execută Java byte code., JVM nu înțelege codul sursă Java, de aceea trebuie să avem compilator javac care compilează *.fișiere java pentru a obține*.fișiere de clasă care conțin codurile de octet înțelese de JVM. JVM face java portabil (scrie o dată, alerga oriunde). Fiecare sistem de operare are diferite JVM, cu toate acestea producția pe care o produc după executarea codului octet este aceeași în toate sistemele de operare.

JVM Arhitectura


să vedem cât de JVM lucrări:
Încărcător de Clase: clasa loader citește .,fișier de clasă și salvați codul octet în zona metodei.

zona metodei: există o singură zonă de metodă într-un JVM care este partajată între toate clasele. Aceasta deține informații la nivel de clasă de fiecare .dosarul clasei.Heap: Heap este o parte a memoriei JVM unde sunt alocate obiecte. JVM creează un obiect de clasă pentru fiecare .dosarul clasei.stiva: stiva este, de asemenea, o parte din memoria JVM, dar spre deosebire de Heap, este folosit pentru stocarea variabilelor temporare.

registre PC: aceasta ține evidența instrucțiunii care a fost executată și care va fi executată., Deoarece instrucțiunile sunt executate de fire, fiecare fir are un registru PC separat.

metoda nativă stivă: o metodă nativă poate accesa zonele de date de rulare ale mașinii virtuale.

interfață metodă nativă: permite codului java să apeleze sau să fie apelat de aplicații native. Aplicațiile Native sunt programe specifice hardware-ului și sistemului de operare al unui sistem.colectarea gunoiului: o instanță de clasă este creată în mod explicit de codul java și după utilizare este distrusă automat de colectarea gunoiului pentru gestionarea memoriei.,

JVM Vs JRE Vs JDK

JRE: JRE este mediul în care rulează mașina virtuală java. JRE conține Java virtual Machine (JVM), biblioteci de clasă, și alte fișiere cu excepția instrumente de dezvoltare, cum ar fi compilator și debugger.
ceea ce înseamnă că puteți rula codul în JRE, dar nu puteți dezvolta și compila codul în JRE.

JVM: așa cum am discutat mai sus, JVM rulează programul utilizând clasa, bibliotecile și fișierele furnizate de JRE.,

JDK: JDK este un superset de JRE, acesta conține tot ceea ce JRE are, împreună cu instrumente de dezvoltare, cum ar fi compilator, debugger etc.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *