Jaka jest różnica między JVM , JDK , JRE i OpenJDK ?
Programowałem w Javie i napotkałem te frazy, jakie są między nimi różnice?
java
jvm
difference
Alireza
źródło
źródło
Odpowiedzi:
JVM
Java Virtual Machine (JVM) to maszyna wirtualna, która uruchamia Kod bajtowy Javy. JVM nie rozumie kodu źródłowego Java; dlatego musisz skompilować swoje
*.java
pliki, aby uzyskać*.class
pliki zawierające kody bajtowe rozumiane przez JVM. Jest to także jednostka, która pozwala Javie być „przenośnym językiem” ( pisz raz, uruchamiaj gdziekolwiek ). 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:
Zauważ, że Oracle nie jest jedynym, który dostarcza JDK.
OpenJDK
OpenJDK jest implementacją JDK typu open source i bazą dla Oracle JDK. Prawie nie ma różnicy między Oracle JDK a OpenJDK.
Różnice podano na tym blogu :
Aktualizacja dla JDK 11 - artykuł Donalda Smitha próbuje jednoznacznie odróżnić różnicę między Oracle JDK a Oracle OpenJDK: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- i później
źródło
JVM to wirtualna maszyna Java - w rzeczywistości działa Java ByteCode.
JRE to Java Runtime Environment - zawiera między innymi JVM i jest tym, czego potrzebujesz, aby uruchomić program Java.
JDK to Java Development Kit - to JRE, ale z javac (który jest potrzebny do kompilacji kodu źródłowego Java) i innymi narzędziami programistycznymi.
OpenJDK jest specyficzną implementacją JDK.
źródło
other things
o JVM. Czym oni są ? Czy ten artykuł w pełni odpowiada na to pytanie - javabeat.net/what-is-the-difference-between-jrejvm-and-jdkJDK (Java Development Kit)
Java Developer Kit zawiera narzędzia potrzebne do programowania programów Java oraz JRE do uruchamiania programów. Narzędzia obejmują kompilator (javac.exe), program uruchamiający aplikacje Java (java.exe), Appletviewer itp.
Kompilator konwertuje kod Java na kod bajtowy. Program uruchamiający aplikacje Java otwiera środowisko JRE, ładuje klasę i wywołuje swoją główną metodę.
Potrzebujesz JDK, jeśli w ogóle chcesz pisać własne programy i je kompilować. Do uruchamiania programów Java wystarczy JRE.
JRE jest przeznaczony do wykonywania plików Java
tj. JRE = JVM + klasy pakietów Java (jak util, matematyka, język, awt, swing itp.) + biblioteki wykonawcze.
JDK jest głównie ukierunkowany na rozwój Java. Tj. Możesz utworzyć plik Java (za pomocą pakietów Java), skompilować plik Java i uruchomić plik Java.
JRE (Java Runtime Environment)
Java Runtime Environment zawiera JVM, biblioteki klas i inne pliki pomocnicze. Nie zawiera żadnych narzędzi programistycznych, takich jak kompilator, debugger itp. W rzeczywistości JVM uruchamia program i korzysta z bibliotek klas oraz innych plików pomocniczych udostępnianych w środowisku JRE. Jeśli chcesz uruchomić dowolny program Java, musisz mieć środowisko JRE zainstalowane w systemie
Java Virtual Machine zapewnia niezależny od platformy sposób wykonywania kodu; Oznacza to, że skompiluj raz na dowolnej maszynie i uruchom ją w dowolnym miejscu (dowolnej maszynie).
JVM (wirtualna maszyna Java)
Jak wszyscy wiemy, kiedy kompilujemy plik Java, wyjście nie jest „exe”, ale jest to plik „.class”. Plik „.class” składa się z kodów bajtów Java, które są zrozumiałe dla JVM. Java Virtual Machine interpretuje kod bajtowy w kod maszynowy w zależności od systemu operacyjnego i kombinacji sprzętu. Odpowiada za wszystkie rzeczy, takie jak wyrzucanie elementów bezużytecznych, sprawdzanie granic tablic itp. JVM zależy od platformy.
JVM nazywa się „wirtualnym”, ponieważ zapewnia interfejs maszyny, który nie zależy od systemu operacyjnego i architektury sprzętowej komputera. Ta niezależność od sprzętu i systemu operacyjnego jest kamieniem węgielnym wartości programów Java napisanych raz w dowolnym momencie.
Istnieją różne implementacje JVM. Mogą się one różnić między sobą wydajnością, niezawodnością, szybkością itp. Te implementacje będą się różnić w tych obszarach, w których specyfikacja Java nie wspomina o implementacji funkcji, np. Jak działa proces czyszczenia pamięci zależy od JVM, specyfikacja Java nie zdefiniuj konkretny sposób, aby to zrobić.
źródło
Maszyna wirtualna Java (JVM) to maszyna wirtualna Java, które można wykonać kod bajtowy. Jest to komponent do wykonywania kodu platformy oprogramowania Java.
Java Development Kit (JDK) jest produktem Oracle Corporation głównie dla programistów Java. Od czasu wprowadzenia oprogramowania Java jest to najczęściej używany zestaw oprogramowania Java Software Development Kit (SDK).
Java Runtime Environment , jest również określane jako Java Runtime, Runtime Environment
OpenJDK (Open Java Development Kit) to darmowa i otwarta implementacja języka programowania Java. Jest to wynik wysiłków firmy Sun Microsystems rozpoczętych w 2006 roku. Implementacja jest licencjonowana na licencji GNU General Public Licence (GPL) z wyjątkiem linkowania.
źródło
JVM to wirtualny kod Java wykonywany na maszynie
JRE to środowisko (biblioteki standardowe i JVM) wymagane do uruchamiania aplikacji Java
JDK to środowisko JRE z narzędziami programistycznymi i dokumentacją
OpenJDK jest wersją JDK typu open source, w przeciwieństwie do zwykłego JDK będącego własnością Oracle
źródło
JDK (Java Development Kit):
JRE (Java Runtime Environment)
Java Runtime Environment zawiera JVM, biblioteki klas i inne pliki pomocnicze. JRE jest przeznaczony do wykonywania plików Java.
JVM (wirtualna maszyna Java)
JVM interpretuje kod bajtowy na kod maszynowy w zależności od systemu operacyjnego i kombinacji sprzętu. Jest odpowiedzialny za wszystkie rzeczy, takie jak wyrzucanie elementów bezużytecznych, sprawdzanie granic tablic itp. Java Virtual Machine zapewnia niezależny od platformy sposób wykonywania kodu.
źródło
JDK - Kompiluje java do ByteCode. Składa się z debuggerów, kompilatorów itp.
JVM - Wykonuje kod bajtu. JVM jest tym, który uniezależnia platformę Java. Ale JVM różni się w zależności od platformy.
JRE - JVM wraz z bibliotekami wykonawczymi Java do wykonywania programów Java.
źródło
Kolejny aspekt, o którym warto wspomnieć:
JDK (zestaw deweloperski Java)
Będziesz go potrzebować do celów programistycznych, jak sugeruje nazwa.
Na przykład: firma produkująca oprogramowanie będzie musiała zainstalować JDK na swoim komputerze, ponieważ będzie musiała opracować nowe oprogramowanie, które obejmuje również kompilację i uruchamianie programów Java.
Możemy więc powiedzieć, że JDK = JRE + JVM.
JRE (środowisko wykonawcze Java)
Jest potrzebny do uruchamiania programów Java. Nie można z nim kompilować programów Java.
Na przykład: zwykły użytkownik komputera, który chce uruchomić niektóre gry online, będzie potrzebował JRE w swoim systemie do uruchamiania programów Java.
JVM (maszyna wirtualna Java)
Jak zapewne wiesz, uruchom kody bajtowe. To uniezależnia platformę Java, ponieważ wykonuje
.class
plik, który otrzymujesz po skompilowaniu programu Java, niezależnie od tego, czy kompilujesz go w systemie Windows, Mac, czy Linux.Otwórz JDK
Cóż, jak powiedziałem powyżej. Teraz JDK jest produkowany przez inną firmę, jedną z nich, która jest open source i bezpłatna do publicznego użytku, jest OpenJDK, podczas gdy inne to JRockit JDK lub IBM JDK firmy Oracle Corporation.
Jednak wszystkie mogą wyglądać tak samo dla ogólnego użytkownika.
Wniosek
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. .
Innymi słowy JDK jest dziadkiem, JRE jest ojcem, a JVM jest ich synem.
źródło
Java jest językiem i zawiera ścisłą i silnie napisaną składnię, z którą powinieneś być już bardzo dobrze zaznajomiony.
Java 2 Platform, Standard Edition, znana również jako J2SE, odnosiła się do platformy i obejmowała między innymi klasy w pakietach java.lang i java.io. Był to element składowy, na którym zbudowano aplikacje Java.
Wirtualna maszyna Java (JVM) to wirtualna maszyna programowa, która uruchamia skompilowany kod Java. Ponieważ skompilowany kod Java jest jedynie kodem bajtowym, JVM jest odpowiedzialny za skompilowanie tego kodu bajtowego do kodu maszynowego przed jego uruchomieniem. (Jest to często nazywane kompilatorem Just In Time lub kompilatorem JIT.) JVM zajmuje się także zarządzaniem pamięcią, aby kod aplikacji nie musiał.
Java Development Kit, lub JDK, był i pozostaje oprogramowaniem używanym przez programistów Java do tworzenia aplikacji Java. Zawiera kompilator języka Java, generator dokumentacji, narzędzia do pracy z natywnym kodem oraz (zazwyczaj) kod źródłowy Java dla platformy, aby umożliwić debugowanie klas platform.
Środowisko wykonawcze Java (JRE) było i pozostaje oprogramowaniem, które użytkownicy końcowi pobierają w celu uruchamiania skompilowanych aplikacji Java. Zawiera JVM, ale nie zawiera żadnych narzędzi programistycznych zawartych w JDK. JDK zawiera jednak środowisko JRE.
źródło
JVM: specyfikacja opisująca sposób / zasoby do uruchomienia programu Java. W rzeczywistości wykonuje bajtowy kod i uniezależnia platformę Java. Robi to inaczej dla różnych platform. JVM dla Windows nie może działać jako JVM dla UNIX.
JRE: Wdrożenie JVM. (JVM + biblioteki czasu wykonywania)
JDK: JRE + kompilator Java i inne niezbędne narzędzia do tworzenia programu Java od zera
źródło
JVM : w rzeczywistości oznacza to interpreter kodu bajtowego. Zależy od platformy. Na przykład: na platformie Windows precesja „ java.exe ” lub „ javaw.exe ” jest procesem jvm.
JDK : to zestaw narzędzi zawierający niezbędne biblioteki i narzędzia do opracowywania i uruchamiania programu / aplikacji Java
JRE : to środowisko wykonywania aplikacji Java.ie, obsługuje tylko zależności środowiska wykonawczego, w tym JVM dla skompilowanego programu. Jeśli chcemy skompilować program Java, potrzebujemy jdk.
źródło
JVM: wirtualna maszyna Java. mówi maszynie, co zrobić z kodem Java. Nie można pobrać JVM w obecnej postaci. Jest dostarczany w innym składniku.
JRE: Niektóre inne komponenty, o których mowa powyżej, to JRE. JVM + inne słoiki służą do tworzenia środowiska wykonawczego
JDK: zawiera JRE (który z kolei zawiera JVM). Po otrzymaniu JDK nie musisz instalować JRE i JVM osobno. Zawiera kompilator, który kompiluje twoje pliki .java do plików .class
źródło
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.
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
źródło
W podsumowaniu:
Jeśli chcesz rozwijać się w Javie, potrzebujesz JDK, ale jeśli chcesz po prostu uruchomić Javę, potrzebujesz JRE.
źródło
Maszyna wirtualna Java JVM faktycznie wykonuje kod bajtowy Java. Jest to blok wykonawczy na platformie JAVA. Konwertuje kod bajtowy na kod maszynowy.
Środowisko wykonawcze Java JRE zapewnia minimalne wymagania do wykonania aplikacji Java; składa się z wirtualnej maszyny Java (JVM), klas podstawowych i plików pomocniczych.
JDK Java Development Kit, zawiera wszystkie narzędzia do tworzenia aplikacji. Jest tak, jak JRE + JVM
Open JDK to darmowa i otwarta implementacja platformy Java.
źródło
Mówiąc najprościej: - JDK = JRE + Narzędzia programistyczne / debugujące , w których JDK jest naszym kompletnym pakietem do pracy z Javą, od tworzenia kompilacji do uruchomienia. Z drugiej strony JRE to po prostu uruchamianie kodu (Byte Code).
Uwaga: - Niezależnie od tego, czy instalujemy JDK czy JRE, JVM będzie dostarczany w pakiecie z obydwoma pakietami, a JVM jest częścią, w której kompilator JIT konwertuje kod bajtowy na kod specyficzny dla maszyny.
Wystarczy przeczytać artykuł o JDK, JRE, JVM i JIT
źródło
JDK : Kompletny pakiet, który musisz napisać i uruchomić kod Java
OpenJDK : Niezależna implementacja JDK dla ulepszenia go
JVM : Konwertuje kod Java na kod bajtowy i podaje specyfikacje, które określają, w jaki sposób kod Java powinien zostać skompilowany, załadowany, zweryfikowany, sprawdzony pod kątem błędów i wykonany.
JRE : Implementacja JVM, za pomocą której niektóre biblioteki Java są używane do uruchamiania programu
źródło
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
źródło
JVM jest w skrócie Java Virtual Machine , JVM jest głównym składnikiem architektury Java. JVM jest napisany w języku programowania C. Kompilator Java tworzy kod bajtowy dla JVM. JVM odczytuje kod bajtu weryfikując kod bajtu i łącząc kod z biblioteką.
JRE jest w skrócie Java Runtime Environment . zapewnia środowisko w czasie wykonywania. To istnieje fizycznie. Zawiera JVM + zestaw bibliotek (jar) + inne pliki.
JDK jest w skrócie Java Development Kit . to jest tworzenie aplikacji Java. A także debugowanie i monitorowanie aplikacji Java. JDK zawiera narzędzia programistyczne JRE + (javac, java)
OpenJDK OpenJDK to otwarta wersja Sun JDK. Oracle JDK to oficjalny JDK firmy Sun.
źródło