Ce este mașina virtuală Java și cum funcționează aceasta?

Ce este mașina virtuală Java și cum funcționează aceasta? / Tehnologie explicată

Mașina virtuală Java (JVM) este un dropper de nume real atunci când programați în Java. Contrar a ceea ce indică numele, mașina virtuală Java poate fi întâlnită și în relație cu alte limbi de programare.

În general, nu este necesar să știți ce este mașina virtuală Java sau chiar ceea ce face, pentru a putea programa în Java. Pe de altă parte, familiarizarea cu funcționarea interioară a unei mașini contribuie la creșterea înțelegerii și înțelegerii generale.

Acest articol periază ideea mașinii virtuale Java, ceea ce face pentru dvs. și unele dintre cele mai importante argumente pro și contra. Deși am încercat să păstrez acest lucru simplu și există o literatură despre acest subiect mai avansată, este de așteptat o înțelegere rudimentară despre Java și programare.

Limbi de nivel înalt

Semantica unui limbaj de programare este proiectată să fie aproape de limbajul nostru natural, în timp ce rămân concisă și ușor de interpretat pentru o mașină. După cum probabil știți, limbajul de programare este complet diferit de codul mașinii, setul de instrucțiuni pe care un computer îl utilizează pentru a construi și a executa un program. Asta sunăm limbi de nivel înalt; unul sau mai multe niveluri de abstractizare din codul mașinii.

Înainte de a putea rula, codul la nivel înalt trebuie mai întâi interpretat. O multitudine de interfețe de programare se compilează în avans (Compilație AOT) pentru o anumită platformă. Acest lucru face ca programul să fie mai eficient în timpul executării, dar mult mai puțin compatibil cu diferitele platforme. Java, dimpotrivă, funcționează cu o limbă intermediară numită Java bytecode si Java Virtual Machine.

JVM și Java Bytecode

Când proiectul dvs. Java se construiește, acesta traduce codul sursă (conținut în *.java fișierele sursă) la Java bytecode (cel mai adesea conținute în fișiere * .class). Acest lucru ia codul dvs. de nivel înalt cu un pas mai aproape de codul mașinii, dar nu chiar acolo încă. Acest bytecode este o colecție de instrucțiuni compacte; mai ușor pentru o mașină de a interpreta, dar mai puțin ușor de citit.

Când rulați o aplicație Java pe computerul dvs., pe telefonul mobil sau pe orice altă platformă cu platformă Java, treceți în mod esențial acest Java bytecode la Java Virtual Machine. Interpretul din Java Virtual Machine începe, de obicei, compilarea întregului bytecode în timpul execuției, urmând principiile așa-numitei compilație just-in-time. Acest lucru face ca tipic, deși adesea ușoară întârziere la deschiderea unei aplicații Java, dar, în general, îmbunătățește performanța programului față de compilație interpretată.

Principalul avantaj al acestui sistem este creșterea compatibilității. Deoarece aplicațiile dvs. rulează într-o mașină virtuală în loc direct pe hardware-ul dvs., dezvoltatorul poate programa și construi aplicația o singură dată, care poate fi executată pe fiecare dispozitiv cu o implementare a mașinii virtuale Java. Acest principiu a dat naștere sloganului Java: “Scrie o dată, alerga peste tot.”

Pro: compatibilitate & securitate sporită

În afară de compatibilitatea cu codurile, Java Virtual Machine vine cu alte beneficii. Una dintre cele mai importante dintre acestea este securitatea relativă a programelor Java ca urmare a mașinii virtuale Java. Securitate, ceea ce înseamnă că un program care rulează într-o mașină virtuală este mult mai puțin probabil să perturbe sistemul de operare al utilizatorului sau fișierele de date corupte, dacă apar erori.

Con: Diferite implementări JVM și depanare

Una dintre criticile principale exprimate împotriva compatibilității codului și a mașinii virtuale Java se datorează multor implementări diferite ale acesteia din urmă. Vedeți, mașina virtuală Java nu este o singură bucată de software. Oracle, proprietarii Java, au implementarea mașinii virtuale Java, dar alte persoane își pot face atitudinea dacă îndeplinesc diverse cereri practice și contractuale.

Aceste implementări diferite înseamnă că codul dvs. poate funcționa fără probleme pe o singură mașină virtuală Java, dar se prăbușește și se arde pe altul. Deși, în practică, puteți să vă scrieți codul o dată și să îl rulați peste tot, un cod mai complex trebuie încă să fie depanat în diferite implementări Java Virtual Machine pentru a asigura funcționarea corectă.

Aveți experiență de lucru cu mașina virtuală Java? Dacă da, este ceva ce mi-a lipsit aici, care ar trebui menționat?

Credit de imagine: Michaelaw, Dcoetzee

Explorați mai multe despre: Java, Programare.