Skip to main content

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

  1. Install javm
  • Linux/macOS: curl -fsSL https://javm.dev/install.sh | bash
  • Windows: irm https://javm.dev/install.ps1 | iex
  1. 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.nu and source ~/.local/share/javm/javm.nu
  1. Install and use a JDK
  • javm ls-remote 25 --distribution all
  • javm install temurin@25
  • javm 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: