Introduction
Welcome to javm
javm is a fast, cross‑platform Java version manager focused on a frictionless install and switch workflow for JDKs on Linux, macOS, and Windows.
- Install and switch between multiple JDK distributions using semantic version ranges
- Per‑project JDK via
.java-version - Remote discovery (DiscoAPI integration)
- Local discovery of JDKs installed by the system, IntelliJ, Gradle, jabba, and more
- Clean removal and safe environment changes scoped to your shell
Why should I use javm?
-
Native support for Windows, Linux, and macOS
No Bash emulation layers. Works out of the box. -
Fast and script-friendly
Install and use JDKs in CI or local shells without global state or side effects. -
Reproducible environments
Pin exact JDK versions. Build predictable and portable setups. -
Zero runtime dependencies
The core is a single static binary. No JVM or other SDK required to run it.
Quick Start
- Install javm
- Linux/macOS:
curl -fsSL https://javm.dev/install.sh | bash - Windows:
irm https://javm.dev/install.ps1 | iex
- Initialize your shell
- Bash/Zsh:
eval "$(javm init bash)" - Fish:
javm init fish | source - PowerShell:
iex "$(javm init pwsh)" - Nushell:
javm init nu | save -f ~/.local/share/javm/javm.nuandsource ~/.local/share/javm/javm.nu
- Install and use a JDK
javm ls-remote 25 --distribution alljavm install temurin@25javm use temurin@25
Current Status
javm is in active development and is not yet considered stable for production use.
Expect the CLI and config behavior to evolve as features mature.
Explore more in the pages below: