- JVM (Java Virtual Machine) to program, który uruchamia skompilowany kod bajtowy Javy.
- Ten sam kod bajtowy działa na Windows, macOS i Linux, więc modyfikacji nie trzeba rekompilować.
- Gracze potrzebują środowiska uruchomieniowego Javy (JRE); modderzy potrzebują pełnego JDK z kompilatorem.
- Minecraft Java Edition i każdy mod Fabric, w tym Opal, działają na JVM.
JVM, czyli Java Virtual Machine, to program, który uruchamia kod Java. Piszesz w Javie, kompilator zamienia go w bytecode, a JVM uruchamia ten bytecode na dowolnym systemie operacyjnym. Dlatego też Minecraft Java Edition i mody do niego działają identycznie na Windows, macOS i Linux bez potrzeby rekompilacji.
Gdzie pasuje Opal
Opal jest modem Fabric, więc działa na tej samej JVM co gra. Jeśli go instalujesz, przewodnik instalacyjny przeprowadzi Cię przez ten proces.
Co właściwie robi JVM
JVM wykonuje bytecode, a nie kod źródłowy. Kiedy kompilujesz program Java, nie otrzymujesz wykonywalnego pliku dla Windows lub Mac. Otrzymujesz pliki klas pełne bytecode, czyli kompaktowego zestawu instrukcji, które JVM rozumie. JVM odczytuje te instrukcje i wykonuje je na Twoim komputerze.
Ten dodatkowy poziom jest sednem sprawy. Ten sam bytecode działa wszędzie tam, gdzie istnieje JVM, dlatego "napisz raz, uruchom gdziekolwiek" to skrócona wersja wyjaśnienia, dlaczego Java tak szeroko się rozprzestrzeniła. JVM to element, który sprawia, że ta obietnica staje się prawdą.
JVM, JRE i JDK
Te trzy terminy są często mylone, dlatego oto podział.
| Termin | Co to jest | Kiedy tego potrzebujesz |
|---|---|---|
| JVM | Silnik, który wykonuje bytecode | Zawsze, aby uruchomić dowolny program Java |
| JRE | JVM plus standardowe biblioteki | Do uruchamiania programów Java |
| JDK | JRE plus kompilator i narzędzia programistyczne | Do tworzenia programów Java |
Gracz potrzebuje tylko środowiska uruchomieniowego do uruchomienia gry. Programista tworzący mod potrzebuje pełnego JDK, aby móc najpierw skompilować Javę do bytecode.
Jak JVM uruchamia Twój kod szybko
JVM zaczyna od interpretowania bytecode instrukcję po instrukcji. Podczas działania obserwuje, które metody są wywoływane najczęściej. Te "gorące ścieżki" są przekazywane do kompilatora JIT, który zamienia je na natywny kod maszynowy w locie. Po rozgrzewce najbardziej obciążony kod działa z prędkością zbliżoną do natywnej.
JVM zarządza również pamięcią za Ciebie. Odzyskujący śmieci garbage collector odzyskuje obiekty, z których zaprzestajesz korzystania, dzięki czemu nie musisz ręcznie zwalniać pamięci, jak w C. To jeden z powodów, dla których pisanie w Javie jest tak łatwe i dlaczego jest to popularny pierwszy język dla twórców modyfikacji.
Dlaczego to ma znaczenie dla Minecrafta
Minecraft Java Edition działa na JVM, podobnie jak każdy klient i mod, który go targetuje. Kod klienta może być napisany w Javie, Kotlinie lub innym języku JVM, ponieważ wszystkie kompilują się do tego samego bytecode’u, który uruchamia JVM. Mod Fabric jest dostarczany jako plik jar zawierający bytecode, ładowacz podłącza go do gry podczas uruchamiania, a JVM uruchamia całość jako jeden proces.
Dlatego też launchery pozwalają na dostosowywanie takich rzeczy jak rozmiar sterty i wersja Javy. Konfigurujesz JVM, która hostuje grę, a nie samą grę.
FAQ
Nie. Java to język; JVM to środowisko uruchomieniowe, które wykonuje skompilowany kod. Inne języki, takie jak Kotlin, również kompilują się do kodu bajtowego i działają na tej samej JVM.
Potrzebujesz środowiska uruchomieniowego Java, które obejmuje JVM. Wiele uruchomiaczy zawiera je dla Ciebie, więc możesz już je mieć, nie instalując niczego oddzielnie.
JVM wykonuje bytecode. JDK to pełny zestaw narzędzi dla programistów, zawierający kompilator i narzędzia, których używasz do tworzenia programów Java.
Początkowo interpretuje bytecode, a następnie kompilator JIT konwertuje najczęściej używany kod na natywny kod maszynowy podczas działania programu. Ten czas rozgrzewki to koszt uruchomienia; przyspieszenie pojawia się później.