Programiranje

Kaj je JRE? Uvod v Java Runtime Environment

Java Development Kit (JDK), Java Virtual Machine (JVM) in Java Runtime Environment (JRE) tvorijo močan trifekta komponent platforme Java za razvoj in zagon aplikacij Java. Pred tem sem predstavil JDK in JVM. V tej hitri vadnici boste izvedeli več o JRE, ki je izvajalno okolje za Javo.

Praktično gledano, a izvajalno okolje je del programske opreme, ki je namenjen zagon druge programske opreme. JRE kot izvajalno okolje za Javo vsebuje knjižnice razredov Java, nalagalnik razreda Java in navidezni stroj Java. V tem sistemu:

  • The razred nakladalnik je odgovoren za pravilno nalaganje razredov in njihovo povezovanje z osnovnimi knjižnicami razredov Java.
  • The JVM je odgovoren za zagotavljanje, da imajo aplikacije Java vire, ki jih potrebujejo za zagon in dobro delovanje v vaši napravi ali okolju v oblaku.
  • The JRE je v glavnem vsebnik za te druge komponente in je odgovoren za organizacijo njihovih dejavnosti.

V nadaljevanju bomo podrobneje raziskovali, kako te komponente delujejo skupaj.

Namestitev JDK, JRE in JVM

Z vidika namestitve bo kadar koli prenesel JDK, vključeval bo različico združljivega JRE in ta JRE bo vključeval privzeti JVM. JRE lahko prenesete tudi ločeno iz JDK in lahko izbirate med različnimi JVM-ji. Privzete nastavitve dobro delujejo pri večini izvedb, še posebej, ko začnete z Javo.

Kaj je izvajalno okolje?

Programski program mora zagnati in za to potrebuje okolje, v katerem se zažene. Izvajalno okolje naloži datoteke razredov in zagotovi dostop do pomnilnika in drugih sistemskih virov za njihovo izvajanje. V preteklosti je večina programske opreme uporabljala operacijski sistem (OS) kot izvajalno okolje. Program se je zagnal znotraj katerega koli računalnika, vendar se je za dostop do virov zanašal na nastavitve operacijskega sistema. Viri v tem primeru so stvari, kot so pomnilnik in programske datoteke ter odvisnosti. Izvajalno okolje Java je vse to spremenilo, vsaj za programe Java.

WORA za Javo

Ob prvi uvedbi je bilo Javino načelo "piši enkrat, zaženi kjerkoli" veljalo za revolucionarno, danes pa je bilo sprejeto kot norma za večino sistemov programske opreme.

Izvajalno okolje Java

Na programsko opremo lahko gledamo kot na vrsto plasti, ki ležijo na vrhu sistemske strojne opreme. Vsak sloj ponuja storitve, ki jih bodo uporabljale (in zahtevale) plasti nad njim. Java Runtime Environment je programska plast, ki deluje na vrhu operacijskega sistema računalnika in zagotavlja dodatne storitve, značilne za Javo.

JRE zgladi raznolikost operacijskih sistemov in tako zagotovi, da se programi Java lahko izvajajo v skoraj vseh OS brez sprememb. Ponuja tudi storitve z dodano vrednostjo. Samodejno upravljanje pomnilnika je ena najpomembnejših storitev JRE, ki zagotavlja, da programerjem ni treba ročno nadzirati dodeljevanja in prerazporejanja pomnilnika.

Skratka, JRE je nekakšen meta-OS za programe Java. To je klasičen primer abstrakcija, povzemanje osnovnega operacijskega sistema v skladno platformo za zagon aplikacij Java.

Kako JRE deluje z JVM

Java Virtual Machine je delujoč sistem programske opreme, odgovoren za izvajanje programov Java v živo. JRE je sistem na disku, ki sprejme kodo Java, jo kombinira s potrebnimi knjižnicami in zažene JVM, da jo izvede.

JRE vsebuje knjižnice in programsko opremo, ki jo morajo izvajati vaši programi Java. Na primer, nalagalnik razreda Java je del okolja Java Runtime Environment. Ta pomemben del programske opreme naloži zbrano kodo Java v pomnilnik in jo poveže z ustreznimi knjižnicami razreda Java.

V slojevitem pogledu, ki sem ga pravkar opisal, JVM ustvari JRE. Z vidika paketa JRE vsebuje JVM, kot prikazuje slika 1.

Matthew Tyson

Namestitev in uporaba JRE

Čeprav je JRE konceptualna stran, je v resnični praksi le programska oprema, nameščena v računalniku, katere namen je zagnati programe Java. Kot razvijalec boste večinoma sodelovali z JDK in JVM, ker sta to komponenti platforme, ki ju uporabljate za razvoj in zagon programov Java. Kot uporabnik aplikacije Java bi bili bolj vključeni v JRE, ki vam omogoča zagon teh programov.

V večini primerov je v računalniku nameščena Java, skupaj s tem pa bo vključen tudi JRE. Če boste kdaj morali ročno namestiti ali nadgraditi, lahko trenutno različico JRE prenesete iz podjetja Oracle.

Različice JRE

Izvajalno okolje Java se posodobi za vsako novo različico Jave, številke njegovih različic pa se uskladijo s sistemom za različico platforme Java, tako da na primer JRE 1.8 poganja Java 8. Medtem ko lahko izbirate med različnimi paketi JDK (na primer Enterprise Edition) ali Standard Edition), kar pa ne velja za JRE. Večina računalnikov uporablja JRE, razvit za Java SE, ki lahko zažene katero koli aplikacijo Java, ne glede na to, kako je bila razvita. Večina mobilnih naprav ima JRE za Java ME, ki je vnaprej nameščen na mobilni napravi in ​​ni na voljo za prenos.

Ko je JRE nameščen, lahko z njim v ukazni vrstici komunicirate z vnosomjava -verzija, ki vam bo povedal, katera različica je nameščena. V sistemih POSIX lahko vedno preverite nameščeno lokacijo z ki java.

JRE v devopsu

JRE ni zelo opazen v razvojni fazi, kjer večinoma samo izvaja vaše programe v OS ali IDE po vaši izbiri. JRE igra nekoliko pomembnejšo vlogo pri devopsu in upravljanju sistemov, ker se uporablja za spremljanje in konfiguriranje.

V bistvu JRE ponuja "gumbe", ki bi jih uporabili za konfiguriranje in nadzor značilnosti aplikacije Java. Uporaba spomina je odličen primer, kruh in maslo sistemskega upravljanja. Medtem ko je uporaba pomnilnika vedno pomembna, je v konfiguracijah oblakov ključnega pomena, devops pa je tehnologija v oblaku. Če delate v okolju devops ali vas zanima razvejanje v devope, je dobro razumeti, kako deluje pomnilnik Java in kako ga nadzira JRE.

Devops ali sysadmin?

Devops je nov izraz, vendar opisuje nekaj, kar velja že desetletja, to je interoperabilnost med razvojem in delovanjem. V tem smislu, devops je le novejši izraz za tisto, kar se je včasih imenovalo operacije ali upravljanje sistemov. Tako kot sysadmin je tudi pri devopsu pomemben vidik upravljanje sistemov, potrebnih za izvajanje programske opreme. Upravljanje JRE je del upravljanja sistemov, ki poganjajo aplikacije Java.

Pomnilnik Java in JRE

Java pomnilnik je sestavljen iz treh komponent: kopice, sklada in metaprostora (ki se je prej imenoval permgen).

  • Metaprostor je tam, kjer Java ohranja nespremenljive informacije o vašem programu, kot so definicije razredov.
  • Kup prostora je tam, kjer Java hrani spremenljivo vsebino.
  • Prostor za sklad je tam, kjer Java shrani izvedbo funkcije in sklice spremenljivk.

Upravljanje pomnilnika v Javi 8

Do Jave 8 je bil metaprostor znan kot permgen. Poleg veliko hladnejšega imena je metaspace pomembna sprememba v načinu interakcije razvijalcev s pomnilniškim prostorom Java. Prej bi uporabljali ukaz java -XX: MaxPermSize za spremljanje velikosti permgenskega prostora. Od Java 8 naprej Java samodejno poveča velikost metaprostora, da prilagodi meta-potrebe vašega programa. Java 8 je predstavil tudi novo zastavo, MaxMetaspaceSize, s katerim lahko omejite velikost metaprostora.

Druge možnosti pomnilnika, kup in sklad, ostajajo enake v Javi 8.

Konfiguriranje prostora kopice

Kup prostora je najbolj dinamičen del pomnilniškega sistema Java. Lahko uporabite -Xms in -Xmx zastavice, ki javi Javi, kako velika naj zažene kopico in kako velika, da ji omogoči, da postane. Razumevanje, kako prilagoditi te zastavice za posebne potrebe programa, je pomemben vidik upravljanja pomnilnika v Javi. Idealno je, da kup naredimo dovolj velikega za najučinkovitejše zbiranje smeti. To pomeni, da želite omogočiti dovolj pomnilnika, da se program lahko zažene, vendar ne želite, da bi bil večji, kot je potrebno.

Konfiguriranje prostora skladov

Prostor za sklad je klic funkcij in sklicev na spremenljivke v čakalni vrsti. Prostor skladov je vir druge najbolj razvpite napake v programiranju Java: izjema pri prelivanju sklada (prva je izjema ničelnega kazalca). The stack overflow izjema označuje, da vam je zmanjkalo prostora za sklad, ker je bilo rezerviranega preveč. Običajno se stek prelije, ko se metoda ali metode med seboj krožno pokličejo in s tem v sklad namenijo vedno večje število klicev funkcij.

Uporabljate -Xss stikalo za konfiguriranje začetne velikosti sklada. Sklop nato dinamično raste glede na potrebe programa.

Nadzor aplikacij Java

Čeprav je nadzor aplikacij funkcija JVM, JRE ponuja možnosti konfiguracije, ki so nujna osnova za spremljanje. Na voljo so različna orodja za spremljanje programov Java, od klasičnih (na primer ukaz Unix vrh) do dovršenih rešitev za daljinsko spremljanje, kot je Oraclovo spremljanje infrastrukture.

Med temi možnostmi so vizualni profili, kot je VisualVM, ki omogočajo pregledovanje delujočega JVM. Ta orodja omogočajo sledenje dostopnim točkam in uhajanjem pomnilnika ter spremljanje celotne porabe pomnilnika v vašem sistemu.

Zaključek

Izvajalno okolje Java je program na disku, ki naloži Java programe za izvajanje JVM. JRE je privzeto vključen, ko prenesete Java Development Kit, in vsak JRE vključuje osnovne knjižnice razreda Java, nalagalnik razreda Java in navidezni stroj Java. Koristno je razumeti, kako medsebojno delujejo JVM, JDK in JRE, zlasti za delo v oblaku in okoljih devops. V teh okoljih ima JRE močnejšo vlogo pri spremljanju in konfiguriranju kot pri tradicionalnem razvoju aplikacij Java.

To zgodbo "Kaj je JRE? Uvod v Java Runtime Environment" je prvotno objavil JavaWorld.

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