# javm > javm is a cross-platform Java version manager for Linux, macOS, and Windows. javm manages downloaded JDKs and can also discover and link existing Java installations. Coding agents and non-interactive tools should prefer `javm exec`, which runs commands with a predictable JDK without modifying the shell environment. Examples: ```bash javm exec ./gradlew test javm exec mvn verify javm exec --jdk 21 ./gradlew test javm exec --jdk temurin@17 mvn verify ``` If the project contains `.java-version`, the selector can be omitted: ```bash javm exec ./gradlew test ``` Common commands include `javm exec [--jdk ] [args...]`, `javm use [selector]`, `javm install `, `javm ls`, `javm ls-remote`, and `javm discover`. ## Documentation * [Getting started](https://javm.dev/docs/): Introduction and basic usage. * [Installation](https://javm.dev/docs/install): Installation instructions for supported platforms. * [CLI reference](https://javm.dev/docs/reference): Complete command and option reference. * [How-to guides](https://javm.dev/docs/how-to): Task-oriented usage guides.