Programmering

Hvad er JRE? Introduktion til Java Runtime-miljøet

Sammen udgør Java Development Kit (JDK), Java Virtual Machine (JVM) og Java Runtime Environment (JRE) en stærk trifecta af Java-platformskomponenter til udvikling og kørsel af Java-applikationer. Jeg har tidligere introduceret JDK og JVM. I denne hurtige vejledning lærer du om JRE, som er runtime-miljøet for Java.

Praktisk set, en runtime miljø er et stykke software, der er designet til at køre anden software. Som runtime-miljø for Java indeholder JRE Java-klassebibliotekerne, Java-klasselæsseren og Java Virtual Machine. I dette system:

  • Det klasse læsser er ansvarlig for korrekt indlæsning af klasser og forbindelse af de centrale Java-klassebiblioteker.
  • Det JVM er ansvarlig for at sikre, at Java-applikationer har de ressourcer, de har brug for til at køre og udføre godt i din enhed eller dit skymiljø.
  • Det JRE er hovedsageligt en container til de andre komponenter og er ansvarlig for at organisere deres aktiviteter.

Vi vil grave meget dybere ned i, hvordan disse komponenter fungerer sammen i de efterfølgende afsnit.

Installation af JDK, JRE og JVM

Fra et installationsperspektiv, når som helst du downloader en JDK, inkluderer den en versionskompatibel JRE, og at JRE inkluderer en standard-JVM. Du kan også downloade JRE separat fra JDK, og du kan vælge mellem en række JVM'er. Standardindstillinger fungerer godt for de fleste implementeringer, især når du starter med Java.

Hvad er et runtime-miljø?

Et softwareprogram skal udføres, og for at gøre det har det brug for et miljø at køre i. Runtime-miljøet indlæser klassefiler og sikrer, at der er adgang til hukommelse og andre systemressourcer til at køre dem. Tidligere brugte de fleste software operativsystemet (OS) som dets runtime-miljø. Programmet kørte inde i den computer, det var tændt på, men baserede sig på operativsystemindstillinger for ressourceadgang. Ressourcer i dette tilfælde ville være ting som hukommelses- og programfiler og afhængigheder. Java Runtime-miljøet ændrede alt dette, i det mindste for Java-programmer.

WORA til Java

Da det først blev introduceret, blev Java's "skriv en gang, kør hvor som helst" -princip betragtet som revolutionerende, men i dag er det blevet vedtaget som en norm for de fleste softwaresystemer.

Java Runtime-miljøet

Vi kan se på software som en række lag, der sidder oven på systemhardwaren. Hvert lag leverer tjenester, der vil blive brugt (og krævet) af lagene over det. Java Runtime Environment er et softwarelag, der kører oven på en computers operativsystem og leverer yderligere tjenester, der er specifikke for Java.

JRE udjævner mangfoldigheden af ​​operativsystemer og sikrer, at Java-programmer kan køre på næsten ethvert operativsystem uden ændringer. Det leverer også merværditjenester. Automatisk hukommelsesstyring er en af ​​JREs vigtigste tjenester, hvilket sikrer, at programmører ikke behøver at manuelt styre tildelingen og omfordelingen af ​​hukommelsen.

Kort sagt er JRE en slags meta-OS til Java-programmer. Det er et klassisk eksempel på abstraktion, abstraherer det underliggende operativsystem til en ensartet platform til kørsel af Java-applikationer.

Sådan fungerer JRE med JVM

En Java Virtual Machine er et kørende softwaresystem, der er ansvarlig for at udføre live Java-programmer. JRE er det on-disk system, der tager din Java-kode, kombinerer den med de nødvendige biblioteker og starter JVM til at udføre den.

JRE indeholder biblioteker og software, som dine Java-programmer har brug for at køre. Som et eksempel er Java-klasselæsseren en del af Java Runtime-miljøet. Dette vigtige stykke software indlæser kompileret Java-kode i hukommelsen og forbinder koden til de relevante Java-klassebiblioteker.

I den lagdelte visning, jeg lige har beskrevet, er JVM oprettet af JRE. Fra et pakkeperspektiv indeholder JRE JVM, som figur 1 viser.

Matthew Tyson

Installation og brug af JRE

Mens der er en konceptuel side af JRE, er det i praksis faktisk bare software installeret på en computer, hvis formål er at køre dine Java-programmer. Som udvikler arbejder du for det meste med JDK og JVM, fordi det er de platformskomponenter, du bruger til at udvikle og køre dine Java-programmer. Som bruger af Java-applikationer ville du være mere involveret i JRE, som lader dig køre disse programmer.

I de fleste tilfælde kommer din computer med Java installeret, og JRE vil blive inkluderet i det. Hvis du nogensinde har brug for at installere eller opgradere manuelt, kan du downloade den aktuelle JRE-version fra Oracle.

JRE-versioner

Java Runtime-miljøet opdateres til hver nye version af Java, og dets versionsnumre stemmer overens med Java-platformversioneringssystemet, så for eksempel kører JRE 1.8 Java 8. Mens du har en række JDK-pakker at vælge imellem (såsom Enterprise Edition eller Standard Edition), hvilket ikke er tilfældet med JRE. De fleste computere kører en JRE udviklet til Java SE, som er i stand til at køre enhver Java-applikation uanset hvordan den blev udviklet. De fleste mobile enheder leveres med en JRE til Java ME, som er forudinstalleret på den mobile enhed og ikke er tilgængelig til download.

Når JRE er installeret, kan du interagere med det på kommandolinjen ved at indtastejava -version, som fortæller dig, hvilken version der er installeret. På POSIX-systemer kan du altid kontrollere den installerede placering med hvilken java.

JRE i devops

JRE er ikke særlig mærkbar i udviklingsfasen, hvor den for det meste bare kører dine programmer i det OS eller IDE, du vælger. JRE spiller en lidt mere fremtrædende rolle i devops og systemadministration, fordi den bruges til overvågning og konfiguration.

Grundlæggende leverer JRE de "drejeknapper", du vil bruge til at konfigurere og kontrollere egenskaberne ved en Java-applikation. Hukommelsesforbrug er et godt eksempel på systemadministrationens brød og smør. Mens hukommelsesforbrug altid er vigtigt, er det vigtigt i skykonfigurationer, og devops er en skybaseret teknologi. Hvis du arbejder i et devops-miljø eller er interesseret i at forgrene dig til devops, er det en god ide at forstå, hvordan Java-hukommelse fungerer, og hvordan den overvåges i JRE.

Devops eller sysadmin?

Devops er et nyt udtryk, men det beskriver noget, der har været sandt i årtier, hvilket er interoperabiliteten mellem udvikling og drift. I denne forstand, devops er bare et nyere udtryk for, hvad der tidligere blev kaldt operationer eller systemadministration. Ligesom sysadmin er et vigtigt aspekt af devops administration af de systemer, der er nødvendige for at udføre software. Administration af JRE er en del af styring af systemer, der kører Java-applikationer.

Java-hukommelse og JRE

Java-hukommelse består af tre komponenter: bunken, stakken og metaspace (som tidligere blev kaldt permgen).

  • Metaspace er hvor Java holder dit programs uændrede info som klassedefinitioner.
  • Haug plads er hvor Java holder variabelt indhold.
  • Stak plads er hvor Java gemmer funktionskørsel og variable referencer.

Hukommelsesstyring i Java 8

Indtil Java 8 var metaspace kendt som permgen. Udover at være et meget køligere navn, er metaspace en væsentlig ændring i, hvordan udviklere interagerer med Java's hukommelsesplads. Tidligere ville du bruge kommandoen java -XX: MaxPermSize for at overvåge størrelsen på permgenrummet. Fra Java 8 fremad øger Java automatisk størrelsen på metaspace for at imødekomme dit programs meta-behov. Java 8 introducerede også et nyt flag, MaxMetaspaceSize, som kan bruges til at begrænse metaspace-størrelsen.

De andre hukommelsesmuligheder, heap og stack, forbliver de samme i Java 8.

Konfiguration af bunkeplads

Haug plads er den mest dynamiske del af Java-hukommelsessystemet. Du kan bruge -Xms og -Xmx flag for at fortælle Java, hvor stor man skal starte bunken, og hvor stor man kan lade den blive. At forstå, hvordan man kan tune disse flag til specifikke programbehov, er et vigtigt aspekt af hukommelsesadministration i Java. Det ideelle er at gøre bunken stor nok til at opnå den mest effektive affaldsindsamling. Det vil sige, du vil tillade nok hukommelse til at lade programmet køre, men du vil ikke have det større end nødvendigt.

Konfiguration af stakplads

Stak plads er hvor funktionsopkald og variable referencer er i kø. Stakplads er kilden til den næstmest berygtede fejl i Java-programmering: undtagelsen til stakoverløb (den første er undtagelsen med nul pointer). Det stak overflow undtagelse angiver, at du er løbet tør for stakplads, fordi for meget af det er reserveret. Normalt får du et stakoverløb, når en metode eller metoder kalder hinanden på en cirkulær måde og derved afsætter et stadigt voksende antal funktionsopkald til stakken.

Du bruger -Xss skift for at konfigurere stakens startstørrelse. Stakken vokser derefter dynamisk i henhold til programmets behov.

Java-applikationsovervågning

Selvom applikationsovervågning er en funktion af JVM, giver JRE konfigurationsmuligheder, som er den nødvendige baseline til overvågning. En række forskellige værktøjer er tilgængelige til overvågning af Java-applikationer fra klassikerne (som Unix-kommandoen top) til sofistikerede fjernovervågningsløsninger som Oracles infrastrukturovervågning.

Mellem disse indstillinger er der visuelle profiler som VisualVM, der giver mulighed for inspektion af en kørende JVM. Disse værktøjer muliggør sporing af hotspots og hukommelseslækager samt overvågning af det samlede hukommelsesforbrug i dit system.

Konklusion

Java Runtime Environment er det on-disk-program, der indlæser Java-applikationer, som JVM kan udføres. En JRE er inkluderet som standard, når du downloader Java Development Kit, og hver JRE inkluderer de vigtigste Java-klassebiblioteker, en Java-klasselæsser og en Java Virtual Machine. Det er nyttigt at forstå, hvordan JVM, JDK og JRE interagerer, især til at arbejde i cloud- og devops-miljøer. I disse miljøer tager JRE en stærkere rolle i overvågning og konfiguration end den ville i traditionel Java-applikationsudvikling.

Denne historie, "Hvad er JRE? Introduktion til Java Runtime-miljøet" blev oprindeligt udgivet af JavaWorld.

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