Freedom251 › Runtime Version Managers
SDKMAN!

What SDKMAN! is
SDKMAN! is a free command-line interface and API for managing Software Development Kits in the JVM ecosystem. Users can install, uninstall, list, switch, upgrade and inspect SDK versions, or set a default. Supported options include Java, Scala, Kotlin, Groovy, Ant, Gradle, Maven, SBT, Spark, Spring Boot and Vert.x. Projects can record SDK versions in an .sdkmanrc file, with automatic switching available when entering a directory. Java distributions are pulled through the Foojay DISCO API. SDKMAN! runs on macOS and Linux, and on Windows through WSL or MSYS with MinGW; native Windows execution is not supported, and 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 open source under the Apache 2.0 license. The project says it is intended for the JVM ecosystem rather than Go, Rust, Node.js, Python or Ruby toolchains. Security updates go only to the latest released CLI version.
Who it suits
SDKMAN! suits developers who manage JVM SDKs and tools from the command line, including those who want project-specific versions. Windows users need WSL or MSYS with MinGW rather than native Windows execution.
What it does well
- Manages versions for a broad range of JVM tools
- Project versions can be recorded in .sdkmanrc
- Automatic switching is available when entering a directory
- Free and open source under Apache 2.0
- CI mode disables prompts and self-updates
What to know first
- 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
Limits
SDKMAN! is intended for the JVM ecosystem and does not target Go, Rust, Node.js, Python or Ruby toolchains. On Windows, it cannot run natively and requires WSL or MSYS with MinGW.
Getting started
- Open https://sdkman.io/
- Use macOS, Linux or Windows through WSL or MSYS with MinGW
- Ensure curl, zip and unzip are available
- Use Bash or ZSH
- Install and manage SDK versions through the command-line interface
Verdict
SDKMAN! is focused on JVM SDK and tool version management, with project pinning and automatic switching options. It is not intended for Go, Rust, Node.js, Python or Ruby toolchains.
Questions
Is SDKMAN! free?
Yes. It has a free plan and is open source under the Apache 2.0 license.
Which systems does SDKMAN! support?
It supports macOS and Linux. Windows use requires WSL or MSYS with MinGW; native Windows and Cygwin are not supported.
What can SDKMAN! manage?
It manages JVM SDKs and tools including Java, Scala, Kotlin, Groovy, Ant, Gradle, Grails, Maven, SBT, Spark, Spring Boot and Vert.x.
Can projects pin SDK versions?
Yes. An .sdkmanrc file can define project SDK versions, with automatic switching when entering the directory.
Does it work in CI?
Yes. Its installer has a CI mode that answers prompts, disables colored output and turns off self-updates.
Facts from SDKMAN!'s own pages
- CI mode
- CI mode answers prompts, disables colored output and turns off self-updates. · sdkman.io, 1 Oct 2026
- Community support
- The project identifies its Discord #vendors channel as the fastest way for vendors to get help. · sdkman.io, 30 Sept 2026
- Dependencies
- The tool is written in Rust and Bash and requires curl, zip and unzip. · sdkman.io, 1 Oct 2026
- Ecosystem limit
- SDKMAN! is intended for the JVM ecosystem and is not the right home for Go, Rust, Node.js, Python or Ruby toolchains. · sdkman.io, 30 Sept 2026
- Installation platforms
- SDKMAN! supports macOS, Linux and Windows through WSL or Git Bash with MinGW. · sdkman.io, 30 Sept 2026
- Interface
- It provides a command-line interface and an API. · sdkman.io, 1 Oct 2026
- Java distributions
- Java distributions are pulled automatically from the Foojay DISCO API. · sdkman.io, 1 Oct 2026
- JDK integration
- Java distributions are pulled automatically from the Foojay DISCO API. · sdkman.io, 30 Sept 2026
- JVM ecosystem
- It supports JVM SDKs and tools including Java, Scala, Kotlin, Groovy, Ant, Gradle, Maven, SBT, Spark, Spring Boot and Vert.x. · sdkman.io, 30 Sept 2026
- Open source
- SDKMAN! is licensed under Apache 2.0. · sdkman.io, 1 Oct 2026
- Operating systems
- SDKMAN! operates on macOS, Linux and Windows through Windows Subsystem for Linux. · sdkman.io, 1 Oct 2026
- Project environments
- An .sdkmanrc file can define SDK versions for a project and can install missing versions. · sdkman.io, 1 Oct 2026
- Purpose
- SDKMAN! manages multiple Software Development Kits on Unix systems. · sdkman.io, 1 Oct 2026
- Scope limitation
- SDKMAN! is built for the JVM ecosystem and says Go, Rust, Node.js, Python and Ruby toolchains are not the right fit. · sdkman.io, 1 Oct 2026
- Security support
- Only the latest SDKMAN! CLI release receives security updates, and vulnerabilities can be reported privately through GitHub or [email protected]. · github.com, 1 Oct 2026
- Shells
- The installer supports Bash and ZSH shells. · sdkman.io, 1 Oct 2026
- 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. · sdkman.io, 1 Oct 2026
- Vendor publishing
- Vendors can authenticate through the SDKMAN! State API and publish releases from CI/CD pipelines. · sdkman.io, 1 Oct 2026
- Version management
- Users can install, uninstall, list, switch and set default SDK versions. · sdkman.io, 1 Oct 2026
- Version switching
- Users can install, uninstall, list, use, default, upgrade and inspect SDK versions from the CLI. · sdkman.io, 30 Sept 2026
- Vulnerability reporting
- Security issues can be reported through GitHub Private Vulnerability Reporting or by emailing [email protected]. · github.com, 30 Sept 2026
- Windows limitation
- Windows cannot run SDKMAN! natively and requires WSL or MSYS+MinGW; Cygwin is no longer supported. · sdkman.io, 1 Oct 2026
Where SDKMAN! stands on Freedom251
- Runtime Version Managers#23 of 30
- Development Environment Managers#44 of 50
