sdk
Manage parallel SDK versions for JVM languages
TLDR
List all available candidates (Java, Scala, Kotlin, etc.)
SYNOPSIS
sdk command [candidate] [version]
DESCRIPTION
SDKMAN (Software Development Kit Manager) is a tool for managing parallel versions of multiple SDKs on Unix-based systems. It simplifies installing, switching, and removing development kits for the JVM ecosystem.
Supported candidates include Java (multiple distributions like Temurin, Zulu, GraalVM), Scala, Kotlin, Groovy, Maven, Gradle, Ant, sbt, Spring Boot, Spark, and many more. SDKMAN automatically manages JAVA_HOME and PATH environment variables.
Project-specific versions can be configured using .sdkmanrc files. With sdkman_auto_env=true in the config, SDKMAN automatically switches versions when entering a project directory.
CONFIGURATION
~/.sdkman/etc/config
SDKMAN configuration file controlling auto-answer, auto-env, color, and other settings..sdkmanrc
Per-project file specifying required SDK versions. SDKMAN automatically switches versions when entering the directory if sdkman_auto_env=true is set.SDKMAN_DIR
Environment variable overriding the default SDKMAN installation directory (~/.sdkman).
COMMANDS
install candidate [version]
Install a candidate version; latest stable if version omitteduninstall candidate version
Remove an installed versionlist [candidate]
List available candidates or versions of a specific candidateuse candidate version
Switch version for current terminal session onlydefault candidate version
Set version as default for all future shellscurrent [candidate]
Show active version of a candidate or all candidatesupgrade [candidate]
Upgrade outdated versionsversion
Display SDKMAN version informationhome candidate version
Return absolute installation path for a versionenv [init|install|clear]
Manage project-specific .sdkmanrc configurationoffline [enable|disable]
Toggle offline modeselfupdate [force]
Update SDKMAN itselfupdate
Refresh candidate metadata cacheflush [tmp|broadcast|archives|version]
Clear local cache and stateconfig
Open SDKMAN configuration file
CAVEATS
SDKMAN requires curl, zip, and unzip to be installed. It modifies shell configuration files during installation. The use command only affects the current shell; use default for persistent changes across sessions.
HISTORY
SDKMAN was originally created as GVM (Groovy enVironment Manager) by Marco Vermeulen around 2012. It was later renamed to SDKMAN to reflect its broader support for multiple SDK candidates beyond Groovy. The tool draws inspiration from version managers like RVM (Ruby), nvm (Node.js), and pyenv (Python).
