Jaka jest różnica między JDK a JRE?

Jaka jest różnica między JDK a JRE?

Jakie są ich role i kiedy powinienem użyć jednej lub drugiej?

 964
Author: Lii, 2009-12-15

20 answers

JRE jest Java Runtime Environment . Jest to pakiet wszystkiego, co niezbędne do uruchomienia skompilowanego programu Java, w tym Java Virtual Machine (JVM), biblioteki klas Java, polecenia java i innych infrastruktur. Nie można go jednak użyć do tworzenia nowych programów.

JDK to Java Development Kit , w pełni funkcjonalny zestaw SDK dla Javy. Ma wszystko, co ma JRE, ale także kompilator (javac) i narzędzia (takie jak javadoc i jdb). Potrafi tworzyć i kompilować programy.

Zazwyczaj, jeśli zależy Ci tylko na uruchomieniu programów Java na komputerze, zainstalujesz tylko JRE. To wszystko, czego potrzebujesz. Z drugiej strony, jeśli planujesz programowanie w Javie, musisz zamiast tego zainstalować JDK.

Czasami, nawet jeśli nie planujesz tworzenia Javy na komputerze, nadal potrzebujesz zainstalowanego JDK. Na przykład, jeśli wdrażasz aplikację internetową z JSP, jesteś technicznie po prostu uruchamianie programów Java wewnątrz serwera aplikacji. Więc po co Ci JDK? Ponieważ serwer aplikacji przekonwertuje JSP na serwlety Javy i musi użyć JDK do kompilacji serwletów. Jestem pewien, że przykładów jest więcej.

 1278
Author: Pablo Santa Cruz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-07 11:04:07

Powyższa odpowiedź (autorstwa Pablo) jest bardzo słuszna. To tylko dodatkowe informacje.

JRE jest, jak sama nazwa wskazuje, środowiskiem . Jest to w zasadzie zbiór katalogów z plikami związanymi z Javą.]}

  • bin/ zawiera programy wykonywalne Javy. Najważniejszym jest java (i dla Windows, javaw, jak również), który uruchamia JVM. Istnieją również inne narzędzia, takie jak keytool i policytool.
  • conf/ edytowalne przez użytkownika pliki konfiguracyjne dla ekspertów Java do zabawy.
  • lib/ posiada dużą liczbę plików pomocniczych: niektóre .jar s, pliki konfiguracyjne, pliki właściwości, czcionki, tłumaczenia, certy itp. - wszystkie "ozdoby" z Jawy. Najważniejszym jest modules, plik zawierający .class pliki standardowej biblioteki Javy.
  • na pewnym poziomie biblioteka Standardowa Java musi wywoływać kod natywny. W tym celu JRE zawiera .dll (Windows) lub .dylib (macOS) lub .so (Linux) pliki w bin/ lub lib/ Z obsługującym, natywnym kodem binarnym specyficznym dla systemu.

JDK jest również zbiorem katalogów. Jest to superset JRE, z pewnymi dodatkami: {]}

  • bin/ został powiększony o narzędzia programistyczne. Najważniejsze z nich to javac; Inne to jar, javadoc i jshell.
  • jmods/, który przechowuje pliki JMOD dla biblioteki standardowej, został dodany. Pliki te pozwalają bibliotece standardowej być używany z jlink.
 150
Author: Carl Smotricz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-21 17:41:29

Tutaj wpisz opis obrazka

JDK jest supersetem JRE i zawiera wszystko, co jest w JRE, a także narzędzia, takie jak kompilatory i debuggery niezbędne do tworzenia apletów i aplikacji. JRE dostarcza biblioteki, maszynę wirtualną Javy (JVM) i inne komponenty do uruchamiania apletów i aplikacji napisanych w języku programowania Java.

 142
Author: Chinbold Gansukh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-20 06:24:10

W kategoriach laika: JDK to dziadek JRE to ojciec, a JVM to ich syn. [tj. JDK > JRE > JVM]

JDK = JRE + Development/debugging tools

JRE = JVM + klasy pakietów Java (jak util, math, Lang,awt, swing itp.) + biblioteki uruchomieniowe.

JVM = Class loader system + runtime data area + Execution Engine.

Innymi słowy jeśli jesteś programistą Javy będziesz potrzebował JDK w swoim systemie i ten pakiet będzie Dołącz również JRE i JVM, ale jeśli jesteś zwykłym użytkownikiem, który lubi grać w gry online, Będziesz potrzebował tylko JRE i ten pakiet nie będzie w nim JDK.

JVM:

The Java Virtual Machine (JVM) jest maszyną Wirtualną, która uruchamia bajtowe kody Javy. JVM nie rozumie kodu źródłowego Javy, dlatego kompilujesz swoje *.pliki java do uzyskania *.pliki klas, które zawierają bajtowe kody zrozumiałe przez JVM. Jest również podmiotem, który pozwala Javie być "portable language" (napisz raz, uruchom w dowolnym miejscu). Rzeczywiście istnieją specyficzne implementacje JVM dla różnych systemów (Windows, Linux, MacOS, patrz lista Wikipedii..), celem jest, aby z tymi samymi bajtowymi kodami wszystkie dały te same wyniki.

JDK i JRE

Aby wyjaśnić różnicę między JDK i JRE, najlepiej jest przeczytać dokumentację Oracle i zapoznać się ze schematem:

Java Runtime Environment (JRE)

The Java Runtime Environment (JRE) dostarcza biblioteki, wirtualną maszynę Javy i inne komponenty do uruchamiania apletów i aplikacji napisanych w języku programowania Java. Ponadto, dwie kluczowe technologie wdrażania są częścią JRE: Java Plug-in, który umożliwia uruchamianie apletów w popularnych przeglądarkach; oraz Java Web Start, który wdraża samodzielne aplikacje w sieci. Jest również podstawą dla technologii platformy Java 2, Enterprise Edition (J2EE) dla oprogramowania dla przedsiębiorstw rozwój i wdrażanie. JRE nie zawiera narzędzi i narzędzi takich jak kompilatory czy debuggery do tworzenia apletów i aplikacji.

Java Development Kit (JDK)

JDK jest supersetem JRE i zawiera wszystko, co znajduje się w JRE, a także narzędzia, takie jak kompilatory i debuggery niezbędne do tworzenia apletów i aplikacji.

Zauważ, że nie tylko Oracle dostarcza JDK.

Proces kompilacji JIT (dzięki uprzejmości: Oracle dokumentacja)

JDK > JRE > JVM

 109
Author: Jaimin Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Z oficjalnej strony Javy...

JRE (Java Runtime environment):

  • jest to implementacja Wirtualnej Maszyny Java*, która faktycznie wykonuje Programy Java.
  • Java Runtime Environment jest wtyczką potrzebną do uruchamiania programów java.
  • JRE jest mniejszy od JDK, więc potrzebuje mniej miejsca na dysku.
  • JRE można pobrać / obsługiwać swobodnie z https://www.java.com
  • zawiera JVM, podstawowe biblioteki i inne dodatkowe komponenty do uruchamiania aplikacji i apletów napisanych w Javie.

JDK (Java Development Kit)

  • jest to pakiet oprogramowania, który można wykorzystać do tworzenia aplikacji opartych na Javie.
  • Java Development Kit jest potrzebny do tworzenia aplikacji java.
  • JDK potrzebuje więcej miejsca na dysku, ponieważ zawiera JRE wraz z różnymi narzędziami programistycznymi.
  • JDK można pobierać / obsługiwać swobodnie od https://www.oracle.com/technetwork/java/javase/downloads /
  • Zawiera JRE, zestaw klas API, kompilator Javy, Webstart oraz dodatkowe pliki potrzebne do pisania apletów i aplikacji Java.
 26
Author: Wanna Coffee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-01 13:24:25

Jedna różnica z perspektywy debugowania:

Aby debugować do klas systemowych Java, takich jak String i ArrayList, potrzebujesz specjalnej wersji JRE, która jest skompilowana z "debug information". JRE zawarte w JDK dostarcza tych informacji, ale zwykłe JRE nie. Zwykłe JRE nie zawiera tych informacji, aby zapewnić lepszą wydajność.

Co to jest debugowanie informacji? Oto krótkie wyjaśnienie zaczerpnięte z tego posta na blogu :

Nowoczesne Kompilatory wykonują całkiem dobrą robotę konwertując kod wysokiego poziomu, z ładnie wciętą i zagnieżdżoną strukturą sterowania i arbitralnie wpisywanymi zmiennymi w duży stos bitów zwanych kodem maszynowym( lub kodem bajtowym w przypadku Javy), którego jedynym celem jest uruchomienie tak szybko, jak to możliwe na docelowym CPU (wirtualnym CPU twojego JVM). Kod Java jest konwertowany na kilka instrukcji kodu maszynowego. Zmienne są wrzucane wszędzie – do stosu, do rejestrów lub całkowicie / align = "left" / Struktury i Obiekty nie istnieją nawet w kodzie wynikowym – są jedynie abstrakcją to zostaje przetłumaczone na mocno zakodowane offsety do buforów pamięci.

Więc skąd debugger wie, gdzie się zatrzymać, gdy prosi się go o złamanie przy wejściu do jakiejś funkcji? Jak udaje mu się znaleźć to, co Ci pokazać, gdy zapytasz go o wartość zmiennej? Odpowiedź brzmi-debugowanie informacji.

Informacje o debugowaniu są generowane przez kompilator razem z kodem maszynowym. Jest to reprezentacja relacji pomiędzy programem wykonywalnym a oryginalnym kodem źródłowym. Informacje te są zakodowane w predefiniowanym formacie i przechowywane wraz z kodem maszynowym. Wiele takich formatów zostało wymyślonych na przestrzeni lat dla różnych platform i plików wykonywalnych.

 24
Author: Steve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-10 16:46:53

JVM, JRE, JDK - to wszystko jest kręgosłupem języka Java. Każdy komponent pracuje osobno. JDK i JRE istnieją fizycznie, ale JVM jest maszyną abstrakcyjną, co oznacza, że nie istnieje fizycznie.

JVM jest podsystemem JDK i JRE, który służy do sprawdzania kodu pośredniego znanego jako "bytecode". Najpierw ładuje "plik klasy" (having .rozszerzenie c) generowane przez kompilator Java (javac) poprzez classloader podsystemu JVM i klasyfikowane Miejsce Pamięci (obszar klasy, stosu, sterty i rejestrów pc) zgodnie z ich zastosowaniem. Następnie sprawdza cały kod bajtowy, aby upewnić się, że jest on zwracany w Javie i cały dostęp do pamięci przez sieć. Praca interpretera zaczyna się po tym, gdy sprawdza on cały program linia po linii. Wyniki są ostatecznie wyświetlane w konsoli / przeglądarce/aplikacji za pośrednictwem JRE (Java Runtime Environment), które funkcje uruchomieniowe.

JRE jest również podsystemem JDK, który zapewnia funkcje uruchomieniowe, takie jak JVM, klasy, pliki wykonywalne jak .plik jar itp.

JDK to skrót od Java Development Kit. Zawiera wszystkie niezbędne komponenty używane w programowaniu Java, takie jak Klasa, metoda, swing, AWT, pakiet, Java( interpreter), javac( kompilator), appletviewer (przeglądarka aplikacji apletów), itd. Podsumowując, zawiera on KAŻDY plik wymagany do tworzenia aplikacji, zarówno samodzielnych, jak i internetowych.

 9
Author: Kanan J,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-31 05:13:57

JRE

JRE jest akronimem Java Runtime Environment.It służy do zapewnienia runtime environment.It czy realizacja JVM.It fizycznie exists.It zawiera zestaw bibliotek + inne pliki, które JVM używa w czasie wykonywania.

JDK

JDK to skrót od Java Development Kit.It fizycznie exists.It zawiera narzędzia programistyczne JRE +.

Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

Zazwyczaj, gdy zależy Ci tylko na uruchamiając Programy Java na przeglądarce lub komputerze zainstalujesz tylko JRE. To wszystko, czego potrzebujesz. Z drugiej strony, jeśli planujesz programowanie w Javie, będziesz również potrzebował JDK.

 8
Author: Nikhil Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-21 08:13:53

JVM, JRE i JDK są zależne od platformy, ponieważ konfiguracja każdego systemu operacyjnego jest inna. Ale Java jest niezależna od platformy.

Java Virtual Machine (JVM) jest systemem wykonującym bajt kodu Javy.

JRE jest środowiskiem (biblioteki standardowe i JVM) wymaganym do uruchamiania aplikacji Java.

JDK zawiera narzędzia programistyczne JRE plus, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.

 8
Author: Chintan Patni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 09:00:35

Oto prosta odpowiedź bezpośrednio od Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/

Java SE Runtime Environment (JRE)

JRE dostarcza biblioteki, wirtualną maszynę Javy i inne komponenty niezbędne do uruchamiania apletów i aplikacji napisanych w języku programowania Java. To środowisko uruchomieniowe można redystrybuować z aplikacjami, aby stały się wolnostojące.

Java SE Development Kit (JDK)

JDK zawiera narzędzia programistyczne JRE plus, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.

 7
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-08 18:01:51

Jvm (Java Virtual Machine) jest maszyną abstrakcyjną. Jest to specyfikacja, która zapewnia środowisko uruchomieniowe, w którym można wykonać bajt kodu Javy.

JRE jest akronimem Java Runtime Environment.It służy do zapewnienia runtime environment.It czy realizacja JVM.It fizycznie exists.It zawiera zestaw bibliotek + inne pliki, które JVM używa w czasie wykonywania

JDK to skrót od Java Development Kit.It fizycznie exists.It zawiera narzędzia programistyczne JRE +

 7
Author: Pruthvi Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 15:32:18

Jeśli chcesz uruchamiać programy Java, ale nie je rozwijać, Pobierz środowisko Java Run-time lub JRE. Jeśli chcesz je rozwijać, Pobierz Java Development kit lub JDK

JDK

Let ' s called JDK to zestaw, który zawiera to, co jest potrzebne do tworzenia i uruchamiania aplikacji java.

JDK jest podane jako środowisko programistyczne do budowania aplikacji, komponentów i apletów.

JRE

Zawiera wszystko, czego potrzebujesz do uruchomienia Javy wnioski w formie skompilowanej. Nie potrzebujesz żadnych bibliotek i innych rzeczy. Wszystkie potrzebne rzeczy są skompilowane.

JRE nie może być używany do programowania, służy tylko do uruchamiania aplikacji.

 7
Author: nifCody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-01 03:39:39

Jeśli jesteś programistą Java będziesz potrzebował JDK w swoim systemie i pakiet ten będzie zawierał również JRE i JVM, ale jeśli jesteś zwykłym użytkownikiem , który lubi grać w gry online, Będziesz potrzebował tylko JRE i pakiet ten nie będzie zawierał JDK.

JVM

Jvm (Java Virtual Machine) jest maszyną abstrakcyjną. Jest to Specyfikacja dostarczająca środowisko uruchomieniowe, w którym Java bytecode może być wykonany.

JVM są dostępne dla wielu platform sprzętowych i programowych. JVM, JRE i JDK są zależne od platformy, ponieważ konfiguracja każdego systemu operacyjnego / align = "left" / Ale Java jest niezależna od platformy.

JRE

Zawiera wszystko, czego potrzebujesz do uruchamiania aplikacji Java w skompilowanym forma. Nie potrzebujesz żadnych bibliotek i innych rzeczy. All things you potrzebne są skompilowane.

JRE nie może być używany do programowania, służy tylko do uruchamiania aplikacje.

Java SE Development Kit (JDK)

JDK zawiera narzędzia programistyczne JRE plus, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia aplety i aplikacje.

(Źródła: GeeksforGeeks Q&A, Przegląd Platformy Java)

 6
Author: Harita M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 12:07:08

Po prostu:

JVM jest maszyną wirtualną wykonywaną na

JRE jest środowiskiem (biblioteki standardowe i JVM) wymaganym do uruchamiania aplikacji Java

JDK to JRE z narzędziami programistycznymi i dokumentacją

 6
Author: ABP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-19 12:41:04

Jasne zrozumienie tych terminów (JVM, JDK, JRE) jest niezbędne do zrozumienia ich użycia i różnic.

JVM Java Virtual Machine (JVM) to system czasu wykonywania kodu bajtowego Javy. JVM jest jak wirtualny komputer, który może wykonać zestaw skompilowanych instrukcji i manipulować lokalizacjami pamięci. Gdy kompilator Java kompiluje kod źródłowy, generuje wysoce zoptymalizowany zestaw instrukcji o nazwie bajt w .plik klasowy. JVM interpretuje te bajtowe kody instrukcje i konwertuje je do kodu maszynowego do wykonania.

JDK Java Development Kit (JDK) to środowisko programistyczne, którego można używać do tworzenia i wykonywania aplikacji Java. Zawiera JRE i zestaw narzędzi programistycznych, takich jak kompilator Java, interpreter, apletviewer i przeglądarka dokumentów. JDK jest implementowany za pośrednictwem platform Java SE, Java EE lub Java ME.

JRE Java Runtime Environment (JRE) jest częścią JDK, który zawiera JVM, podstawowe klasy i kilka bibliotek, które wspierają tworzenie aplikacji. Chociaż JRE jest dostępny jako część JDK, można go również pobrać i używać oddzielnie.

Dla pełnego zrozumienia zapraszam na mojego bloga: Jdk Jre Jvm i różnice

 6
Author: Chandra Shekhar Goka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-22 02:48:59

Jdk jest konieczne do kompilacji do kodu i konwersji kodu Javy na kody bajtowe, podczas gdy jre jest konieczne do wykonywania kodów bajtowych.

 5
Author: Mayank Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 12:10:29

JDK zawiera narzędzia programistyczne JRE plus, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.

JRE {[2] } jest w zasadzie maszyną wirtualną Javy, na której uruchamiane są Twoje programy Java. Zawiera również wtyczki przeglądarki do uruchamiania apletów.

JDK jest maszyną abstrakcyjną. Jest to specyfikacja, która zapewnia środowisko uruchomieniowe, w którym można wykonać bajt kodu Javy.

Czyli W Zasadzie JVM

 5
Author: Dev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-19 11:39:54

Różnica między JDK a JRE polega na tym, że JDK jest zestawem programistycznym dla Javy, podczas gdy JRE jest miejscem, w którym uruchamiasz swoje programy.

 4
Author: Samarth Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-08 21:02:54

Załóżmy, że jeśli jesteś programistą, to Twoją rolą jest zarówno rozwijanie programu, jak i jego wykonywanie. więc musisz mieć środowisko do tworzenia i wykonywania, które jest dostarczane przez JDK.

Załóżmy, że jeśli jesteś klientem, to nie musisz się martwić o rozwój.Po prostu potrzebujesz, środowiska do uruchamiania programu i uzyskiwania tylko wyników, które jest dostarczane przez JRE.

JRE wykonuje aplikację, ale JVM odczytuje instrukcje linia po linii, więc jest Tłumacz.

JDK=JRE+narzędzia programistyczne

JRE=JVM+klasy biblioteczne

 4
Author: bishwas pokharel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 07:39:51

JRE

JRE jest akronimem Java Runtime Environment.It służy do zapewnienia runtime environment.It jest implementacją JVM. Fizycznie istnieje. Zawiera zestaw bibliotek + inne pliki, które JVM używa w czasie wykonywania.

Implementacja JVMs jest również aktywnie uwalniana przez inne firmy oprócz Sun Micro Systems.

Tutaj wpisz opis obrazka

JDK

JDK to skrót od Java Development Kit.It fizycznie exists.It zawiera JRE + narzędzia programistyczne.

Tutaj wpisz opis obrazka

 3
Author: aKilleR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-27 08:02:23