Koja je razlika između JVM i JIT prevoditelja (upravo u vrijeme sastavljača) na Javi?


Odgovor 1:

JVM ("Java Virtual Machine") ima dva značenja:

  1. To je apstraktni skup upute dizajniran za pokretanje Java programa. Ovaj skup uputa definira relativno jasan push-down stroj za slaganje na koji su sastavljeni izvorni programi Java; ove su upute pohranjene u datotekama ".class". To je program koji se izvodi na stvarnom računalu, a može izvršavati apstraktne JVM upute. Takav JVM uključuje "tumač" za pojedinačne upute JVM-a, ali također uključuje sve pomoćne strojeve potrebne za podršku izvršavanja Java koda, uključujući aritmetičke pozive, funkcije poziva, raspoređivanje skladišta, prikupljanje smeća, zakazivanje navoja, učitavanje datoteka klase, datoteku U / I i drugi pristup lokalnom operativnom sustavu prema potrebi za pokretanje složenih Java aplikacija.

Stariji JVM-ovi doslovno su tumačili JVM-ove upute jednu po jednu tijekom izvođenja. To je lako provesti, zbog čega je i učinjeno. Ali kao i svaki tumač, takva interpretacija vremena izvođenja programa proizvodi vremena izvođenja programa koja su obično redoslijeda sporija od izvorno sastavljenog strojnog koda.

"JIT prevodilac" ("JITter") značajka je većine modernih JVM-ova koji sastavljaju dijelove JVM-ovih uputa u matični strojni kod kao nove dijelove ili se prije izvršavanja javljaju komadi JVM koda. Moglo bi se koristiti offline kompajler Java-to-native (koji zapravo postoje) za to da bi se postigla tradicionalna svrha skupnog sastavljanja, ali to nije put Java svijeta.

JITters imaju jednu prednost u odnosu na kompajlere paketa: mogu sastaviti kôd koji odgovara onome što se događa u vrijeme izvođenja i na taj način može pomoći u optimiziranju dinamičkih svojstava Java koda, poput dinamičke slanja koja se događa kod preopterećenih poziva Java metode. Imaju nedostatak: ne vide program u velikom opsegu, i općenito ne mogu raditi ono što dobro rade sastavljači paketa: globalne optimizacije. To u praksi znači Java programe koji su JIT-kompilirani i rade prilično dobro, ali ne tako brzo kao C ili C ++ programi koji su sastavljeni tradicionalnim metodama.


Odgovor 2:

Kompilator upravo na vrijeme ili JIT sastavni je dio Java Virtual Machine zajedno s Garbage collector, što kao što ime sugerira čini Just in Time kompilaciju. Sposoban je sastaviti Java kod izravno u strojni jezik, što može uvelike poboljšati performanse Java aplikacije.

Usput, nije zajamčeno koji će se kod sastaviti i kada. JIT obično sastavi vrući kod u Hotspot JVM nakon što njegovo izvršavanje prijeđe određenu granicu, npr. Metoda će se pretvoriti u strojni jezik ako se zove više od 10K puta itd.

Evo još nekoliko razlika između JVM i JIT u programskoj platformi Java:

1) Glavna razlika između JVM-a i JIT-a je svrha, glavni cilj JVM-a je osigurati neovisnost platforme, dok je cilj JIT-a poboljšanje performansi JVM-a, kompiliranjem više koda u strojni jezik. Samo imajte na umu da je i za ovu kompilaciju potrebno vrijeme, pa prevođenje čitavog koda u izvorni kod ne vrijedi raditi. Zato JIT uglavnom sastavlja često korišteni kod u izvorni kod.

2) Druga razlika između JIT-a i JVM-a je u tome što je JIT dio JVM-a. Jedan od primjera JIT-a je Oracle-ov Hotspot JIT koji dolazi s Hotspot JVM. Nazvan je hotpostom jer njegov Just in Time kompajler sastavlja samo vrući kod na materinjem jeziku, kod koji izvršava 90% vremena.

Postoji postavljanje praga, ako neki kôd izvrši više od tog praga, onda postaje podoban za točno sastavljeno vrijeme. Usput, Hotspot nije jedini JVM koji sadrži prevoditelje Just in Time, a postoje i drugi JVM, npr. Originalni JRockit iz Oraclea.

3) Konačno, JVM je stariji koncept od JIT-a. JIT je zapravo izumio da bi poboljšao performanse JVM-a nakon godina početnog izdanja Jave, dok je Java virtualni stroj bio dio početnog Java izdanja.

To je sve na razlici između JVM-a i JIT-a na Javi. Kao što sam rekao, JIT je dio JVM-a i koristi se za poboljšanje performansi JVM-a dinamičkim sastavljanjem ili prevođenjem Java-bajtova kodova u izvorni jezični kod jezika tijekom izvođenja.


Odgovor 3:

Glavna razlika su:

  • JVM je Java virtualni stroj dok JIT je Just In Time kompilacija. JIT je podskup JVM koji se koristi za poboljšanje performansi JVM.JVM se koristi za izvršavanje bajt kodova Java programa što čini Java platformu neovisnom, dok JIT sastavlja trenutno izvršavanje bajtova koda u strojni jezik. Za bolji rad JVM-a, JIT također pohranjuje ovaj sastavljeni kod.

Hvala i srdačan pozdrav

shujat khan

kontakt podaci: [email protected]