Ce este JVM?

JVM este o specificație în care funcționarea mașinii virtuale Java este descrisă în mod specific. Cu toate acestea, algoritmul este o identitate independentă care este aleasă numai de către furnizorul de implementare precum Oracle și alte companii de renume. Ca atare, JVM este o implementare cunoscută sub numele de Java Runtime Environment (JRE).

Definiție

Este definit ca o descriere pentru un program software care oferă mediu de rulare pentru cod și execuția sa semnificativă. Cu alte cuvinte, este modul în care rulăm Programele Java - configurarea setărilor JVM și bazându-ne pe acesta pentru a face față resurselor programului în timpul procesului de execuție.

Înţelegere

Java este cunoscut ca platformă independentă datorită mașinii virtuale Java. Atunci când o trimitere este făcută în diferite calculatoare cu sistemul de operare diferit care are JVM, bytecode este interpretat în limbajul nivelului mașinii de către JVM. Pentru a fi mai precis, programele JVM sunt scrise în limbajul de programare C, în timp ce JVM este independent de sistemul de operare. Este o componentă cheie a arhitecturii Java.

În afară de toate acestea, este responsabil de atribuirea memoriei esențiale solicitate de un program Java. De asemenea, este responsabil pentru interzicerea spațiului de memorie.

Ce face?

Operațiunile cruciale pe care JVM le efectuează sunt următoarele:

  • Încărcarea codului
  • Verificarea codului
  • Executarea codului
  • Asigurarea mediului Runtime

În afară de toate acestea, elaborează clasificări pentru formatul fișierului clasei, zona de memorie, grămada colectată gunoi, setul de înregistrări, raportarea erorilor fatale etc.

JVM Architecture

Haideți să oferim câteva informații cheie despre arhitectura internă a JVM care cuprinde:

1. Classloader

Este un subsistem de JVM utilizat pentru încărcarea fișierelor de clasă. În timpul rulării programului java, prima oară este încărcat de către clasloader. Cele trei încărcătoare de clasă pe care le include Java sunt următoarele:

a) Bootstrap ClassLoader

Este superclasa încărcătorului de clasă Extension. Asistă la încărcarea fișierelor rt.jar care poartă toate fișierele clasei.

b) Extension ClassLoader

Este programul de clasare părinte al sistemului de clasificator de sistem și clasificatorul de copii al Bootstrap. Fișierele jar din directorul $ JAVA_HOME / jre / lib / ext pot fi extrase prin extensia ClassLoader.

C) Sistemul / aplicația ClassLoader

Este copilul clasificatorului Extension cunoscut și sub numele de Application classloader. Fișierele de clasă de pe calea de clasă pot fi extrase prin intermediul acestuia. Classpath, care este setat pe directorul curent, în mod implicit poate fi modificat folosind comutatorul „-cp” sau „-classpath”.

2. Clasa (Metodă)

Structurile pre-clase, cum ar fi datele de câmp și de metodă, pool-ul constant de rulare și codul pentru metode sunt stocate în Zona de clasă (metodă). Este o memorie creată la pornirea JVM și este distribuită între toate firele precum Heap.

3. Morman

Obiectele sunt alocate prin această zonă de date de rulare utilă. Este un loc de memorie care stochează obiecte împreună cu variabilele sale de instanță. Ori de câte ori un obiect este creat în Java, acesta intră în grămadă - zona memoriei.

4. Stive

Alături de stocarea cadrelor, Java Stack deține variabile și rezultate parțiale. De asemenea, joacă un rol pivot în metodă, invocare și întoarcere. Fiecare fir individual este format din stiva sa JVM privată, creată în același timp cu thread-ul. Ori de câte ori o metodă escaladează, un nou cadru este generat și este spulberat atunci când invocarea metodei este completată.

5. Registrul contorului de programe (PC)

Registrul PC conține adresa de instrucțiuni JVM în momentul executării sale. Urmărind instrucțiunile, aceasta are valoare pentru fiecare instrucțiune care nu este definită pentru metodele native.

6. Pila de metode native

Procedurile native utilizate în aplicații fac parte din Native Method Stack. Aceste metode sunt scrise în alte limbi decât Java. Asociat cu fiecare fir, implementările JVM nu se pot baza pe stivele convenționale și nu pot încărca metode native. Pentru a fi mai precis, este similar cu stiva, dar utilizat pentru metodele native.

7. motor

Fiind aspectul cheie al JVM, comunică cu diferitele sale zone de memorie. Aceasta include:

A. Colector de gunoi

Aceasta joacă un rol esențial în sistemul de gestionare dinamică a memoriei JVM. Memoria care este ocupată și care nu mai face referire la niciunul dintre obiectele Java accesibile este eliberată prin Garbage Collector.

b. Interpret

Execută instrucțiunile după citirea fluxului de bytecode.

c. Compilator Just-In-Time (JIT)

Activând îmbunătățirea performanței, compilatorul JIT compilează în același timp părți ale bytecode cu funcționalități similare. Ajută la reducerea timpului necesar procesului de compilare.

8. Java Native Interface (JNI)

Aplicațiile scriptate în alte limbi, adică C, C ++, Assembly, etc. pot fi conectate, printr-o interfață livrată de JNI. Cadrul JNI este folosit de Java pentru a interacționa cu bibliotecile de sistem de operare sau pentru a trimite ieșire la consolă.

La ce folosește JVM?

JVM are două funcții principale: de a permite programelor Java să ruleze pe orice dispozitiv sau sistem de operare (cunoscut sub numele de „Scrieți o dată, rulați oriunde”) și să gestionați și să optimizați memoria programului.

Avantaje și dezavantaje

Programele Java sunt executate corespunzător prin JVM. Bytecode - un limbaj intermediar este utilizat pentru a compila programe Java și apoi executat prin JVM. Fiecare program individual care este compilat în bytecode poate fi realizat de orice platformă alimentată de JVM. Acest lucru permite software-ului Java mai eficient și compatibil în funcție de diferitele platforme de calcul. JVM are câteva avantaje și dezavantaje notabile pe care orice dezvoltator ar trebui să le cântărească cu atenție înainte de a investi în dezvoltarea Java.

1. Securitate

Prin programele de securitate ale JVM, programatorii pot scrie eficient programe Java de înaltă siguranță. Autorizează resursele Sistemului de operare pentru a identifica software-ul rău intenționat și, de asemenea, ajută la prevenirea acestuia în consecință.

2. Performanță

Programele Java care rulează pe un JVM sunt susceptibile să ofere o execuție mai lentă în comparație cu programele scrise în C ++. Acest lucru se datorează optimizării codului care se bazează excesiv pe diferite caracteristici specifice sistemului. De asemenea, bytecode Java nu poate fi optimizat pentru un set de hardware specific, deoarece este neutru de sistem.

3. Corectitudinea

Corect este programul, care funcționează eficient și răspunde la maxim așteptărilor unui utilizator. Caracteristicile încorporate ale JVM îi permit să funcționeze corect și fără erori.

De ce ar trebui să folosim JVM?

În ciuda faptului că are cod sintactic Java, JVM poate rula pe diverse programe de limbaj diferite. Puține dintre motivele pentru care este atât de utilizat pe scară largă și de ce să le folosești pe diferite platforme sunt enumerate mai jos:

Utilizează memoria heap: memoria Heap este o componentă de bază care este utilizată pentru alocarea dinamică a memoriei pentru definirea claselor și inițializării obiectelor și din moment ce JVM acceptă memoria heap, are o acceptare largă.

Asigurarea securității locației codului la distanță: cadrul JVM este proiectat astfel încât aplicația de la distanță să fie ușor executată. Această teorie este urmată pentru executarea Java Applet.

Concluzie

Faptul că JVM funcționează pe mai multe sisteme de operare, îi conferă o abordare generală în domeniul tehnologiei. Folosind-o pe Windows, Linux și alte sisteme de operare, este activată transformarea bytecode indiferent de hardware și sistemul de operare care urmează să fie executat. În plus, capacitatea sa de a oferi securitate computerului gazdă prin securizarea datelor și programului acestora este un alt motiv pentru care JVM a avut atât de mult succes în trecut și continuă să fie dominantă în viitor.

Articole recomandate

Acesta a fost un ghid pentru Ce este un JVM (Java Virtual Machine). Aici am discutat conceptele de bază cu lista de Arhitectură și utilizări ale JVM. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Cele mai bune cadre JavaScript
  2. Este orientat pe obiecte Python
  3. Aplicații ale C ++ în lumea reală
  4. Carieră în ASP.NET
  5. JRE vs JVM | Top 8 diferențe cu (Infografie)