Programiranje

Kaj je JVM? Predstavljamo navidezni stroj Java

Navidezni stroj Java je program, katerega namen je izvajanje drugih programov. To je preprosta ideja, ki je tudi eden naših največjih primerov kodiranja kung fu. JVM je razburil trenutno stanje in še danes podpira programske inovacije.

Za kaj se uporablja JVM

JVM ima dve glavni funkciji: omogočiti izvajanje programov Java v kateri koli napravi ali operacijskem sistemu (znano kot načelo "Napiši enkrat, zaženi kjer koli") ter upravljanje in optimiziranje programskega pomnilnika. Ko je bila leta 1995 izdana Java, so bili vsi računalniški programi zapisani v določen operacijski sistem, programski pomnilnik pa je upravljal razvijalec programske opreme. JVM je bil torej razodetje.

JavaWorld /

Tehnična opredelitev JVM je koristna in razvijalci programske opreme o tem razmišljajo vsak dan. Razčlenimo te:

  • Tehnična opredelitev: JVM je specifikacija za program, ki izvaja kodo in zagotavlja izvajalno okolje za to kodo.
  • Vsakodnevna definicija: JVM vodi naše programe Java. Konfiguriramo nastavitve JVM in se nato zanesemo nanjo za upravljanje programskih virov med izvajanjem.

Ko razvijalci govorijo o JVM, običajno mislimo na postopek, ki se izvaja v računalniku, zlasti na strežniku, ki predstavlja in nadzoruje porabo virov za aplikacijo Java. Primerjajte to z Specifikacija JVM, ki opisuje zahteve za izdelavo programa, ki izvaja te naloge.

Kdo razvija in vzdržuje JVM?

JVM se pogosto uporablja, pogosto uporablja in vzdržuje nekaj zelo pametnih programerjev, tako korporativnih kot odprtokodnih. Projekt OpenJDK je plod odločitve Sun Microsystems za odprtokodno Javo. OpenJDK je nadaljeval z Oraclovim skrbništvom nad Javo, pri čemer so danes veliko dela dvignili Oraclovi inženirji.

Upravljanje pomnilnika v JVM

Najpogostejša interakcija z delujočim JVM je preverjanje porabe pomnilnika v kopici in kupčku. Najpogostejša prilagoditev je nastavitev pomnilniških nastavitev JVM.

Odvoz smeti

Pred Javo je programer upravljal ves programski pomnilnik. V Javi programski pomnilnik upravlja JVM. JVM upravlja s pomnilnikom prek procesa, imenovanega Odvoz smeti, ki nenehno prepoznava in odstranjuje neuporabljeni pomnilnik v programih Java. Odvoz smeti se zgodi znotraj delujočega JVM.

V prvih dneh je bila Java deležna številnih kritik, ker ni bila tako blizu kovine kot C ++ in zato ni tako hitra. Še posebej sporen je bil postopek odvoza smeti. Od takrat se za zbiranje smeti predlagajo različni algoritmi in pristopi. Z doslednim razvojem in optimizacijo se je zbiranje smeti močno izboljšalo.

Kaj pomeni "blizu kovine"?

Ko programerji rečejo, da je programski jezik ali platforma "blizu kovine", mislimo, da je razvijalec sposoben programsko (s pisanjem kode) upravljati pomnilnik operacijskega sistema. Teoretično lahko programerji izkoristijo večjo učinkovitost naših programov, tako da določijo, koliko se porabi in kdaj jo zavržemo. V večini primerov prenos upravljanja pomnilnika na zelo izpopolnjen postopek, kot je JVM, prinese boljše delovanje in manj napak, kot če to storite sami.

JVM v treh delih

Lahko bi rekli, da obstajajo trije vidiki JVM: specifikacija, izvedba in primerek. Razmislimo o vsakem od teh.

1. Specifikacija JVM

Prvič, JVM je specifikacija programske opreme. Specifikacija JVM na nekoliko krožen način poudarja, da so podrobnosti o njegovi izvedbi ne opredeljeni v specifikaciji, da se omogoči kar največ ustvarjalnosti pri njenem uresničevanju:

"Za pravilno izvajanje navideznega računalnika Java morate le prebrati datoteko razred in pravilno izvesti v njem določene operacije. "

J.S. Bach je nekoč podobno opisal ustvarjanje glasbe:

"Vse, kar morate storiti, je, da se ob pravem času dotaknete prave tipke."

Torej, vse, kar mora storiti JVM, je pravilno zagnati programe Java. Sliši se preprosto, morda je od zunaj videti celo preprosto, vendar je to ogromno podjetje, zlasti glede na moč in prilagodljivost jezika Java.

JVM kot navidezni stroj

JVM je navidezni stroj ki na prenosni način zažene datoteke razreda Java. Biti virtualni stroj pomeni, da je JVM abstrakcija osnovnega, dejanskega računalnika - na primer strežnika, na katerem se izvaja vaš program. Ne glede na to, kateri operacijski sistem ali strojna oprema je dejansko prisoten, JVM ustvari predvidljivo okolje za izvajanje programov znotraj. Za razliko od pravega navideznega računalnika pa JVM ne ustvari navideznega operacijskega sistema. Bolj natančno bi bilo JVM opisati kot upravljano izvajalno okoljeali a obdelati navidezni stroj.

2. Implementacije JVM

Izvajanje specifikacije JVM povzroči dejanski program, ki je izvedba JVM. Dejansko obstaja veliko izvedb JVM, tako odprtokodnih kot lastniških. HotSpot JVM OpenJDK je referenčna izvedba in ostaja ena najbolj temeljito preizkušenih kodnih baz na svetu. HotSpot je tudi najpogosteje uporabljen JVM.

Skoraj vsi licenčni JVM so ustvarjeni kot vilice za OpenJDK in HotSpot JVM, vključno z licenčnim JDK Oracle. Razvijalce, ki ustvarjajo licenčno vilico na OpenJDK, pogosto motivira želja po dodajanju izboljšav zmogljivosti, specifičnih za OS. Običajno prenesete in namestite JVM kot paketni del Java Runtime Environment (JRE).

3. Primer JVM

Ko je specifikacija JVM uvedena in izdana kot programski izdelek, jo lahko prenesete in zaženete kot program. Ta preneseni program je primerek (ali instantirana različica) JVM.

Ko razvijalci govorijo o "JVM", se največkrat sklicujemo na primerek JVM, ki se izvaja v okolju za razvoj programske opreme ali v proizvodnem okolju. Lahko rečete: "Hej Anand, koliko pomnilnika uporablja JVM na tem strežniku?" ali: "Ne morem verjeti, da sem ustvaril krožni klic in napaka pri prelivanju sklada je zrušila moj JVM. Kakšna napaka za novince!"

Kaj je specifikacija programske opreme?

A specifikacija programske opreme (ali specifikacija) je razumljiv projektni dokument, ki opisuje, kako naj deluje programski sistem. Namen specifikacije je ustvariti jasen opis in zahteve za inženirje, ki jih morajo kodirati.

Nalaganje in izvajanje datotek razreda v JVM

Govorili smo o vlogi JVM pri zagonu aplikacij Java, kako pa opravlja svojo funkcijo? Za zagon aplikacij Java je JVM odvisen od nalagalca razreda Java in izvršilnega mehanizma Java.

Nalagalnik razreda Java v JVM

Vse v Javi je razred in vse aplikacije Java so zgrajene iz razredov. Aplikacija je lahko sestavljena iz enega ali več razredov. Če želite zagnati aplikacijo Java, mora JVM naložene datoteke .class naložiti v kontekst, na primer v strežnik, kjer je do njih mogoče dostopati. JVM je za izvajanje te funkcije odvisen od nakladalca svojega razreda.

Nalagalnik razreda Java je del JVM-ja, ki nalaga razrede v pomnilnik in jih da na voljo za izvajanje. Nakladalci razredov uporabljajo tehnike, kot sta lenobno nalaganje in predpomnjenje, da je nalaganje razredov čim bolj učinkovito. Kljub temu nalaganje razredov ni epska dražljajna misel, ki je (recimo) prenosno upravljanje pomnilnika med izvajanjem, zato so tehnike sorazmerno preproste.

Vsak navidezni stroj Java vključuje nalagalnik razredov. Specifikacija JVM opisuje standardne metode za poizvedovanje in manipulacijo z nalagalnikom razredov med izvajanjem, vendar so implementacije JVM odgovorne za izpolnjevanje teh zmožnosti. Z vidika razvijalca so osnovni mehanizmi za nalaganje razredov običajno črna škatla.

Izvedbeni stroj v JVM

Ko je nalagalnik razredov opravil svoje delo pri nalaganju razredov, JVM začne izvajati kodo v vsakem razredu. The izvedbeni stroj je komponenta JVM, ki obravnava to funkcijo. Izvedbeni stroj je bistvenega pomena za delujoči JVM. Pravzaprav je za vse praktične namene primer JVM.

Izvajanje kode vključuje upravljanje dostopa do sistemskih virov. Izvedbeni mehanizem JVM stoji med zagnanim programom - s svojimi zahtevami po datotekah, omrežju in pomnilniških virih - in operacijskim sistemom, ki te vire zagotavlja.

Kako izvršilni stroj upravlja sistemske vire

Sistemske vire lahko razdelimo v dve široki kategoriji: pomnilnik in vse ostalo.

Spomnimo se, da je JVM odgovoren za odstranjevanje neuporabljenega pomnilnika in da je odstranjevanje smeti mehanizem za odstranjevanje. JVM je prav tako odgovoren za dodeljevanje in vzdrževanje referenčna struktura ki ga razvijalec jemlje kot nekaj samoumevnega. Kot primer je izvršilni stroj JVM odgovoren za to, da vzame nekaj podobnega novo ključno besedo v Javi in ​​jo pretvori v zahtevo za dodelitev pomnilnika, specifično za OS.

Poleg pomnilnika izvršilni mehanizem upravlja vire za dostop do datotečnega sistema in omrežne V / I. Ker je JVM interoperabilen v vseh operacijskih sistemih, to ni osrednja naloga. Poleg potreb po virih vsake aplikacije mora biti izvršilni mehanizem tudi odziven na vsako okolje OS. Tako je JVM sposoben obvladati divje zahteve.

Razvoj JVM: preteklost, sedanjost, prihodnost

Leta 1995 je JVM predstavil dva revolucionarna koncepta, ki sta od takrat postala običajna cena sodobnega razvoja programske opreme: "Enkrat piši, zaženi kjer koli" in samodejno upravljanje pomnilnika. Takrat je bila interoperabilnost programske opreme drzen koncept, vendar bi le nekateri razvijalci danes dvakrat pomislili. Medtem ko so morali naši inženirski predhodniki sami upravljati programski pomnilnik, je moja generacija odraščala z zbiranjem smeti.

Lahko bi rekli, da sta James Gosling in Brendan Eich izumila sodobno programiranje, toda na tisoče drugih je v naslednjih desetletjih izpopolnilo in gradilo na svojih idejah. Medtem ko je bil navidezni stroj Java prvotno samo za Javo, se je danes razvil tako, da podpira številne skriptne in programske jezike, vključno s Scalo, Groovy in Kotlin. V prihodnosti je težko videti prihodnost, ko JVM ni pomemben del razvojne krajine.

Vse o JVM

  • Izzivalci Java: Obnašanje niti v JVM
  • Izzivalci Java: Preobremenitev metode v JVM
  • Znotraj optimizacije delovanja JVM
  • Osnove bajtkode: Kako JVM ravna z bajtno kodo
  • Izjeme Java: Kako JVM obravnava izjeme
  • Predstavljamo vitki, povprečni navidezni stroj Java

To zgodbo "Kaj je JVM? Predstavljamo navidezni stroj Java" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found