Cross-platform Java Version Manager

One command to install, switch, and ship with the right JDK.

jvman manages Temurin, Corretto, and Zulu builds across Linux, macOS, and Windows. Set a global default, pin versions per project, or run a single command with any JDK.

  • 3 vendors
  • 3 platforms
  • 0 shell hacks
~/projects/my-app
$ jvman install 21
Installing temurin-21 (aarch64)…
✓ temurin-21 installed
$ jvman use 17
✓ .jvman → temurin-17
$ java -version
openjdk version "17.0.13" 2024-10-15
$ jvman exec 21 mvn test
Running with temurin-21…

Why jvman

Built for teams that juggle more than one Java version.

Multi-vendor

Install from Temurin, Amazon Corretto, or Azul Zulu. Pick the build your stack expects.

Per-project switching

A .jvman file in your repo pins the JDK. Walk into any directory and the right version activates.

Shim-based tools

java, javac, mvn-adjacent tools resolve through shims — no manual JAVA_HOME exports.

Interactive TUI

Browse installed versions, set globals, and remove old builds from a keyboard-driven terminal UI.

One-off execution

jvman exec runs any command with a specific JDK without touching your global or local settings.

Cross-platform

Same workflow on Linux, macOS, and Windows. Single binary, no runtime dependencies.

Install

Three steps. Two directories.

The jvman CLI and the Java shims live in different places. Install the CLI first, initialize, then add the shim directory to your PATH.

Install the jvman CLI

Pick a method, then verify with jvman version.

Go install

go install github.com/maskedsyntax/jvman/cmd/jvman@latest
export PATH="$HOME/go/bin:$PATH"
jvman version

Release binary

# From GitHub Releases
tar -xzf jvman_*.tar.gz
sudo mv jvman /usr/local/bin/
jvman version

From source

git clone https://github.com/maskedsyntax/jvman.git
cd jvman && go build -o jvman ./cmd/jvman
./jvman version

Initialize

Creates config and Java shims in $HOME/.jvman/bin.

jvman init

Add Java shims to PATH

For java, javac, etc. — not the jvman CLI.

export PATH="$HOME/go/bin:$PATH"       # jvman CLI (Go install only)
export PATH="$HOME/.jvman/bin:$PATH"   # java, javac, jar, …

Commands

The essentials.

Command What it does
jvman install 21 Install Temurin JDK 21
jvman install 17 -v corretto Install Amazon Corretto 17
jvman global 21 Set the system-wide default JDK
jvman use 17 Write a project-local .jvman file
jvman list Show installed and available versions
jvman tui Open the interactive version manager

Ready to stop fighting JAVA_HOME?

jvman is open source and free to use. Star the repo, file issues, or send a PR.