Skip to content
SPECIFICTION
Get listed

SDKMAN!

sdkman.io

WindowsmacOSLinuxAPI
Visit sdkman.io
Spec score 7.2 #22 of 30 in Runtime Version Managers

What it is

SDKMAN! is a command-line interface and API for managing Software Development Kits in the JVM ecosystem. It supports languages and tools including Java, Scala, Kotlin, Groovy, Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot, and Vert.x. From the CLI, users can install, uninstall, list, inspect, switch, upgrade, and set default SDK versions. A project can record its versions in an .sdkmanrc file, with automatic switching available when entering its directory. Java distributions are obtained through the Foojay DISCO API. SDKMAN! works on macOS and Linux; Windows use requires WSL or MSYS with MinGW, since it does not run natively there. Cygwin is no longer supported. The installer requires curl, zip, and unzip, and works with Bash and ZSH. Its CI mode answers prompts, disables colored output, and turns off self-updates. SDKMAN! is free, open source, and Apache 2.0 licensed. Security updates are provided only for the latest released CLI version. The project says Go, Rust, Node.js, Python, and Ruby toolchains are outside its intended scope.

Spec sheet

Purpose
SDKMAN! manages multiple Software Development Kits on Unix systems.Read 1 Oct 2026 · sdkman.io
CI mode
CI mode answers prompts, disables colored output and turns off self-updates.Read 1 Oct 2026 · sdkman.io
Community support
The project identifies its Discord #vendors channel as the fastest way for vendors to get help.Read 30 Sep 2026 · sdkman.io
Dependencies
The tool is written in Rust and Bash and requires curl, zip and unzip.Read 1 Oct 2026 · sdkman.io
Ecosystem limit
SDKMAN! is intended for the JVM ecosystem and is not the right home for Go, Rust, Node.js, Python or Ruby toolchains.Read 30 Sep 2026 · sdkman.io
Installation platforms
SDKMAN! supports macOS, Linux and Windows through WSL or Git Bash with MinGW.Read 30 Sep 2026 · sdkman.io
Interface
It provides a command-line interface and an API.Read 1 Oct 2026 · sdkman.io
Java distributions
Java distributions are pulled automatically from the Foojay DISCO API.Read 1 Oct 2026 · sdkman.io
JDK integration
Java distributions are pulled automatically from the Foojay DISCO API.Read 30 Sep 2026 · sdkman.io
JVM ecosystem
It supports JVM SDKs and tools including Java, Scala, Kotlin, Groovy, Ant, Gradle, Maven, SBT, Spark, Spring Boot and Vert.x.Read 30 Sep 2026 · sdkman.io
Open source
SDKMAN! is licensed under Apache 2.0.Read 1 Oct 2026 · sdkman.io
Operating systems
SDKMAN! operates on macOS, Linux and Windows through Windows Subsystem for Linux.Read 1 Oct 2026 · sdkman.io
Project environments
An .sdkmanrc file can define SDK versions for a project and can install missing versions.Read 1 Oct 2026 · sdkman.io
Scope limitation
SDKMAN! is built for the JVM ecosystem and says Go, Rust, Node.js, Python and Ruby toolchains are not the right fit.Read 1 Oct 2026 · sdkman.io
Security support
Only the latest SDKMAN! CLI release receives security updates, and vulnerabilities can be reported privately through GitHub or [email protected].Read 1 Oct 2026 · github.com
Shells
The installer supports Bash and ZSH shells.Read 1 Oct 2026 · sdkman.io
Supported SDKs
Supported JVM SDKs include Java, Scala, Kotlin and Groovy, plus tools such as Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot and Vert.x.Read 1 Oct 2026 · sdkman.io
Vendor publishing
Vendors can authenticate through the SDKMAN! State API and publish releases from CI/CD pipelines.Read 1 Oct 2026 · sdkman.io
Version management
Users can install, uninstall, list, switch and set default SDK versions.Read 1 Oct 2026 · sdkman.io
Version switching
Users can install, uninstall, list, use, default, upgrade and inspect SDK versions from the CLI.Read 30 Sep 2026 · sdkman.io
Vulnerability reporting
Security issues can be reported through GitHub Private Vulnerability Reporting or by emailing [email protected].Read 30 Sep 2026 · github.com
Windows limitation
Windows cannot run SDKMAN! natively and requires WSL or MSYS+MinGW; Cygwin is no longer supported.Read 1 Oct 2026 · sdkman.io

Strong points and limits

Strong points

  • Manages a broad set of JVM SDKs and tools
  • Project versions can be recorded in .sdkmanrc
  • Automatic switching can occur on directory entry
  • CI mode disables prompts and colored output
  • Free and Apache 2.0 licensed

Limits

  • Windows requires WSL or MSYS with MinGW
  • Cygwin is no longer supported
  • Installer requires curl, zip, and unzip
  • Security updates cover only the latest CLI release

Who it suits

SDKMAN! suits developers managing JVM SDKs and tools from Bash or ZSH, including projects that need recorded versions and automatic switching. It is not intended for Go, Rust, Node.js, Python, or Ruby toolchains.

Verdict

SDKMAN! covers JVM SDK version management, including per-project version records and automatic switching. Windows requires a compatibility environment, and the tool is limited to the JVM ecosystem.

Where Specifiction places it

Alternatives to SDKMAN!All alternatives →