Inhoud

Java

Tulpencraft gebruikt Java 25 als standaard Java-runtime voor de Minecraft-infrastructuur.

De huidige Minecraft-serveromgeving draait op Minecraft 26.2 met onder andere Paper en Velocity. Voor Minecraft 26.1 en nieuwer is Java 25 vereist; Paper vermeldt Java 25 eveneens als aanbevolen runtime voor deze versies.


☕ Java-versie

De huidige standaard is:

OnderdeelVersie
Java25
Java-typeOpenJDK / JDK
Minecraft26.2
Paper26.2
Velocity4.x / Java 25
Operating SystemRocky Linux 10

Java 25 is daarmee onderdeel van de Tulpencraft-softwarebaseline.

Bij een wijziging van de Minecraft-versie wordt altijd gecontroleerd of de vereiste Java-versie verandert.


Waarom Java 25?

Minecraft is vanaf versie 26.1 overgestapt naar een Java 25-runtime. Paper volgt deze vereiste en geeft voor Minecraft 26.1 en nieuwer Java 25 als aanbevolen versie.

Voor Tulpencraft betekent dit dat Java 25 bewust als vaste runtime wordt gebruikt in plaats van verschillende Java-versies per server te onderhouden.

Dit vereenvoudigt:


JDK in plaats van alleen JRE

Voor Tulpencraft wordt een volledige JDK gebruikt.

Paper adviseert bij installatie expliciet om geen headless Java-variant te gebruiken, omdat deze benodigde afhankelijkheden kan missen.

De voorkeur is daarom:

Java 25 JDK

en niet:

Java 25 headless

Installatie op Rocky Linux 10

Rocky Linux is gebaseerd op het RPM/DNF-ecosysteem.

Paper documenteert voor RPM-gebaseerde distributies onder andere de installatie van Amazon Corretto 25 via DNF.

Voor Tulpencraft kan Java 25 bijvoorbeeld via een geschikte OpenJDK-distributie worden geïnstalleerd.

Na installatie moet altijd worden gecontroleerd welke Java-versie daadwerkelijk actief is.

java -version

Een correcte installatie moet Java 25 tonen.

Bijvoorbeeld:

openjdk version "25"
OpenJDK Runtime Environment
OpenJDK 64-Bit Server VM

Java controleren

De actieve Java-versie:

java -version

Java-binary:

which java

Het gebruikte alternatief:

alternatives --display java

Op Rocky Linux kan daarnaast worden bekeken welke Java-installaties beschikbaar zijn:

sudo alternatives --config java

Hiermee kan worden gecontroleerd welke Java-runtime als standaard is ingesteld.


Java en Minecraft

De Java-runtime is direct gekoppeld aan de Minecraft-serverversie.

Voor de huidige Tulpencraft-stack:

Minecraft 26.2
        │
        ▼
    Paper 26.2
        │
        ▼
     Java 25

Minecraft 26.2 vereist Java 25 of nieuwer.

Daarom wordt Java 25 als onderdeel van de serverbaseline gedocumenteerd en niet als een willekeurige systeemdependency beschouwd.


Java en Velocity

Ook de Velocity-proxy maakt gebruik van Java.

De proxy draait daarom op dezelfde Java-major-version als de rest van de moderne Tulpencraft-stack wanneer de gebruikte Velocity-versie dat ondersteunt.

Dit voorkomt dat op één server meerdere Java-runtimes noodzakelijk zijn.

De actuele Java-versie van de proxy kan worden gecontroleerd met:

java -version

Java-gebruik per server

De Java-runtime wordt gedeeld door de processen die op dezelfde Linux-server draaien.

Bijvoorbeeld:

mc-proxy001
│
├── Velocity
│
├── Lobby / Paper
│
└── overige Java-processen

Iedere Minecraft-server krijgt zijn eigen Java-proces en geheugenlimieten.

De Java-runtime zelf wordt centraal als systeemcomponent beheerd.


Geheugenbeheer

Java-geheugen wordt per Minecraft-proces ingesteld.

Voorbeeld:

java -Xms2G -Xmx4G -jar paper.jar --nogui

Hierbij betekent:

ParameterBetekenis
-Xms2GInitiële Java heap
-Xmx4GMaximale Java heap
-jarStart een JAR-bestand
--noguiGeen grafische serverinterface

De exacte waarden zijn afhankelijk van de functie en belasting van de server.

Een lobby krijgt bijvoorbeeld doorgaans aanzienlijk minder geheugen dan een grote Survival-server.


Garbage Collection

Java 25 beschikt over moderne garbage collectors die geschikt zijn voor server workloads.

De garbage collector wordt niet zonder reden aangepast.

Het uitgangspunt is:

Eerst meten, daarna tunen.

Minecraft-performance wordt beoordeeld op onder andere:

Java-flags worden alleen aangepast wanneer daar een aantoonbare reden voor is.


Geen willekeurige Java-flags

Tulpencraft gebruikt geen grote verzameling willekeurig gekopieerde JVM-flags.

Configuraties zoals:

-Xms
-Xmx

worden afgestemd op de beschikbare resources.

Aanvullende JVM-opties worden alleen toegepast wanneer:

  1. de gebruikte Minecraft-versie deze ondersteunt;
  2. de Java-versie deze ondersteunt;
  3. er een aantoonbaar doel voor bestaat;
  4. de configuratie getest is.

Dit voorkomt dat verouderde optimalisaties uit oudere Minecraft-versies worden overgenomen.


Java-updates

Java wordt net als andere systeemsoftware onderhouden.

Een Java-update wordt niet automatisch als onschuldig beschouwd.

Voor een update wordt gecontroleerd:

Daarna wordt de server gecontroleerd en opnieuw gestart.


Java controleren na updates

Na een Java-update:

java -version

Daarna kan gecontroleerd worden of Minecraft correct start:

sudo systemctl status minecraft-lobby

of voor een andere server:

sudo systemctl status <minecraft-service>

Logs:

sudo journalctl -u <minecraft-service> -n 100 --no-pager

Java in systemd

Minecraft-servers worden als systemd-services uitgevoerd.

Een voorbeeld:

[Service]
User=minecraft
WorkingDirectory=/srv/minecraft/lobby
ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar paper.jar --nogui
Restart=on-failure

Hierdoor wordt het Minecraft-proces beheerd door systemd in plaats van door een handmatig gestart shellproces.

Voordelen hiervan zijn onder andere:

De daadwerkelijke Tulpencraft systemd-configuratie kan per server verschillen.


Java en gebruikersrechten

Minecraft wordt niet als root uitgevoerd.

De Java-processen draaien onder de betreffende servicegebruiker.

Bijvoorbeeld:

ps aux | grep java

Daarbij moet zichtbaar zijn dat het Minecraft-proces onder de juiste gebruiker draait.

Dit past binnen de algemene Tulpencraft-hardeningbaseline.


Controlelijst

Bij een nieuwe Minecraft-server wordt minimaal gecontroleerd:


Versiebeleid

De Java-versie wordt gekoppeld aan de Minecraft-serverversie.

MinecraftJava
1.20–1.21.11Java 21
26.1+Java 25
Tulpencraft 26.2Java 25

Deze tabel is een beheerreferentie en wordt aangepast wanneer Minecraft of de gebruikte serversoftware nieuwe Java-eisen introduceert. Paper publiceert hiervoor de actuele versie-eisen in de officiële documentatie.


🔗 Gerelateerde documentatie


Tulpencraft Java baseline

Voor de huidige Minecraft 26.2-infrastructuur is Java 25 de standaard runtime. Afwijkingen hiervan moeten technisch worden gemotiveerd en gedocumenteerd.