JVM a JRE
Java to wieloplatformowy język programowania. Jest również zgodny z zasadą „napisz raz, biegnij w dowolnym miejscu”. Program napisany w Javie może być skompilowany do kodu bajtowego Javy przez kompilator Javy. Następnie kod bajtowy można wykonać na dowolnej platformie, na której działa środowisko JRE (Java Runtime Environment). JRE zawiera JVM (Java Virtual Machine), biblioteki podstawowe (które implementują Java API) i inne pliki pomocnicze. JVM to abstrakcyjna maszyna obliczeniowa, która działa jako mediator między JRE specyficznym dla platformy a kodem Java.
Co to jest JVM?
JVM to typ maszyny wirtualnej używanej przez maszyny do wykonywania kodu bajtowego Java. Według Sun Microsystems (która rozwijała Javę, dopóki nie została kupiona przez Oracle, bardzo niedawno), na świecie jest ponad 4 miliardy urządzeń obsługujących JVM. Dokładniej, Java Virtual Machine to abstrakcyjna maszyna obliczeniowa zaimplementowana na standardowym sprzęcie i systemie operacyjnym. Jedną z ważnych funkcji udostępnianych przez JVM jest zautomatyzowana obsługa wyjątków. Zazwyczaj do JVM dołączona jest kolekcja standardowych bibliotek. W rzeczywistości JRE jest pakietem zawierającym JVM i klasy implementujące Java API. JVM jest bardzo ważnym komponentem, który uwzględnia naturę „skompiluj raz, uruchom w dowolnym miejscu” języka programowania Java. Dopóki JVM działa, Twój kod Java może działać na niej, niezależnie od platformy używanej w maszynie. Dlatego Java jest nazywana językiem wieloplatformowym lub wieloplatformowym.
Co to jest JRE?
JRE to środowisko wykonawcze, w którym uruchamiany jest kod Java. Zazwyczaj JRE składa się z JVM, standardowych klas bazowych (które implementują podstawowy interfejs Java API) i innych plików pomocniczych. Typ i struktura środowiska JRE różnią się w zależności od systemu operacyjnego i architektury procesora. Po uruchomieniu kodu Java środowisko JRE komunikuje się z systemem operacyjnym, który z kolei komunikuje się z odpowiednimi komponentami sprzętowymi. Posiadanie JRE zainstalowanego w twoim systemie jest koniecznością, aby uruchomić dowolny kod java na twoim komputerze. Jednak JRE nie zawiera kompilatora, debugera ani żadnych innych narzędzi potrzebnych do tworzenia programów Java (takich jak appletviewer i javac). Jeśli chcesz tworzyć programy w Javie, potrzebujesz JDK (Java Development Kit), który zawiera również JRE.
Jaka jest różnica między maszyną JVM a JRE?
Chociaż w codziennym użyciu terminy JVM i JRE są używane zamiennie, różnią się między sobą. JVM to maszyna wirtualna działająca na szczycie systemu operacyjnego, podczas gdy JRE jest środowiskiem wykonawczym. JVM jest częścią środowiska JRE. Specyfikacja JVM działa jako łącznik między implementacją JRE specyficzną dla platformy a standardowymi bibliotekami Java. Dlatego JVM jest jednostką, która zapewnia programiście abstrakcję od wewnętrznych szczegółów implementacji. I odpowiada za interpretację skompilowanego kodu bajtowego. Jednak JVM potrzebuje bibliotek podstawowych i innych plików pomocniczych do wykonania kodu bajtowego java. Czasami jednak środowisko JRE jest po prostu identyfikowane jako implementacja JVM.