Java runtime. Care este diferența dintre JDK și JRE? Ce este JRE

Cred că nu va fi un secret pentru tine că dezvoltarea majorității aplicațiilor pentru platforma mobilă Android se realizează în primul rând în limbajul Java. Pentru a crea aplicații în Java, este necesar un software special. Cele mai recente versiuni ale acestui software pot fi oricând descărcate de pe site-ul web al dezvoltatorului, oracle.com. Acest software include instrumente precum și.

JRE (Java Runtime Environment)- acesta este un instrument care reprezintă un mediu de rulare - o implementare minimă a unei mașini virtuale în care este lansat și executat codul programului Java. este un instrument care reprezintă un întreg set de instrumente, un kit de dezvoltare a aplicațiilor în limbajul Java. De fapt, JRE este inclus cu JDK, la fel ca și alte biblioteci standard de clase Java, compilatorul javac, documentația, exemplele de cod și diverse utilitare utilitare. Întregul set este distribuit gratuit și are versiuni pentru diferite sisteme de operare, astfel încât oricine are o dorință îl poate descărca și utiliza.

JDK nu include un mediu de dezvoltare integrat și este de așteptat să fie instalat separat de către dezvoltator. Există o mare varietate de IDE-uri pentru dezvoltarea Java, de exemplu: IntelliJ IDEA, Borland JBuilder, NetBeans etc. Pentru a dezvolta aplicații pentru Android, alegem Eclipse IDE.

Cum se instalează JDK. Pentru a instala JDK, trebuie să accesați oracle.com, selectați fila Descărcări, apoi JAVA pentru dezvoltatori. Sau descărcați de aici: pentru Windows x32 - JDK-7u40-Windows-i586.exe dimensiune fișier - 123,46 Mb. Pentru Windows x64 - JDK-7u40-Windows-x64.exe dimensiunea fișierului - 125,25 Mb.

După ce ați descărcat JDK-ul de care aveți nevoie, rulați fișierul descărcat și după câteva așteptări veți vedea ecranul de pornire pentru instalare. Faceți clic pe „ Următorul”.

Pe următorul ecran vi se va solicita directorul de instalare. Faceți clic pe " Următorul" pentru a instala în directorul implicit sau faceți clic pe butonul „ Schimbare...” și selectați directorul dvs. Amintiți-vă calea către directorul în care ați instalat JDK, este evidențiată cu roșu în figură:

La instalare Kit de dezvoltare Java (JDK) aproape terminat, va apărea un formular în care vi se va cere să instalați JRE (Java Runtime Environment), instalare. Nu este nevoie să schimbați directorul de instalare - faceți clic pe „ Următorul”.

Pentru o vreme veți vedea un ecran cu următorul mesaj (3 miliarde de dispozitive folosesc Java):

Apoi veți vedea că instalarea s-a terminat:

În acest moment, instalarea este aproape completă. Dar mai rămâne un pas de făcut - înregistrați calea către fișierele JDK în căile sistemului de operare. Acest lucru ne va permite să rulăm fișierele principale din linia de comandă. Și, de asemenea, vom seta variabila JAVA_HOME. Pe sistemul de operare Windows 7 acest lucru se face după cum urmează: În meniul „ start„găsește articolul” Calculator” și faceți clic dreapta pe el. Va apărea un meniu, selectați „ Proprietăți" Va apărea o fereastră:

Selectați elementul „ Setari de sistem avansate" Va apărea o fereastră în care selectăm elementul „ variabile de mediu”.

În fereastra care apare, trebuie să creați o variabilă - „ JAVA_HOME" Și editați variabila „ cale" Pentru a face acest lucru, faceți clic pe „ Crea”.

Opțiunea de a seta variabila „ JAVA_HOME” este prezentat în figură. Aici este utilă linia pe care v-am sugerat să vă amintiți când instalați JDK.

Setarea variabilei „ cale„Cel mai probabil nu este nevoie să-l creați - de obicei există deja. Dacă nu, atunci în lista de variabile de sistem căutăm variabila „ cale» faceți clic pe el, introduceți o cale suplimentară acolo C:\Program Files\Java\jdk1.7.0_07\binși faceți clic pe " Bine„(fii foarte atent - aici trebuie să introduceți o linie după ce ați pus „ ; ” la sfârșitul listei cu toate căile și, de asemenea, trebuie să adăugați linia ” \cos" după.



Ce medii integrate Java există astăzi? Java Runtime Environment (JRE) este implementarea minimă a unei mașini virtuale necesară pentru a rula aplicații Java, fără un compilator și alte instrumente de dezvoltare.Constă dintr-o mașină virtuală - Java Virtual Machine și biblioteca de clase Java JRF este distribuită gratuit și poate poate fi descărcat de pe site-ul Oracle pentru majoritatea platformelor. Instrumentele de dezvoltare împreună cu JRE sunt incluse în JDK. Astăzi, există trei IDE-uri principale pentru dezvoltare în Java: Eclipse, NetBeans și Intellij IDEA.A alege singur care mediu de dezvoltare este cel mai convenabil nu este o sarcină ușoară. Și această alegere se poate schimba în timp. Distribuția completă NetBeans din cutie acceptă Java (SE,ME,EE,Card,FX), C/C++,Groovy, PHP,HTML5. Capacitățile acestui IDE sunt impresionante: există suport imediat pentru JavaEE, Spring Framework, Hibernate, OSGL, Maven, teste unitare, capacitatea de a dezvolta aplicații desktop pe platforma NetBeans și de a folosi serviciile cloud. Un avantaj separat este că suportul pentru noile versiuni ale specificațiilor incluse în JavaEE apare inițial în NetBeans. Principalele avantaje ale Eclipse sunt extensibilitatea sa, o comunitate uriașă care dezvoltă un număr mare de plugin-uri și extensii și suport pentru aproape toate tehnologiile legate de Java. Prin natura sa, Eclipse este un IDE foarte greu și a devenit posibil să lucrezi confortabil cu acesta începând cu versiunea Juno. Intellij IDEA. Cel mai faimos IDE comercial pentru dezvoltarea Java. IDE-ul vine cu un număr mare de extensii care adaugă suport pentru aproape toate tehnologiile Java comune și multe altele.

Principiile programarii orientate pe obiecte(abstracție, ierarhie, responsabilitate, modularitate)

Principii orientate pe obiecte programare.Programarea orientată pe obiect se dezvoltă de mai bine de douăzeci de ani. Există mai multe școli, fiecare dintre ele oferă propriul set de principii pentru lucrul cu obiecte și prezintă aceste principii în felul său. Dar există mai multe concepte general acceptate. Să le enumerăm. Abstracția Trebuie să ne abstract din unele detalii specifice ale obiectului. Este foarte important să alegeți gradul potrivit de abstractizare. Când descriem comportamentul unui obiect, cum ar fi o mașină, construim un model al acestuia. Fiecare model este descris sub forma unuia sau mai multor clase(clase). O clasă poate fi considerată un proiect, o distribuție, un desen, în funcție de care vor fi apoi create obiecte specifice. Clasa conține o descriere a variabilelor și constantelor care caracterizează obiectul. Sunt chemați câmpurile de clasă(câmpurile de clasă). Sunt numite proceduri care descriu comportamentul unui obiect metode de clasă(metodele clasei). În interiorul unei clase poți descrie și clase imbricate(clase imbricate) și interfețe imbricate. Câmpurile, metodele și clasele imbricate de prim nivel sunt membrii clasei(membrii clasei). Diferitele școli de programare orientată pe obiecte oferă termeni diferiți, folosim terminologia adoptată în tehnologia Java. Iată o schiță a descrierii mașinii:

clasa auto(

int maxVelocity; // Câmp care conține cea mai mare viteză a mașinii

int viteza; // Câmp care conține viteza actuală a mașinii

int greutate; // Câmp care conține greutatea mașinii

// Alte câmpuri...

void moveTo(int x, int y)( // Metodă care simulează mișcarea

// mașină. Parametrii x și y nu sunt câmpuri

int a = 1; // Variabila locală nu este un câmp

// Corpul metodei. Legea este descrisă aici

// mutați mașina în punctul (x, y)

// Alte metode. . .

Ierarhie. Ierarhia obiectelor a fost folosită de multă vreme pentru a le clasifica. Este elaborat în special în detaliu în biologie. Toată lumea este familiarizată cu familiile, genurile și speciile. Putem descrie animalele noastre de companie: pisici, câini, vaci și altele, după cum urmează:

class Pet( // Aici descriem proprietățile generale ale tuturor animalelor de companie

Persoana maestru; // Proprietar de animal

int greutate, vârstă, eatTimel]; // Greutatea, vârsta, timpul de hrănire

int eat(int food, int drink, int time)( // Proces de hrănire

// Acțiuni inițiale...

if (time == eatTimefi]) person.getFood(mancare, bautura);

// Metoda de consum al alimentelor

voce nulă (); // Sunete făcute de animale

// Alte...

Apoi creăm clase care descriu obiecte mai specifice, legându-le la o clasă generală:

class Cat extins Pet( // Descrie proprietăți unice pentru pisici:

int mouseCatched; // numărul de șoareci prinși

void toMouse(); // proces de prindere a șoarecilor

// Alte proprietăți

clasa Dog extinde Pet( // Proprietăți câine:

void preserve(); // pază

Rețineți că nu repetăm ​​proprietățile comune descrise în clasa Pet. Ele sunt moștenite automat. Putem defini un obiect al clasei Dog și folosim toate proprietățile clasei Pet din el ca și cum ar fi definite în clasa Dog:

Câine tuzik = câine nou (), sharik = câine nou ();

După această definiție se va putea scrie

int p = sharik.eat(30, 10, 12);

Și continuați clasificarea astfel:

clasa Pointer extinde Câine( ... ) // Proprietăți ale rasei Pointer

clasa Setter extinde Dog( ... ) // Proprietăți setter

Responsabilitate. Exemplul nostru ia în considerare doar interacțiunea de hrănire descrisă de metoda eat(). În această metodă, animalul îi cere proprietarului să folosească metoda getFood() Deci, obiectul sharik, atunci când își execută metoda eat(), trimite un mesaj obiectului la care se face referire în variabila persoană solicitând o anumită cantitate de hrană și băutură. Mesajul este scris pe rândul person.getFood(food, drink). Acest mesaj este Contracta(contract) între obiecte, a cărui esență este că obiectul îl asumă Sharik responsabilitate(responsabilitate) setați parametrii corecti în mesaj, iar obiectul - valoarea curentă a persoanei - își asumă responsabilitate aplicați metoda de alimentare getFood(), oricare ar fi aceasta. Pentru a implementa corect principiul responsabilității, se aplică al patrulea principiu al programării orientate pe obiecte - modularitatea(modularitate)

Modularitate Acest principiu prevede că fiecare clasă ar trebui să constituie un modul separat. Membrii unei clase care nu sunt destinate să fie accesați extern trebuie să fie încapsulați. În Java, încapsularea se realizează prin adăugarea modificatorului privat la declarația unui membru al clasei. De exemplu:

private int mouseCatched;

nume șir privat;

private void preserve();

Acești membri ai clasei devin închis, ele pot fi folosite doar de instanțe ale aceleiași clase, de exemplu tuzik poate emite instrucțiunea sharik.preserve(). Și dacă în Master class scriem private void getFood(int food, int drink); atunci metoda getFood() nu va fi găsită, iar nefericitul sharik nu va putea obține mâncare. Spre deosebire de a fi închis, putem declara unii membri ai unei clase deschis, scriind modificatorul public în loc de cuvântul privat, de exemplu: public void getFood(int food, int drink); Astfel de membri pot fi accesați de orice obiect din orice clasă.

Cum sunt clasificate tipurile de date Java 2. Declararea variabilelor.

Java definește două categorii de date:

 tipuri primitive;

 tipuri de referinţă.

Există, de asemenea, un tip nul special, tipul expresiei nul, care nu are nume.

Tipurile primitive sunt împărțite în tipuri booleene și tipuri numerice. La rândul lor, tipurile numerice sunt tipuri întregi (byte, short, int, long și char) și tipuri reale (float și double). Tipurile de referință sunt tipuri de clase, interfețe și matrice.

Declarațiile de variabile în Java arată astfel:

tip-nume variabilă-identificator;

De exemplu:

Dacă mai multe variabile sunt de același tip, ele pot fi declarate într-o singură propoziție prin enumerarea identificatorilor variabilelor despărțiți prin virgule:

tip-nume variabilă-identificator-1,identificatorul-variabilă-2,;

De exemplu:

Convențiile de codificare recomandă începerea identificatorilor de variabile cu o literă mică. Dacă numele variabilei constă din mai multe cuvinte, atunci toate sunt scrise împreună și fiecare cuvânt, cu excepția primului, începe cu o literă mare, de exemplu:

dublu inputValue;

O variabilă este o indicație a locului în care valoarea variabilei este stocată în memorie. O variabilă de tip primitiv deține întotdeauna valoarea unei variabile de tipul specificat (de exemplu, int), în timp ce o variabilă de tip referință stochează o referință (adresă) a unui obiect de tipul specificat.

Puteți crea variabile noi oriunde în program.

Tip logic și operații cu acestea (operații de comparare și atribuire, operații logice, operații logice prescurtate)

JavaScript are următoarele tipuri de operații: Operațiune de atribuire atribuie operandului din stânga o valoare bazată pe operandul din dreapta. Operatorul de atribuire de bază este semnul egal (=), care atribuie operandului din stânga valoarea operandului din dreapta. Adică, x = y atribuie valoarea y variabilei x.

Abreviere Sens
x += y x = x + y
x -= y x = x – y
x *= y x = x * y
x/=y x = x / y
x %= y x = x % y
X<<= y x = x<< y
x >>= y x = x >> y
x >>>= y x = x >>> y
x &= y x = x și y
x^=y x = x^y
x |= y x = x | y

Operație de comparație compară operanzi și returnează o valoare booleană bazată pe validitatea comparației. Operanzii pot fi numere, șiruri de caractere, booleeni și obiecte. Șirurile sunt comparate pe baza ordinii lexicografice standard folosind valori Unicode.

Operațiune Descriere Exemple care revin adevărate
Egal (==) Returnează adevărat dacă operanzii sunt egali. Dacă operanzii sunt de diferite tipuri, JavaScript încearcă să convertească operanzii într-un tip care poate fi comparat. 3 == var1 "3" == var1 3 == "3"
Nu este egal (!=) Returnează adevărat dacă operanzii nu sunt egali. Dacă operanzii sunt de diferite tipuri, JavaScript încearcă să convertească operanzii într-un tip care poate fi comparat. var1 != 4 var2 != "3"
Strict egal (===) Returnează adevărat dacă operanzii sunt egali și de același tip. 3 === var1
Strict nu este egal (!==) Returnează adevărat dacă operanzii nu sunt egali și/sau nu sunt de același tip. var1 !== "3" 3 !== "3"
Mai multe (>) Returnează adevărat dacă operandul din stânga este mai mare decât operandul din dreapta. var2 > var1
Mai mare sau egal cu (>=) Returnează adevărat dacă operandul din stânga este mai mare sau egal cu operandul din dreapta. var2 >= var1 var1 >= 3
Mai puțin (<) Returnează adevărat dacă operandul din stânga este mai mic decât operandul din dreapta. var1< var2
Mai mic sau egal (<=) Returnează adevărat dacă operandul din stânga este mai mic sau egal cu operandul din dreapta.

Operații logice folosit de obicei cu valori booleene; în acest caz, este returnată o valoare booleană. Cu toate acestea, && și || returnează de fapt valoarea unuia dintre operanzii specificați, deci dacă aceste operații sunt utilizate pe valori non-booleene, ele pot returna o valoare non-booleană.

Operațiune Utilizare Descriere
&& expr1 && expr2 (ȘI logic) Returnează expr1 dacă poate fi convertit în fals; altfel returnează expr2. Astfel, atunci când este folosit cu valori booleene, && returnează adevărat dacă ambii operanzi sunt adevărati; altfel se întoarce false.
|| expr1 || expr2 (SAU logic) Returnează expr1 dacă poate fi convertit în adevărat; altfel returnează expr2. Astfel, atunci când este utilizat cu valori booleene, || returnează adevărat dacă cel puțin unul dintre operanzi este adevărat; dacă ambii operanzi sunt false, returnează false.
! !expr (Boolean NOT) Returnează false dacă singurul său operand poate fi convertit în adevărat; altfel returnează adevărat.

Deoarece expresiile booleene sunt evaluate de la stânga la dreapta, ele sunt verificate pentru a vedea dacă pot fi executate "abreviat" calcule conform următoarelor reguli:

fals && orice prescurtat la fals.

adevărat || orice prescurtat la adevărat.

Tipuri întregi și operații cu acestea (aritmetică, turnare de tip, operații de comparare, operații pe biți, operații de deplasare). Operatii aritmetice ia valori numerice (literale sau variabile) ca operanzi și returnează o singură valoare numerică. Operațiile aritmetice standard sunt adunarea (+), scăderea (-), înmulțirea (*) și împărțirea (/).

Operațiune Descriere Exemplu
% (modul) Operație binară. Returnează restul întregului atunci când doi operanzi sunt împărțiți. 12% 5 randamente 2.
++ (creștere) Operație unară. Adaugă 1 la operand. Dacă este folosit ca prefix (++x), adaugă unul și returnează valoarea operandului; dacă este folosit ca postfix (x++), returnează valoarea operandului și apoi adaugă unul. Dacă x este 3, atunci ++x setează x la 4 și returnează 4; și x++ setează x la 4 și returnează 3.
-- (Scădere) Operație unară. Scade unul din operand. Valoarea returnată este aceeași cu cea pentru o operație de creștere. Dacă x este 3, atunci --x setează x la 2 și returnează 2; și x-- setează x la 2 și returnează 3.
- (negație unară) Operație unară. Returnează operandul semnat. Dacă x este -3, atunci -x returnează 3.

Pe bit operațiunile își tratează operanzii ca un set de numere binare pe 32 de biți (zero și unu), mai degrabă decât ca numere zecimale, hexazecimale sau octale. De exemplu, numărul zecimal 9 are o reprezentare binară de 1001. Operațiile pe biți sunt efectuate pe astfel de reprezentări binare, dar returnează valori numerice standard JavaScript.

Operațiune Utilizare Descriere
ȘI pe biți A & b Returnează 1 la fiecare poziție de bit în care biții corespunzători ambilor operanzi sunt 1.
SAU pe biți A | b Returnează 1 la fiecare poziție de bit în care biții corespunzători unuia sau ambilor operanzi sunt 1.
SAU exclusiv pe biți A ^ b Returnează 1 la fiecare poziție de bit în care biții corespunzători unuia, dar nu a ambilor operanzi, sunt 1.
Pe bit NU ~ A Inversează biții operandului.
Schimbați la stânga A << b Mută ​​reprezentarea binară a biților a cu b la stânga, umplând partea dreaptă cu zerouri.

Operații logice pe biți

Operanzii sunt convertiți în numere întregi de 32 de biți și exprimați ca o serie de biți (0 și uni).

Fiecare bit al primului operand corespunde unui bit pereche al celui de-al doilea operand: primul bit primului, al doilea celui de-al doilea și așa mai departe.

Operația este efectuată pe fiecare pereche de biți, iar rezultatul este construit pe biți. De exemplu, reprezentarea binară a lui 9 este 1001, iar reprezentarea binară a lui 15 este 1111. Deci, dacă operația pe biți este aplicată acestor două numere, rezultatele vor fi astfel:
15 și 9 dă 9 (1111 și 1001 = 1001)

15 | 9 dă 15 (1111 | 1001 = 1111)

15^9 dă 6 (1111^1001 = 0110) Operații de deplasare pe biți ia doi operanzi: primul operand este cantitatea care trebuie deplasată, iar al doilea specifică numărul de poziții de biți cu care este deplasat primul operand. Direcția de schimbare este controlată de operația aplicată

Tipul de date reale și operațiunile cu acestea. Există două tipuri reale în Java: float și double. Se caracterizează prin adâncimea de biți, intervalul de valori și acuratețea reprezentării, respectând standardul IEEE 754-1985 cu unele modificări. Încă trei valori sunt adăugate numerelor reale obișnuite" 1. Infinit pozitiv, exprimat prin constanta POSITIVE_INFINITY și care apare atunci când o valoare pozitivă depășește, de exemplu, ca urmare a operației de înmulțire 3.0 * 6e307. 2. Infinitul negativ NEGATIVE_INFINITY. 3. „Nu este un număr”, scris de constanta NaN (Nu este un număr) și care apare atunci când un număr real este împărțit la zero sau zero este înmulțit cu infinit. Exemple de definire a tipurilor reale:

float x = 0,001, y = -34,789;

dublu 21 = -16,2305, z2;

Deoarece toate operațiile și comparațiile aritmetice se aplică tipurilor reale, valorile întregi și reale pot fi amestecate în operații. În acest caz, regula de turnare a tipului este completată cu următoarele condiții:

dacă într-o operație un operand este de tip double, atunci celălalt este turnat la tipul double;

dacă un operand este de tip float, atunci celălalt este transformat în float;

în caz contrar, se aplică regula de conversie a numărului întreg.

Operațiuni de atribuire. Funcționare condiționată.Operație simplă de atribuire(operator de atribuire simplă) se scrie cu semnul egal =, în stânga căruia este o variabilă, iar în dreapta o expresie compatibilă cu tipul variabilei: x = 3,5, y = 2 * (x - 0,567) / (x + 2), b = x< у, bb = х >= y && b. Operația de atribuire funcționează astfel: expresia după semnul egal este evaluată și turnată la tipul variabilei din stânga semnului egal. Rezultatul operației va fi valoarea redusă a părții drepte. Operația de atribuire mai are un efect secundar: variabila din stânga primește valoarea redusă a părții drepte, valoarea sa veche se pierde. În operațiunea de atribuire, părțile din stânga și din dreapta sunt inegale; nu puteți scrie 3,5 = x. După operația x = y, variabila x se va modifica, devenind egală cu y, iar după y = x, y se va modifica. Pe lângă operațiunea simplă de atribuire, mai sunt 11 compozit operatori de atribuire compuși: +=, -=, *=, /=, %=, &=, |=, ^=,<<=, >>= ; >>>=. Caracterele sunt scrise fără spații; nu pot fi rearanjate.

Toate operațiunile de atribuire compusă urmează același model:

X op = a e echivalent x = (tip x), adică (x sau a).

Amintiți-vă că variabila ind de tip short este definită cu valoarea 1. Atribuirea ind +=7,8 va avea ca rezultat numărul 8, iar variabila ind va primi aceeași valoare. Această operație este echivalentă cu operația simplă de atribuire ind = (scurt)(ind + 7.8).

Înainte de atribuire, dacă este necesar, se efectuează automat o distribuție de tip. De aceea:

b = b + 10; // Eroare!

b += 10; // Dreapta!

Înainte de adăugarea b + 50, b este promovat la tipul int, rezultatul adunării va fi, de asemenea, de tip int și, în primul caz, nu poate fi atribuit variabilei b fără o conversie explicită de tip. În al doilea caz, înainte de atribuire, rezultatul adunării va fi restrâns la tipul de octet.

Operatorul condiționat este singurul din JavaScript care ia trei operanzi. Poate da una sau alta valoare în funcție de condiție. Sintaxa este:

condiție? val1 : val2
Dacă condiția este adevărată, operația are valoarea val1. În caz contrar, valoarea este val2. Puteți utiliza un operator condiționat oriunde ar putea fi utilizat un operator standard.

De exemplu,

status = (varsta >= 18) ? "adult" : "minor"

Această declarație atribuie valoarea „adult” statutului variabilei dacă vârsta este de 19 sau mai mult. În caz contrar, variabilei statutului i se atribuie valoarea „minor”.

20 de răspunsuri

JRE- Acest Java runtime. Este un pachet cu tot ceea ce este necesar pentru a rula un program Java compilat, inclusiv Java Virtual Machine (JVM), biblioteca de clase Java, comandă java și altă infrastructură. Cu toate acestea, nu poate fi folosit pentru a crea programe noi.

JDK- Acest Kit de dezvoltare Java, un SDK complet pentru Java. Are tot ce are JRE, plus un compilator (javac) și instrumente (cum ar fi javadoc și jdb). Este capabil să creeze și să compileze programe.

De obicei, dacă vă pasă doar de rularea programelor Java pe computer, instalați doar JRE. Asta e tot ce ai nevoie. Pe de altă parte, dacă intenționați să intrați în programarea Java, va trebui să instalați JDK-ul.

Uneori, chiar dacă nu intenționați să faceți dezvoltare Java pe computer, tot trebuie să instalați JDK. De exemplu, dacă implementați o aplicație web cu JSP, din punct de vedere tehnic doar rulați programe Java pe serverul de aplicații. Atunci de ce ai nevoie de JDK? Deoarece serverul de aplicații convertește JSP-urile în servlet-uri Java și trebuie să folosească JDK-ul pentru a compila servleturile. Sunt sigur că vor fi mai multe exemple.

Răspunsul de mai sus (Pablo) este foarte corect. Acestea sunt doar informații suplimentare.

JRE, după cum sugerează și numele, este mediul. Acesta este practic un set de directoare cu fișiere Java, de exemplu:

  • bin/ conține programe Java executabile. Cel mai important este java (și pentru Windows, precum și javaw), care rulează JVM. Există și alte utilități aici, de exemplu keytool și policytool.
  • conf/ conține fișiere de configurare editabile de utilizator pentru experții Java.
  • lib/ are un număr mare de fișiere suport: unele fișiere .jar, fișiere de configurare, fișiere de proprietăți, fonturi, traduceri, certificate etc. - toate acestea sunt "decupaje" Java. Cele mai importante sunt modulele, un fișier care conține .class al Bibliotecii Standard Java.
  • La un anumit nivel, biblioteca standard Java trebuie să apeleze cod nativ. În acest scop, JRE conține niște .dll (Windows) sau .dylib (macOS) sau .so (Linux) în bin/sau lib/ cu binarul de sistem acceptat.

JDK este, de asemenea, o colecție de directoare. Aceasta este o versiune extinsă a JRE cu câteva completări:

JDK este un superset al JRE și conține tot ce este în JRE, plus instrumente precum compilatoare și depanatoare necesare pentru dezvoltarea applet-urilor și aplicațiilor. JRE oferă biblioteci, Java Virtual Machine (JVM) și alte componente pentru rularea applet-urilor și aplicațiilor scrise în limbajul de programare Java.

În termeni profani: JDK este bunicul, JRE este tatăl și JVM este fiul lor. [acestea. JDK>JRE>JVM]

JDK = JRE + Instrumente de dezvoltare/depanare

JRE = JVM + Clase de pachete Java (de exemplu, util, math, lang, awt, swing etc.) Biblioteci + runtime.

JVM = sistem de încărcare de clasă + zonă de date de rulare + motor de rulare.

Cu alte cuvinte, dacă ești un programator Java, vei avea nevoie de JDK în sistemul tău și acest pachet va include și JRE și JVM, dar dacă ești un utilizator normal căruia îi place să joace jocuri online, atunci vei avea nevoie doar de JRE și asta. pachetul nu va avea un JDK în el.

Mașina virtuală Java (JVM) este o mașină virtuală care rulează bytecodes Java. JVM-ul nu înțelege codul sursă Java, așa că vă compilați fișierele *.java pentru a produce fișiere *.class, care conțin coduri de octeți pe care JVM-ul le poate înțelege. Este, de asemenea, esența care permite Java să fie un „limbaj portabil” (scrie o dată, rulează oriunde). Într-adevăr, există implementări JVM specifice pentru diferite sisteme (Windows, Linux, MacOS, vezi lista Wikipedia...), scopul este ca cu aceleași bytecodes să producă toate aceleași rezultate.

JDK și JRE

Pentru a explica diferența dintre JDK și JRE, cel mai bine este să citiți documentația Oracle și să consultați diagrama:

Java Runtime Environment (JRE)

Java Runtime Environment (JRE) oferă biblioteci, mașină virtuală Java și alte componente pentru rularea applet-urilor și aplicațiilor scrise în limbajul de programare Java. În plus, JRE include două tehnologii cheie de implementare: un plugin Java care permite rularea applet-urilor în browsere populare; și Java Web Start, care implementează aplicații autonome în rețea. Este, de asemenea, baza tehnologiilor din Platforma Java 2, Enterprise Edition (J2EE) pentru dezvoltarea și implementarea software-ului pentru întreprinderi. JRE nu conține instrumente sau utilitare, cum ar fi compilatoare sau depanare pentru dezvoltarea applet-urilor și aplicațiilor.

Kit de dezvoltare Java (JDK)

JDK este un superset al JRE și conține tot ce este în JRE, plus instrumente precum compilatoare și depanatoare necesare pentru dezvoltarea applet-urilor și aplicațiilor.

Vă rugăm să rețineți că Oracle nu este singurul care oferă JDK.

De pe site-ul oficial java...

JRE (Java Runtime Environment):

  • Este o implementare a mașinii virtuale Java* care rulează de fapt programe Java.
  • Java Runtime Environment este un plugin necesar pentru a rula programe Java.
  • JRE este mai mic decât JDK, așa că necesită mai puțin spațiu pe disc.
  • JRE poate fi descărcat/acceptat gratuit https://www.java.com
  • Include JVM, Core și alte componente suplimentare pentru rularea aplicațiilor și applet-urilor scrise în Java.

JDK (kit de dezvoltare Java)

O diferență din perspectiva depanării:

Pentru a depana în clasele de sistem Java, cum ar fi String și ArrayList, aveți nevoie de o versiune specială a JRE care este compilată cu „informații de depanare”. JRE inclus cu JDK oferă aceste informații, dar JRE obișnuit nu. JRE obișnuit nu include aceste informații pentru a oferi performanțe mai bune.

Ce sunt informațiile de depanare? Iată o scurtă explicație luată din această postare de blog:

Compilatoarele moderne fac o treabă destul de bună în a vă transforma codul de nivel înalt, cu structurile sale frumoase de control amânate și imbricate și variabilele tipate arbitrar, într-o grămadă mare de biți numită cod mașină (sau cod de octet în cazul Java), singurul scop. dintre care ar trebui să ruleze cât mai repede posibil pe procesorul țintă (procesorul virtual al JVM-ului tău). Codul Java este convertit în mai multe instrucțiuni de cod de mașină. Variabilele sunt mutate peste tot - pe stivă, în registre sau complet optimizate. Structurile și obiectele nici măcar nu există în codul rezultat - sunt doar o abstracție care este tradusă în offset-uri hard-coded în memorie tampon.

Deci, cum știe depanatorul unde să se oprească atunci când îi cereți să descompună o scriere pe o anumită funcție? Cum reușești să găsești ce să-ți arăți când îi dai valoarea unei variabile? Răspunsul este informațiile de depanare.

Informațiile de depanare sunt generate de compilator împreună cu codul mașinii. Este o reprezentare a relației dintre programul executabil și codul sursă original. Aceste informații sunt codificate într-un format predefinit și stocate împreună cu codul mașinii. Multe dintre aceste formate au fost inventate de-a lungul anilor pentru diferite platforme și executabile.

JRE este un acronim pentru Java Runtime Environment. Este folosit pentru a oferi un mediu de rulare. Este o implementare a JVM-ului, există fizic. Conține un set de biblioteci și alte fișiere pe care JVM-ul le folosește în timpul execuției.

JDK este un acronim pentru Java Development Kit. El există fizic. Conține instrumente de dezvoltare JRE+.

De obicei, când vă pasă doar de rularea programelor Java pe browser sau computer, veți instala doar JRE. Asta e tot ce ai nevoie. Pe de altă parte, dacă intenționați să faceți ceva programare Java, veți avea nevoie și de JDK.

JVM, JRE și JDK depind de platformă, deoarece configurația fiecărui sistem de operare este diferită. Dar Java este independent de platformă.

Java Virtual Machine (JVM) este un sistem de rulare care execută bytecode Java.

JRE este mediul (biblioteci standard și JVM) necesar pentru a rula aplicații Java.

Java R Runtime Environment (JRE)

JRE oferă bibliotecile, mașina virtuală Java și alte componente necesare pentru a rula applet-uri și aplicații scrise în limbajul de programare Java. Acest timp de rulare poate fi redistribuit între aplicații pentru a le face independente.

Kit de dezvoltare Java (JDK)

JDK include instrumente de dezvoltare JRE plus linie de comandă, cum ar fi compilatoare și depanare, care sunt necesare sau utile pentru dezvoltarea applet-urilor și aplicațiilor.

Dacă doriți să rulați programe Java, dar nu să le dezvoltați, descărcați Java Runtime Environment sau JRE. Dacă doriți să le dezvoltați, descărcați Java Development Kit sau JDK

JDK

Lăsați JDK-ul să fie un set care include ceea ce aveți nevoie pentru a dezvolta și rula aplicații Java.

JDK este furnizat ca mediu de dezvoltare pentru crearea de aplicații, componente și applet-uri.

JRE

Conține tot ce aveți nevoie pentru a rula aplicații Java în formă compilată. Nu aveți nevoie de biblioteci și alte materiale. Tot ce ai nevoie este inclus.

JVM, JRE, JDK sunt toate baza limbajului Java. Fiecare componentă funcționează separat. Jdk și Jre există fizic, dar Jvm este o mașină abstractă, adică nu există fizic.

JVM este un subsistem al JDK și JRE care este utilizat pentru a valida codul intermediar cunoscut sub numele de bytecode. Mai întâi încarcă un „fișier de clasă” având o extensie .c generată de compilatorul Java (Javac) prin încărcătorul de clasă subsistem JVM și clasifică locațiile de memorie (zona de clasă, stivă, heap și registre de mașină) în funcție de utilizarea lor. Apoi verificați tot codul de octeți pentru a vă asigura că este returnat la java și accesul la memorie pentru întreaga rețea. Odată ce interpretul începe să ruleze, interpretul verifică întregul program linie cu linie și în final rezultatul este afișat în consolă, browser și aplicație prin JRE (Java Runtime Environment) care oferă facilitățile de execuție.

JRE este, de asemenea, un subsistem al JDK care oferă facilități de execuție precum JVM, clase, fișiere executabile precum .jar etc.

JDK- Este un kit de dezvoltare Java care conține toate componentele necesare care sunt utilizate în programare, cum ar fi clasa, metodele, Swing, AWT, pachetul, java (interpret), javac (compiler), appletviewer (vizualizator aplicație applet), etc. Deci, rezultatul final este conținutul fiecărui fișier, care este util în timpul dezvoltării unei aplicații, autonome sau aplicații web.

daca tu programator Java, vei avea nevoie JDK pe sistemul dvs., iar acest pachet va include și JRE și JVM, dar dacă dvs utilizator normal cui îi place să joace jocuri online, atunci vei avea nevoie doar de JREși nu va exista niciun JDK în acest pachet.,

JVM (Java Virtual Machine) este o mașină abstractă. Este o specificație care oferă un mediu de rulare în care poate fi executat bytecode Java.

JVM-urile sunt disponibile pentru multe platforme hardware și software. JVM, JRE și JDK depind de platformă, deoarece configurația fiecărui sistem de operare este diferită. Dar Java este independent de platformă.

Conține tot ce aveți nevoie pentru a rula aplicații Java în formă compilată. Nu ai nevoie de biblioteci sau nimic. Tot ce ai nevoie este compilat.

JRE nu poate fi folosit pentru dezvoltare, este folosit doar pentru a rula aplicații.

Kit de dezvoltare Java SE (JDK)

JDK include instrumente de dezvoltare JRE plus linie de comandă, cum ar fi compilatoare și depanare, care sunt necesare sau utile pentru dezvoltarea applet-urilor și aplicațiilor.

O înțelegere clară a acestor termeni (JVM, JDK, JRE) este necesară pentru a înțelege utilizarea și diferențele lor.

JVM Java Virtual Machine (JVM) este un sistem de rulare care execută bytecode Java. JVM-ul este ca un computer virtual care poate executa un set de instrucțiuni compilate și poate manipula zonele de memorie. Când compilatorul Java compilează codul sursă, generează un set de instrucțiuni foarte optimizat numit bytecode într-un fișier .class. JVM interpretează aceste instrucțiuni bytecode și le convertește în cod mașină pentru execuție.

Când vorbiți despre limbajul de programare Java, puteți vedea adesea astfel de abrevieri precum: Java SE, JRE, JDK, IDE. Să ne uităm la ele.

Java SE

Java Standard Edition (Java SE)- aceasta este ediția standard a Java, pentru aceasta sunt dezvoltate aplicațiile client și acest site este dedicat în întregime Java SE. Aplicațiile pot rula independent sau ca aplicații de browser web.

Pe lângă ediția standard, există:

  • Java Enterprise Edition (Java EE) pentru dezvoltarea aplicațiilor server-side, cum ar fi Java Servlets, JavaServer Pages (JSP) și JavaServer Faces (JSF).
  • Java Micro Edition (Java ME) pentru dezvoltarea de aplicații pentru dispozitive mobile, cum ar fi telefoanele.

JRE

Mediul Java Runtime- Mediu de rulare Java. Aceasta este o mașină virtuală Java necesară pentru a rula programe Java pe computerele utilizatorului. Conține tot ce aveți nevoie pentru a rula aplicații Java pe sistemul dumneavoastră. JRE acoperă nevoile majorității utilizatorilor.

JDK

JDK (kit de dezvoltare Java SE)- un set de instrumente pentru dezvoltatori pentru crearea de programe în Java. Include instrumentele JRE plus pentru dezvoltarea, depanarea și monitorizarea aplicațiilor Java.

Deci, să decideți ce să descărcați: JRE sau JDK? Răspundeți la întrebarea: doriți să rulați doar programe Java sau să le dezvoltați? Dacă îl rulezi, atunci JRE este suficient pentru tine. Dacă doriți să dezvoltați programe, atunci aveți nevoie de JDK. Kitul de dezvoltare JDK include deja JRE, așa că nu este nevoie să le descărcați pe amândouă separat.

versiuni Java

Pe lângă diferitele ediții discutate, precum și diferite versiuni ale pachetelor (pentru utilizatorul final și pentru dezvoltator), există versiuni numerotate. În prezent, versiunea actuală este JDK 1.10. Apropo, JDK 1.10 = JDK 10.

Dacă sunteți interesat de lansările timpurii (ceva de genul beta), atunci pentru a unsprezecea versiune le veți găsi la

IDE

IDE (mediu de dezvoltare integrat)- mediul de dezvoltare integrat, conceput pentru a ajuta dezvoltatorul, accelerează procesul de dezvoltare a programului. De obicei, include un editor cu evidențiere de sintaxă, ajutor, compilare automată și lansare de program. Un IDE poate fi creat pentru orice limbaj de programare sau pentru un anumit limbaj, cum ar fi Java. Mediile de dezvoltare integrate sunt disponibile gratuit și cu plată. Un bun IDE gratuit pentru Java este NetBeans.

Setul de programe și clase JDK conține:

  • compilator javac de la textul sursă la coduri de octet;
  • interpret java, care conține implementarea JVM;
  • interpret ușor jre(nu este disponibil în cele mai recente versiuni);
  • vizualizator de applet appietviewer, înlocuirea browserului;
  • depanator jdt>;
  • dezasamblator javap;
  • program de arhivare și compresie borcan;
  • program de colectare a documentației javadoc;
  • program javah generarea de fișiere de antet în limbaj C;
  • program javakey adăugarea unei semnături electronice;
  • program native2ascii, care convertește fișierele binare în fișiere text;
  • programe rmicȘi rmiregistry pentru lucrul cu obiecte la distanță;
  • program seriaiver, care specifică numărul de versiune al clasei;
  • biblioteci și fișiere antet ale metodelor „native”;
  • Biblioteca de clase Java API(Interfața de programare a aplicației).

Versiunile anterioare ale JDK au inclus și versiuni de depanare ale programelor executabile: javac_g, java_g etc.

SUN Microsystems dezvoltă și actualizează constant JDK, cu versiuni noi care apar în fiecare an.

În 1996, a fost lansată prima versiune a JDK 1.0, care a fost modificată la versiunea 1.0.2. În această versiune, biblioteca de clase Java API conținea 8 pachete. Întregul pachet JDK 1.0.2 a venit împachetat într-un singur fișier de aproximativ 5 MB, iar după despachetare a ocupat aproximativ 8 MB de spațiu pe disc.

În 1997, a apărut versiunea JDK 1.1, ultima sa modificare, 1.1.8, a fost lansată în 1998. Această versiune avea 23 de pachete de clasă, ocupa 8,5 MB în formă ambalată și aproximativ 30 MB pe disc.

În primele versiuni ale JDK, toate pachetele de bibliotecă Java API au fost împachetate într-un singur fișier de arhivă classes.zip și apelate direct din această arhivă; nu trebuie să fie dezarhivat.

Setul de instrumente JDK a fost apoi puternic reproiectat.

JDK 1.2 a fost lansat în decembrie 1998 și conținea deja 57 de pachete de clasă. În formă arhivată, acesta este un fișier de aproape 20 MB și un alt fișier separat de peste 17 MB cu documentație ambalată. Versiunea completă se află pe 130 MB de spațiu pe disc, din care aproximativ 80 MB sunt ocupați de documentație.

Începând cu această versiune, SUN a început să numească toate propriile produse de tehnologie Java Platforma Java 2, ediție standard, abreviat ca J2SE și redenumit JDK în Java 2 SDK, ediție standard(Software Development Kit), prescurtat ca J2SDK, deoarece este încă disponibil Java 2 SDK Enterprise EditionȘi Java 2 SDK Micro Edition. Cu toate acestea, compania SUN însăși folosește adesea vechiul nume, iar numele Java 2 a devenit stabilit în literatură.

Pe lângă cele 57 de pachete de clasă necesare pe orice platformă și apelate Core API, Java 2 SDK vl.2 include pachete de clasă suplimentare numite API Standard Extension. Java 2 SDK SE, vl.3, lansat în 2000, are deja 76 de pachete de clasă care alcătuiesc Core API. În formă ambalată, acesta este un fișier care măsoară aproximativ 30 MB și un alt fișier cu documentație ambalată măsoară 23 MB. Toate acestea sunt despachetate în 210 MB de spațiu pe disc. Această versiune necesită un procesor Pentium 166 sau mai mare și cel puțin 32 MB de RAM.

În prezent, versiunea JDK 1.0.2 nu mai este utilizată. Versiunea JDK 1.1.5 cu biblioteca grafică AWT este încorporată în browserele populare Internet Explorer 5.0 și Netscape Communicator 4.7, deci este folosită pentru a crea applet-uri. Tehnologia Java 2 este utilizată pe scară largă în servere și sisteme client-server.

Pe lângă JDK, SUN distribuie și un set separat JRE(Java Runtime Environment).

Ce este JRE

Setul JRE de programe și pachete de clasă conține tot ceea ce este necesar pentru a executa bytecodes, inclusiv interpretorul java (în versiunile anterioare, un interpret ușor jre) și o bibliotecă de clasă. Acesta face parte din JDK și nu conține compilatoare, depanatoare sau alte instrumente de dezvoltare. Este JRE sau analogul său de la alte companii care este conținut în browsere care pot rula programe în Java, sisteme de operare și sisteme de gestionare a bazelor de date.

Deși JRE este inclus în JDK, SUN distribuie și acest set ca fișier separat.

Versiunea JRE 1.3.0 este un fișier de arhivă de aproximativ 8 MB, extinzându-se la 20 MB de spațiu pe disc.