Jaka jest różnica między JDK a JRE?
Jakie są ich role i kiedy powinienem użyć jednego lub drugiego?
Jaka jest różnica między JDK a JRE?
Jakie są ich role i kiedy powinienem użyć jednego lub drugiego?
Odpowiedzi:
Środowisko JRE to środowisko wykonawcze Java . Jest to pakiet wszystkiego, co niezbędne do uruchomienia skompilowanego programu Java, w tym Java Virtual Machine (JVM), Java Class Library, java
polecenie i inna infrastruktura. Nie można go jednak używać do tworzenia nowych programów.
JDK jest Java Development Kit , w pełni funkcjonalny SDK for Java. Ma wszystko, co ma JRE, ale także kompilator ( javac
) i narzędzia (takie jak javadoc
i jdb
). Jest w stanie tworzyć i kompilować programy.
Zazwyczaj, jeśli zależy ci tylko na uruchamianiu programów Java na komputerze, instalujesz tylko środowisko JRE. To wszystko czego potrzebujesz. Z drugiej strony, jeśli planujesz programować w Javie, musisz zamiast tego zainstalować JDK.
Czasami, nawet jeśli nie planujesz programowania Java na komputerze, nadal musisz zainstalować JDK. Na przykład, jeśli wdrażasz aplikację internetową za pomocą JSP, technicznie po prostu uruchamiasz programy Java na serwerze aplikacji. Dlaczego więc potrzebujesz JDK? Ponieważ serwer aplikacji przekonwertuje JSP na serwlety Java i musi użyć JDK do skompilowania serwletów. Jestem pewien, że jest więcej przykładów.
Powyższa odpowiedź (autorstwa Pablo) jest bardzo słuszna. To tylko dodatkowe informacje.
JRE jest, jak sama nazwa wskazuje, jest środowisko . Zasadniczo jest to zbiór katalogów z plikami związanymi z Javą, a mianowicie:
bin/
zawiera programy wykonywalne Java. Najważniejsze jest java
(i również w systemie Windows javaw
), które uruchamia JVM. Istnieją również inne narzędzia, takie jak keytool
i policytool
.conf/
przechowuje edytowalne przez użytkownika pliki konfiguracyjne dla ekspertów Java.lib/
ma dużą liczbę plików pomocniczych: niektóre .jar
s, pliki konfiguracyjne, pliki właściwości, czcionki, tłumaczenia, certyfikaty itp. - wszystkie „ozdoby” Java. Najważniejszy jest modules
plik zawierający .class
pliki standardowej biblioteki Java..dll
(Windows) lub .dylib
(macOS) lub .so
(Linux) w ramach bin/
lub lib/
z obsługiwanym, specyficznym dla systemu rodzimym kodem binarnym.JDK jest również zestaw katalogów. Jest to nadzbiór JRE, z kilkoma dodatkami:
bin/
został rozszerzony o narzędzia programistyczne. Najważniejszym z nich jest javac
; inni należą jar
, javadoc
i jshell
.jmods/
, który przechowuje pliki JMOD dla biblioteki standardowej, został dodany. Te pliki umożliwiają używanie standardowej biblioteki jlink
.JDK jest nadzbiorem 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 zapewnia biblioteki, wirtualną maszynę Java (JVM) i inne komponenty do uruchamiania apletów i aplikacji napisanych w języku programowania Java.
Mówiąc ogólnie: JDK jest dziadkiem, JRE jest ojcem, a JVM jest ich synem. [tj. JDK> JRE> JVM]
JDK = JRE + Narzędzia programistyczne / debugujące
JRE = JVM + klasy pakietów Java (takie jak util, matematyka, język, awt, swing itp.) + Biblioteki wykonawcze.
JVM = system ładujący klasy + obszar danych wykonawczych + silnik wykonawczy.
Innymi słowy, jeśli jesteś programistą Java, będziesz potrzebować JDK w swoim systemie, a ten pakiet będzie również zawierał 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 miał JDK w tym.
JVM:
Java Virtual Machine (JVM) jest maszyna wirtualna, która uruchomić Kod bajtowy Javy. JVM nie rozumie kodu źródłowego Java, dlatego kompilujesz swoje pliki * .java w celu uzyskania plików * .class zawierających kody bajtowe zrozumiałe dla JVM. Jest to także jednostka, która pozwala Javie być „przenośnym językiem” (pisz raz, uruchamiaj w dowolnym miejscu). Rzeczywiście istnieją specyficzne implementacje JVM dla różnych systemów (Windows, Linux, MacOS, zobacz listę wikipedii ..), celem jest to, że przy tych samych kodach bajtowych wszystkie dają takie same wyniki.
JDK i JRE
Aby wyjaśnić różnicę między JDK a JRE, najlepiej jest przeczytać dokumentację Oracle i zapoznać się ze schematem:
Java Runtime Environment (JRE)
Środowisko Java Runtime Environment (JRE) zapewnia biblioteki, wirtualną maszynę Java 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: wtyczka Java, która umożliwia uruchamianie apletów w popularnych przeglądarkach; oraz Java Web Start, który wdraża samodzielne aplikacje w sieci. Jest także podstawą technologii Java 2 Platform, Enterprise Edition (J2EE) do opracowywania i wdrażania oprogramowania dla przedsiębiorstw. Środowisko JRE nie zawiera narzędzi i narzędzi, takich jak kompilatory lub debugery do tworzenia apletów i aplikacji.
Java Development Kit (JDK)
JDK jest nadzbiorem środowiska JRE i zawiera wszystko, co znajduje się w środowisku JRE, a także narzędzia, takie jak kompilatory i debuggery niezbędne do tworzenia apletów i aplikacji.
Pamiętaj, że Oracle nie jest jedynym, który udostępnia JDK.
Proces kompilacji JIT (dzięki uprzejmości: dokumentacja Oracle)
Z oficjalnej strony Java ...
JRE (środowisko Java Runtime):
JDK (Java Development Kit)
Jedna różnica z perspektywy debugowania:
Aby debugować do klas systemu Java, takich jak String i ArrayList, potrzebujesz specjalnej wersji środowiska JRE, która jest kompilowana z „informacjami debugowania”. Środowisko JRE zawarte w pakiecie JDK udostępnia te informacje, ale zwykłe środowisko JRE nie. Zwykłe środowisko JRE nie zawiera tych informacji, aby zapewnić lepszą wydajność.
Co to są informacje debugujące? Oto krótkie wyjaśnienie zaczerpnięte z tego postu na blogu :
Nowoczesne kompilatory wykonują całkiem niezłą robotę, konwertując kod wysokiego poziomu, z jego ładnie wciętymi i zagnieżdżonymi strukturami kontrolnymi oraz dowolnie wpisywanymi zmiennymi w duży stos bitów zwany kodem maszynowym (lub kodem bajtowym w przypadku Javy), którego jedynym celem jest działać tak szybko, jak to możliwe na docelowym procesorze (wirtualnym procesorze maszyny JVM). Kod Java jest konwertowany na kilka instrukcji kodu maszynowego. Zmienne są wpychane w dowolne miejsce - do stosu, do rejestrów lub całkowicie zoptymalizowane. Struktury i obiekty nawet nie istnieją w wynikowym kodzie - są jedynie abstrakcją, która jest tłumaczona na sztywne przesunięcia do buforów pamięci.
Skąd więc debugger wie, gdzie się zatrzymać, gdy poprosisz go o przerwanie przy wejściu do jakiejś funkcji? Jak udaje mu się znaleźć to, co chcesz pokazać, gdy pytasz o wartość zmiennej? Odpowiedź brzmi - informacje debugujące.
Informacje debugowania są generowane przez kompilator wraz z kodem maszynowym. Jest to reprezentacja związku między programem wykonywalnym a oryginalnym kodem źródłowym. Informacje te są kodowane we wstępnie zdefiniowanym 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.
JVM, JRE, JDK - wszystko to stanowi trzon języka Java. Każdy element działa osobno. JDK i JRE istnieją fizycznie, ale JVM jest maszyną abstrakcyjną, co oznacza, że fizycznie nie istnieje.
JVM to podsystem JDK i JRE, który służy do sprawdzania kodu pośredniego zwanego „kodem bajtowym”. Najpierw ładuje „plik klasy” (z rozszerzeniem .c) wygenerowany przez kompilator Java (javac) za pośrednictwem modułu ładującego klasy podsystemu JVM i lokalizacji sklasyfikowanej pamięci (rejestr klasy, stosu, stosu i rejestrów komputera) zgodnie z ich użyciem. Następnie sprawdza cały kod bajtowy, aby upewnić się, że został on zwrócony w Javie, a sieć ma dostęp do całej pamięci. Praca tłumacza rozpoczyna się po sprawdzeniu całego programu wiersz po wierszu. Wyniki są wreszcie wyświetlane w konsoli / przeglądarce / aplikacji za pośrednictwem środowiska JRE (Java Runtime Environment), które udostępnia środowisko wykonawcze.
JRE jest również podsystemem JDK, który zapewnia narzędzia wykonawcze, takie jak JVM, klasy, pliki wykonywalne, takie jak plik .jar itp.
JDK oznacza 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 apletowej) itp. Podsumowując, zawiera każdy plik wymagany do opracowania aplikacje, niezależne lub internetowe.
JRE
JRE jest akronimem środowiska Java Runtime Environment, służy do zapewnienia środowiska wykonawczego, jest implementacją JVM, istnieje fizycznie, zawiera zestaw bibliotek i innych plików używanych przez JVM w czasie wykonywania.
JDK
JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +.
Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Zwykle, gdy zależy Ci tylko na uruchamianiu programów Java w przeglądarce lub komputerze, instalujesz tylko środowisko JRE. To wszystko czego potrzebujesz. Z drugiej strony, jeśli planujesz programować w Javie, będziesz także potrzebował JDK.
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) to system wykonawczy, który wykonuje kod bajtowy Java.
JRE to środowisko (biblioteki standardowe i JVM) wymagane do uruchamiania aplikacji Java.
JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.
Oto prosta odpowiedź bezpośrednio z Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Środowisko wykonawcze Java SE (JRE)
Środowisko JRE zapewnia biblioteki, maszynę wirtualną Java i inne składniki niezbędne do uruchamiania apletów i aplikacji napisanych w języku programowania Java. To środowisko wykonawcze można redystrybuować za pomocą aplikacji, aby stały się wolnostojące.
Java SE Development Kit (JDK)
JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.
Jeśli chcesz uruchamiać programy Java, ale ich nie rozwijać, pobierz środowisko wykonawcze Java lub środowisko JRE. Jeśli chcesz je opracować, pobierz zestaw Java Development Kit lub JDK
Nazwijmy się JDK to zestaw, który zawiera te rzeczy, które są potrzebne do tworzenia i uruchamiania aplikacji Java.
JDK jest podane jako środowisko programistyczne do budowania aplikacji, komponentów i apletów.
Zawiera wszystko, czego potrzebujesz do uruchamiania aplikacji Java w skompilowanej formie. Nie potrzebujesz żadnych bibliotek ani innych rzeczy. Wszystkie potrzebne rzeczy są skompilowane.
Środowiska JRE nie można używać do programowania, służy tylko do uruchamiania aplikacji.
JVM (Java Virtual Machine) to maszyna abstrakcyjna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.
JRE jest akronimem środowiska Java Runtime Environment, służy do zapewnienia środowiska wykonawczego, jest implementacją JVM, istnieje fizycznie, zawiera zestaw bibliotek i innych plików używanych przez JVM w czasie wykonywania
JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +
Jeśli jesteś programistą Java , będziesz potrzebować JDK w swoim systemie, a ten pakiet będzie również zawierał JRE i JVM, ale jeśli jesteś zwykłym użytkownikiem, który lubi grać w gry online, będziesz potrzebował tylko JRE, a ten pakiet nie będzie zawierał JDK. .
JVM
JVM (Java Virtual Machine) to maszyna abstrakcyjna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.
Maszyny 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 jest inna. Ale Java jest niezależna od platformy.
JRE
Zawiera wszystko, czego potrzebujesz do uruchamiania aplikacji Java w skompilowanej formie. Nie potrzebujesz żadnych bibliotek ani innych rzeczy. Wszystkie potrzebne rzeczy są skompilowane.
Środowiska JRE nie można używać do programowania, służy tylko do uruchamiania aplikacji.
Java SE Development Kit (JDK)
JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.
(Źródła: GeeksForGeeks Pytania i odpowiedzi , Omówienie platformy Java )
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 wykonawczy, który wykonuje kod bajtowy Java. JVM jest jak wirtualny komputer, który może wykonywać zestaw skompilowanych instrukcji i manipulować lokalizacjami pamięci. Gdy kompilator Java kompiluje kod źródłowy, generuje wysoce zoptymalizowany zestaw instrukcji o nazwie bytecode w pliku .class. JVM interpretuje te instrukcje kodu bajtowego i konwertuje je na kod specyficzny dla maszyny w celu wykonania.
JDK Java Development Kit (JDK) to środowisko programistyczne, którego można używać do programowania i uruchamiania aplikacji Java. Zawiera JRE i zestaw narzędzi programistycznych, takich jak kompilator Java, interpreter, przeglądarka apletów i przeglądarka dokumentów. JDK jest implementowany przez platformy Java SE, Java EE lub Java ME.
JRE Środowisko Java Runtime Environment (JRE) jest częścią JDK, która zawiera JVM, klasy podstawowe i kilka bibliotek wspierających tworzenie aplikacji. Chociaż środowisko JRE jest dostępne jako część JDK, można go również pobrać i używać osobno.
Dla pełnego zrozumienia możesz zobaczyć mój blog: Jdk Jre Jvm i różnice
jdk jest niezbędny do kompilacji do kodu i konwersji kodu java na kody bajtów, podczas gdy jre jest niezbędny do wykonania kodów bajtów.
JDK zawiera narzędzia programistyczne JRE plus wiersza poleceń, takie jak kompilatory i debuggery, które są niezbędne lub przydatne do tworzenia apletów i aplikacji.
JRE to w zasadzie wirtualna maszyna Java, na której działają Twoje programy Java. Zawiera także wtyczki przeglądarki do wykonywania apletów.
JDK to abstrakcyjna maszyna. Jest to specyfikacja zapewniająca środowisko wykonawcze, w którym można wykonać kod bajtowy Java.
Tak więc w zasadzie JVM <JRE <JDK według @Jaimin Patel powiedział.
Różnica między JDK a JRE polega na tym, że JDK jest zestawem programistycznym dla java, podczas gdy JRE to miejsce, w którym uruchamiasz swoje programy.
załóżmy, że jeśli jesteś programistą, twoją rolą jest zarówno programowanie, jak i wykonywanie programu. więc musisz mieć środowisko do programowania i wykonywania, które zapewnia JDK.
załóżmy, że jeśli jesteś klientem, nie musisz się martwić o rozwój. Wystarczy, że potrzebujesz środowiska do uruchamiania programu i uzyskiwania tylko wyników, które zapewnia JRE.
JRE wykonuje aplikację, ale JVM odczytuje instrukcje wiersz po wierszu, więc jest to tłumacz.
JDK = JRE + narzędzia programistyczne
JRE = JVM + klasy bibliotek
JRE
JRE to skrót od Java Runtime Environment. Jest używany do zapewnienia środowiska wykonawczego. Jest to implementacja JVM. Fizycznie istnieje. Zawiera zestaw bibliotek + inne pliki używane przez JVM w czasie wykonywania.
Wdrożenie JVM jest również aktywnie wydawane przez inne firmy poza Sun Micro Systems.
JDK
JDK to akronim od Java Development Kit, który istnieje fizycznie i zawiera narzędzia programistyczne JRE +.