Publicitate

Mașina virtuală Java (JVM) este un piconitor de nume adevărat atunci când programați în Java. Spre deosebire de ceea ce indică numele, mașina virtuală Java poate fi întâlnită și în legătură cu alte limbaje de programare.

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

Acest articol abordează ideea Mașinii Virtual Java, ce face pentru tine și unele dintre cele mai importante avantaje și contra. Deși am încercat să îl mențin simplu și există cu siguranță o literatură mai avansată pe această temă, se așteaptă o înțelegere rudimentară a programului Java și a programării.

Limbi de nivel înalt

Semantica unui limbaj de programare este proiectat să fie aproape de limbajul nostru natural, rămânând 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 le folosește pentru a construi și rula un program. Acest lucru îl numim

instagram viewer
limbi de nivel înalt; unul sau mai multe niveluri de abstractizare de la codul mașinii.

Înainte de a putea rula, trebuie interpretat mai întâi codul la nivel înalt. Multe interfețe de programare sunt compilate în avans (Compilare AOT) pentru o platformă specifică. Acest lucru face ca programul să fie mai eficient în timpul rulării, dar mult mai puțin compatibil cu diferite platforme. Java, în schimb, funcționează cu un limbaj intermediar numit Bytecode Java si Mașină virtuală Java.

Bytecode JVM și Java

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

Când executați o aplicație Java pe computer, telefon mobil sau orice altă platformă activată Java, treceți în esență acest bytecode Java către mașina virtuală Java. Interpretul mașinii virtuale Java începe de obicei să compileze întregul bytecode la runtime, urmând principiile așa-numitelor compilare just-in-time. Acest lucru face ca întârzierea tipică, deși adesea ușoară, la deschiderea unei aplicații Java, dar, în general, îmbunătățește performanța programului în comparație cu compilație interpretată.

mașină virtuală java

Principalul avantaj al acestui sistem este compatibilitatea sporită. Deoarece aplicațiile dvs. rulează într-o mașină virtuală, în loc să fie direct pe hardware-ul dvs., dezvoltatorul poate programa și construiți aplicația lor o singură dată, care poate fi apoi executată pe fiecare dispozitiv cu o implementare a Java Virtual Mașinărie. Acest principiu a dat naștere sloganului Java: „Scrie o dată, aleargă peste tot.”

Pro: Compatibilitate și securitate sporită

În afară de compatibilitatea codului, mașina virtuală Java oferă și alte avantaje. 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 să corupe fișierele de date, dacă apar erori.

Con: Diferite implementări JVM și depanare

Una dintre principalele critici formulate împotriva compatibilității codului și a mașinii virtuale Java se datorează numeroaselor implementări diferite ale acestora din urmă. Vedeți, mașina virtuală Java nu este o aplicație software. Oracle, proprietarii Java, își pun în aplicare mașina virtuală Java, dar alți oameni pot face a lor dacă satisface diverse pretenții practice și contractuale.

Aceste implementări diferite înseamnă că codul dvs. poate funcționa fără probleme pe o mașină virtuală Java, dar se pot bloca și arde pe alta. Deși, în practică, poți să-ți scrii codul o dată și să-l rulezi peste tot, uneori mai complex încă trebuie să fie depanat în diferite implementări ale mașinii virtuale Java pentru a asigura funcționarea corectă.

Aveți vreo experiență în lucrul cu mașina virtuală Java? Dacă da, este ceva ce mi-a lipsit aici care trebuie menționat?

Credit imagine: Michaelaw, Dcoetzee

Sunt scriitor și student în științe informatice din Belgia. Îmi poți face întotdeauna o favoare cu o idee bună de articol, recomandare de carte sau idee de rețetă.