Mașină virtuală Java

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 14 mai 2021; verificările necesită 7 modificări .
JVM
Dezvoltator Microsisteme solare
Adâncime de biți 32 (64 cu Java 9)
Prezentat 1994
Versiuni 18.0.1.1 [1]
Tip de Mașină de stiva, cu acces la memorie dedicată
Ordinea octetilor big-endian
Registrele
scop general Stiva de operanzi pentru fiecare metodă (până la 65535 operanzi) și variabile locale ale metodei (până la 65535)

Java Virtual Machine (abreviat Java VM , JVM ) - Java virtual machine - partea principală a sistemului de execuție Java , așa-numitul Java Runtime Environment ( JRE ). Mașina virtuală Java execută bytecode Java care a fost generat anterior din codul sursă al unui program Java de către compilatorul Java ( javac ). JVM-ul poate fi folosit și pentru a executa programe scrise în alte limbaje de programare . De exemplu, codul sursă Ada poate fi compilat în bytecode Java, care poate fi apoi executat de JVM.

JVM-ul este o componentă cheie a platformei Java. Deoarece mașinile virtuale Java sunt disponibile pentru multe platforme hardware și software, Java poate fi văzut atât ca un middleware , cât și ca o platformă autonomă. Utilizarea unui bytecode pentru multe platforme permite ca Java să fie descris ca „compilați o dată, rulați oriunde” (compilați o dată, rulați oriunde).

Mașinile virtuale Java conțin de obicei un interpret de bytecode , cu toate acestea, pentru a îmbunătăți performanța, multe mașini folosesc, de asemenea, compilarea JIT a fragmentelor de bytecode executate frecvent în codul mașină .

Specificația JVM

În 1996 , Sun a lansat prima versiune a documentului JVM Blue Book , care a descris specificația pentru mașina virtuală Java, care a devenit standardul de facto al industriei pentru platforma Java. Datorită acestui document, au apărut implementări alternative ale JVM-ului, care sunt „ dezvoltarea de la zero ” ( ing.  design camere curate ). Un exemplu este Kaffe .

Începând cu J2SE 5.0, modificările la specificația JVM sunt generate în funcție de dorințele formalizate ale părților interesate. Procesul de a face modificări la specificațiile JVM se numește Procesul comunității Java .

JVM-ul disponibil în sursa C a Sun se numește KVM (Kilo Virtual Machine) și este disponibil pe site-ul lor.

Concurența dintre Sun și Microsoft

La începutul dezvoltării platformei „Java”, au existat două implementări concurente ale Java VM:

Cu toate acestea, „Microsoft Java VM” nu a fost pe deplin compatibil cu specificația descrisă de Sun în „Cartea albastră JVM” și a avut probleme semnificative de performanță și securitate în cazul unor sarcini de lucru grele (cu un număr mare de fire de execuție simultană).

Sun a considerat această situație inacceptabilă și a decis că Microsoft discreditează și profanează în mod deliberat platforma Java prin distribuirea versiunii sale de Java Virtual Machine, care are dezavantajele de mai sus. Pe această bază, Sun a dat în judecată în mod repetat Microsoft - și Microsoft a fost privat de următoarele drepturi de implementare:

  1. Numiți-o „Java VM” (noul nume este „Microsoft VM”);
  2. Încorporați-l în livrarea de browsere și sisteme de operare (inclusiv Internet Explorer și Windows) - dar cu dreptul de a oferi spre descărcare pe site;
  3. Dezvoltați noile sale versiuni și actualizări;
  4. Furnizați-l pentru descărcare pe site.

Unii examinatori de computere au sugerat că atitudinea dură a Sun față de Java ar fi putut oferi un stimulent suplimentar pentru Microsoft să-și dezvolte propria soluție Windows: „ .NET Framework ”.

Dezacorduri între Sun și IBM

În 2001 , cu scopul de a dezvolta un standard pentru aplicații desktop multiplatforme , IBM a lansat un proiect open source: „Eclipse” .

Cadrul „Eclipse” s-a bazat pe o dezvoltare închisă anterioară: „VisualAge” de la IBM . IBM a reușit să echilibreze interesele comunității libere și interesele afacerilor (interesele acestora) în Eclipse Public License , recunoscută de Free Software Foundation .

Proiectul se dezvoltă cu succes, este utilizat în industrie, s-a separat în mare măsură de IBM într-unul independent (vezi „Fundația Eclipse” ).

Sun rămâne în opoziție cu Fundația Eclipse , precum și cu Microsoft. Formal, principala cauză a controverselor rămâne biblioteca „Standard Widget Toolkit” (SWT), care contrazice conceptul Sun de mașină virtuală și portabilitatea aplicațiilor Java.

Runtime

Programele destinate să ruleze pe JVM trebuie să fie compilate într-un format binar portabil standardizat, care este de obicei reprezentat ca fișiere „.class”. Un program poate consta din mai multe clase plasate în fișiere diferite. Pentru a facilita găzduirea de programe mari, unele fișiere „.class” pot fi împachetate într-un așa-numit fișier „.jar” (prescurtare de la „Arhiva Java”).

JVM-ul execută fișiere „.class” și „.jar”, ​​emulând instrucțiunile date în ele în următoarele moduri:

În zilele noastre, compilarea JIT este utilizată în majoritatea JVM-urilor pentru a obține o viteză mai mare. Există, de asemenea, compilatoare anticipate care permit dezvoltatorilor de aplicații să recompileze fișierele de clasă în cod nativ de platformă.

La fel ca majoritatea mașinilor virtuale, Java Virtual Machine are o arhitectură orientată spre stivă, care este comună microcontrolerelor și microprocesoarelor .

JVM - o instanță a JRE (Java Runtime Environment) care intră în acțiune la executarea programelor Java; la finalizarea execuției, această instanță este eliminată de colectorul de gunoi. JIT este acea parte a mașinii virtuale Java care este folosită pentru a accelera execuția aplicațiilor; JIT compilează acele părți ale bytecode care au aceeași funcționalitate în același timp, ceea ce reduce timpul necesar pentru compilare.

Vezi și

Note

  1. Versiuni de lansare JDK  . Java (2 mai 2022). Preluat la 24 mai 2022. Arhivat din original la 4 iunie 2022.

Literatură

Link -uri