JDKs and Maven are managed with SDKMAN in the user's home directory. Fedora's own headless OpenJDK stays installed and separate for system use.
| Tool | Version | Notes |
|---|---|---|
| SDKMAN | 5.23.0 | ~/.sdkman |
| Java (default) | 25.0.4-tem |
Eclipse Temurin 25 (LTS) |
| Java (alternate) | 21.0.12+1.1-tem |
Eclipse Temurin 21 (LTS) |
| Maven | 3.9.16 | via SDKMAN |
| System JDK | Fedora java-*-openjdk-headless |
untouched, for OS packages |
curl -s "https://get.sdkman.io" | bash
# integrations.zsh already sources sdkman-init.sh
sdk install java 25.0.4-tem
sdk install java 21.0.12+1.1-tem
sdk default java 25.0.4-tem
sdk install maven 3.9.16~/.config/zsh/integrations.zsh ends with:
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"Java 25 is the default. Select 21 for LTS-bound projects:
sdk use java 21.0.12+1.1-tem # current shell only
sdk env install # write .sdkmanrc from current versions
sdk env # apply .sdkmanrc in this directoryCommit a .sdkmanrc in projects that need a specific JDK. JAVA_HOME is managed
by SDKMAN's shims; do not hard-code it in the shell profile.
sdk current
java -version # Temurin 25.0.4
mvn -version # Maven 3.9.16, runtime = SDKMAN Temurin
which java # ~/.sdkman/candidates/java/current/bin/java