Ohjelmointi

Mikä on JRE? Johdatus Java Runtime -ympäristöön

Yhdessä Java Development Kit (JDK), Java Virtual Machine (JVM) ja Java Runtime Environment (JRE) muodostavat tehokkaan trifektan Java-alustakomponenteista Java-sovellusten kehittämiseen ja käyttämiseen. Olen aiemmin esittänyt JDK: n ja JVM: n. Tässä pikaoppaassa opit JRE: stä, joka on Java: n ajonaikainen ympäristö.

Käytännössä a ajonaikainen ympäristö on ohjelmisto, joka on suunniteltu ajamaan muita ohjelmistoja. Java: n ajonaikaisena ympäristöön JRE sisältää Java-luokan kirjastot, Java-luokan latauslaitteen ja Java-virtuaalikoneen. Tässä järjestelmässä:

  • luokan kuormaaja on vastuussa luokkien lataamisesta oikein ja niiden yhdistämisestä Java-luokan kirjastoihin.
  • JVM vastaa siitä, että Java-sovelluksilla on resurssit, joita he tarvitsevat toimiakseen ja toimiakseen hyvin laitteessasi tai pilviympäristössä.
  • JRE on lähinnä kontti niille muille komponenteille ja vastaa niiden toiminnan järjestämisestä.

Kaivamme paljon syvemmälle, miten nämä komponentit toimivat yhdessä seuraavissa osioissa.

JDK: n, JRE: n ja JVM: n asentaminen

Asennuksen näkökulmasta, milloin tahansa lataat JDK: n, se sisältää version kanssa yhteensopivan JRE: n ja että JRE sisältää oletus-JVM: n. Voit myös ladata JRE: n erikseen JDK: sta ja voit valita useista JVM: istä. Oletukset toimivat hyvin useimmissa toteutuksissa, varsinkin kun aloitat Java-sovelluksen kanssa.

Mikä on ajonaikainen ympäristö?

Ohjelmisto-ohjelman on suoritettava, ja se edellyttää ympäristön suorittamista varten. Ajonaikainen ympäristö lataa luokkatiedostot ja varmistaa, että muistiin ja muihin järjestelmäresursseihin on pääsy niiden ajamiseksi. Aikaisemmin useimmat ohjelmistot käyttivät käyttöjärjestelmää käyttöaikana. Ohjelma juoksi minkä tahansa tietokoneen sisällä, mutta se luotti käyttöjärjestelmän asetuksiin resurssien käytön yhteydessä. Resurssit ovat tässä tapauksessa asioita, kuten muisti- ja ohjelmatiedostot sekä riippuvuudet. Java Runtime Environment muutti kaiken, ainakin Java-ohjelmissa.

WORA Java-käyttöjärjestelmälle

Ensimmäisen käyttöönoton yhteydessä Java: n "kirjoita kerran, aja mihin tahansa" -periaatetta pidettiin vallankumouksellisena, mutta nykyään se on hyväksytty normiksi useimmille ohjelmistojärjestelmille.

Java Runtime Environment

Voimme tarkastella ohjelmistoja sarjana kerroksia, jotka istuvat järjestelmän laitteiston päällä. Jokainen kerros tarjoaa palveluja, joita sen yläpuolella olevat kerrokset käyttävät (ja vaativat). Java Runtime Environment on ohjelmistokerros, joka toimii tietokoneen käyttöjärjestelmän päällä ja tarjoaa Java-erityisiä lisäpalveluja.

JRE tasoittaa käyttöjärjestelmien monimuotoisuuden ja varmistaa, että Java-ohjelmat voivat toimia käytännössä missä tahansa käyttöjärjestelmässä ilman muutoksia. Se tarjoaa myös lisäarvopalveluja. Automaattinen muistinhallinta on yksi JRE: n tärkeimmistä palveluista, mikä varmistaa, että ohjelmoijien ei tarvitse hallita muistin allokointia ja uudelleenjakoa manuaalisesti.

Lyhyesti sanottuna JRE on eräänlainen meta-OS Java-ohjelmille. Se on klassinen esimerkki abstraktio, tiivistämällä taustalla oleva käyttöjärjestelmä yhtenäiseksi alustaksi Java-sovellusten ajamiseksi.

Kuinka JRE toimii JVM: n kanssa

Java-virtuaalikone on käynnissä oleva ohjelmistojärjestelmä, joka vastaa suorien Java-ohjelmien suorittamisesta. JRE on levykejärjestelmä, joka ottaa Java-koodisi, yhdistää sen tarvittaviin kirjastoihin ja käynnistää JVM: n suorittamaan sen.

JRE sisältää kirjastoja ja ohjelmistoja, jotka Java-ohjelmiesi on suoritettava. Esimerkiksi Java-luokan kuormaaja on osa Java Runtime Environment -ympäristöä. Tämä tärkeä ohjelmisto lataa käännetyn Java-koodin muistiin ja yhdistää koodin sopiviin Java-luokan kirjastoihin.

Juuri kuvaamassani kerrannaisnäkymässä JVM on JVM: n luoma. Paketin näkökulmasta JRE sisältää JVM: n, kuten kuvasta 1 näkyy.

Matthew Tyson

JRE: n asentaminen ja käyttö

Vaikka JRE: llä on käsitteellinen puoli, tosielämän käytännössä se on vain tietokoneelle asennettu ohjelmisto, jonka tarkoituksena on ajaa Java-ohjelmia. Kehittäjänä työskentelet enimmäkseen JDK: n ja JVM: n kanssa, koska nämä ovat alustakomponentit, joita käytät Java-ohjelmiesi kehittämiseen ja käyttämiseen. Java-sovellusten käyttäjänä olisit enemmän mukana JRE: ssä, jonka avulla voit suorittaa nämä ohjelmat.

Useimmissa tapauksissa tietokoneeseesi on asennettu Java, ja JRE sisältyy siihen. Jos sinun on koskaan asennettava tai päivitettävä manuaalisesti, voit ladata nykyisen JRE-version Oraclesta.

JRE-versiot

Java Runtime Environment päivitetään jokaiselle uudelle Java-versiolle, ja sen versionumerot vastaavat Java-alustan versiojärjestelmää, joten esimerkiksi JRE 1.8 ajaa Java 8: ta. Vaikka sinulla on useita JDK-paketteja, joista valita (kuten Enterprise Edition) tai Standard Edition), joka ei ole JRE: n tapaus. Useimmissa tietokoneissa on Java SE: lle kehitetty JRE, joka pystyy suorittamaan minkä tahansa Java-sovelluksen riippumatta siitä, miten se kehitettiin. Useimmissa mobiililaitteissa on Java ME: n JRE, joka on esiasennettu mobiililaitteeseen eikä sitä voi ladata.

Kun JRE on asennettu, voit olla vuorovaikutuksessa sen kanssa komentorivillä kirjoittamallajava -versio, joka kertoo, mikä versio on asennettu. POSIX-järjestelmissä voit aina tarkistaa asennetun sijainnin mikä java.

JRE devopsissa

JRE ei ole kovin havaittavissa kehitysvaiheessa, jossa se suorittaa vain ohjelmia vain valitsemassasi käyttöjärjestelmässä tai IDE: ssä. JRE: llä on hieman merkittävämpi rooli Devopsissa ja järjestelmien hallinnassa, koska sitä käytetään seurantaan ja kokoonpanoon.

Pohjimmiltaan JRE tarjoaa "nupit", joita käyttäisit Java-sovelluksen ominaisuuksien määrittämiseen ja hallintaan. Muistin käyttö on erinomainen esimerkki, järjestelmän hallinnon leipä. Vaikka muistin käyttö on aina tärkeää, se on elintärkeää pilvikokoonpanoissa, ja devops on pilvipohjainen tekniikka. Jos työskentelet devops-ympäristössä tai olet kiinnostunut haarautumisesta devopsiksi, on hyvä ymmärtää, miten Java-muisti toimii ja miten sitä valvotaan JRE: ssä.

Devops vai sysadmin?

Devops on uusi termi, mutta se kuvaa jotakin, joka on ollut totta vuosikymmenien ajan, mikä on kehityksen ja toiminnan yhteentoimivuus. Tässä mielessä, devops on vain uudempi termi sille, mitä aiemmin kutsuttiin operaatioiksi tai järjestelmähallinnaksi. Kuten sysadmin, myös devopsin tärkeä osa on ohjelmistojen suorittamiseen tarvittavien järjestelmien hallinta. JRE: n hallinta on osa Java-sovelluksia käyttävien järjestelmien hallintaa.

Java-muisti ja JRE

Java-muisti koostuu kolmesta osasta: kasa, pino ja metatila (jota aiemmin kutsuttiin permgeniksi).

  • Metaspace on Java, joka pitää ohjelmasi tiedot muuttumattomina, kuten luokan määritelmät.
  • Pino tilaa on Java, joka pitää vaihtelevaa sisältöä.
  • Pino tilaa Java tallentaa toimintojen suorituksen ja muuttujat.

Muistin hallinta Java 8: ssa

Kunnes Java 8, metaspace tunnettiin permgen. Metaspace on paljon viileämpi nimi, mutta merkittävä muutos kehittäjien vuorovaikutuksessa Java-muistitilan kanssa. Aikaisemmin käytit komentoa java -XX: MaxPermSize seurata läpäisevän tilan kokoa. Java 8: sta eteenpäin Java lisää metatilan kokoa automaattisesti vastaamaan ohjelman metatarpeita. Java 8 esitteli myös uuden lipun, MaxMetaspaceSize, jota voidaan käyttää rajoittamaan metatilan tilaa.

Muut muistivaihtoehdot, kasa ja pino, pysyvät samoina Java 8: ssa.

Konetilan konfigurointi

Pino tilaa on dynaamisin osa Java-muistijärjestelmää. Voit käyttää -Xms ja -Xmx liput kertovat Javaille kuinka iso kasa aloitetaan ja kuinka suuri sen saa tulla. Näiden lippujen virittäminen tiettyihin ohjelmatarpeisiin on tärkeä osa Java-muistin hallintaa. Ihanteellinen on tehdä kasa riittävän suureksi tehokkaimman roskakorin saavuttamiseksi. Toisin sanoen haluat antaa tarpeeksi muistia ohjelman ajamiseksi, mutta et halua sen olevan tarpeetonta suurempaa.

Pinotilan määrittäminen

Pino tilaa on funktiokutsut ja muuttujien viitteet jonossa. Pinotila on Java-ohjelmoinnin toiseksi pahamaineisimman virheen lähde: pinon ylivuoto-poikkeus (ensimmäinen on nollaosoittimen poikkeus). pinon ylivuoto-poikkeus ilmaisee, että pinotila on loppunut, koska liikaa sitä on varattu. Yleensä saat pinon ylivuotoa, kun menetelmä tai menetelmät kutsuvat toisiaan pyöreällä tavalla, mikä osoittaa jatkuvasti kasvavan määrän funktiokutsuja pinoon.

Käytät -Xss kytkin määrittääksesi pinon aloituskoon. Pino kasvaa sitten dynaamisesti ohjelman tarpeiden mukaan.

Java-sovellusten valvonta

Vaikka sovellusten valvonta on JVM: n tehtävä, JRE tarjoaa määritysvaihtoehdot, jotka ovat välttämätön seuranta. Java-sovellusten seurantaan on tarjolla erilaisia ​​työkaluja klassikoista (kuten Unix-komento) alkuun) edistyneisiin etäseurantaratkaisuihin, kuten Oraclen infrastruktuurin valvonta.

Näiden vaihtoehtojen välissä on VisualVM: n kaltaisia ​​visuaalisia profilointilaitteita, jotka mahdollistavat käynnissä olevan JVM: n tarkastamisen. Nämä työkalut mahdollistavat hotspotien ja muistivuotojen seuraamisen sekä järjestelmän kokonaismuistin kulutuksen seuraamisen.

Johtopäätös

Java Runtime Environment on levykeohjelma, joka lataa Java-sovelluksia JVM: n suorittamista varten. JRE sisältyy oletusarvoisesti, kun lataat Java Development Kit -sovelluksen, ja jokainen JRE sisältää Java-ydinluokan kirjastot, Java-luokan lataajan ja Java-virtuaalikoneen. On hyödyllistä ymmärtää, miten JVM, JDK ja JRE ovat vuorovaikutuksessa, etenkin työskennellessään pilvi- ja devops-ympäristöissä. Näissä ympäristöissä JRE: llä on vahvempi rooli seurannassa ja määrityksissä kuin perinteisessä Java-sovelluskehityksessä.

Tämän tarinan "Mikä on JRE? Johdatus Java-ajonaikaisiin ympäristöihin" julkaisi alun perin JavaWorld.