SDKMAN! is a similar tool for the Java ecosystem. Supports various Java versions, Scala, Clojure, Kotlin, Groovy, and build tools like Maven and Gradle.

Works on Mac and Linux, with some mentions of support for Windows depending on how hard you are willing to try :)

Answer from jocull on Stack Overflow
🌐
SDKMAN!
sdkman.io
Home | SDKMAN! the Software Development Kit Manager
Think of it as your helpful toolkit friend, ready to streamline SDK management for you. 🛠️ · Get started now! Go on then, paste and run the following in a terminal: ... Simplifying life. No more hunting for downloads, extracting archives, or tinkering with HOME and PATH environment variables. Install Software Development Kits for the JVM such as Java, Scala, Kotlin and Groovy.
Discussions

Java Version Manager inspired by nvm

The reason we never had this for Java is because the JRE always backward compatible and you can tell the compiler to build with compatibility for any previous version.

More on reddit.com
🌐 r/java
25
39
March 27, 2016
Getting started with SDKMAN! – Manage Java, Maven, Gradle versions with ease
I love sdkman!!! sdk install java 23.0.2-amzn sdk install maven sdk install gradle so easy!!! More on reddit.com
🌐 r/java
39
85
April 20, 2025
🌐
Hacker News
news.ycombinator.com › item
Installing Java in 2025, and Version Managers | Hacker News
November 30, 2025 - On macOS I wrote my own 9-line Zsh function that lists the JDKs available and sets JAVA_HOME · In containers you'll never switch at all, just install whatever you want and be done with it
🌐
Medium
medium.com › @brunoborges › manage-multiple-jdks-on-mac-os-linux-and-windows-wsl2-3a73467b685c
Manage Multiple JDKs on Mac OS, Linux and Windows WSL2 | by Bruno Borges | Medium
May 4, 2020 - $ sdk current java Using java version 15.ea.19-open$ sdk default java 15.ea.20-open Default java version set to 15.ea.20-open · You can stop here and just use SDKMAN! but you will eventually forget to switch back based on the project you are working on, just like by using some manual shell script. And because of this, I prefer to auto-switch. ... While SDKMAN! can install and manage JDKs, the tool doesn't do a great job at auto-switching between versions for you automatically as you move from project A to project B.
🌐
Reddit
reddit.com › r/java › java version manager inspired by nvm
r/java on Reddit: Java Version Manager inspired by nvm
March 27, 2016 - It's a way to get predictable execution (so that you would not have to search though http://bugs.java.com/ looking for explanation of SIGSEGV on prod just to find out that you have a different "patch"-level version installed locally where everything works). It also aims to make Java more approachable for people not directly involved with it (just like rvm makes it incredibly simple to manage ruby for <your favorite blog engine> even if you don't know the first thing about it).
🌐
GitHub
github.com › jenv › jenv
GitHub - jenv/jenv: Manage your Java environment · GitHub
This is an updated fork of jenv, a beloved Java environment manager adapted from rbenv. jenv gives you a few critical affordances for using java on development machines: It lets you switch between java versions.
Starred by 6.6K users
Forked by 398 users
Languages   Shell 99.0% | Dockerfile 1.0%
Find elsewhere
🌐
GitHub
github.com › ystyle › jvms
GitHub - ystyle/jvms: JDK Version Manager (JVMS) for Windows · GitHub
NAME: jvms - JDK Version Manager (JVMS) for Windows USAGE: jvms.exe [global options] command [command options] [arguments...] VERSION: 2.0.0 COMMANDS: init Initialize config file list, ls List the JDK installations. install, i Install remote ...
Starred by 1K users
Forked by 106 users
Languages   Go
🌐
Azul
azul.com › home › blog › easily manage different java versions on your machine with sdkman!
Easily Manage Different Java Versions on Your Machine with SDKMan!
August 30, 2023 - The JDK includes everything the JRE has, plus additional tools and utilities for developers like the Java compiler, or javac. Tired of all this complexity? Let me introduce you to SDKMan!, a version manager that streamlines the process, making it a breeze to manage multiple Java versions on your machine.
🌐
Medium
medium.com › javarevisited › java-version-management-the-right-way-to-manage-java-versions-3c3554dc2512
Java Version Management: The right way to manage Java versions | by Nipuna Upeksha | Javarevisited | Medium
February 2, 2024 - You just have to type sdk uninstall java 8.0.402-amzn and then voila that Java version is gone. Similar to Java, you can also install Maven, Gradle, and multiple other SDKs with SDKMAN. You don’t have to install SDKs one by one. You just need one tool to manage all of your SDKs, and it’s SDKMAN!!!
🌐
Twilio
twilio.com › en-us › blog › developers › tutorials › building-blocks › sdkman-work-with-multiple-versions-java
Using SDKMAN! to work with multiple versions of Java | Twilio
June 13, 2025 - Enter SDKMAN! It’s a tool for managing the installation and selection of Software Development Kits - not just different versions and builds of Java itself, but tools for building, debugging, monitoring, documenting and deploying too.
🌐
Matthew J. Clemente
blog.mattclemente.com › 2019 › 05 › 31 › managing-multiple-java-jdk-versions
How to Install and Manage Multiple Versions of Java (hint: jabba and jEnv) | Matthew J. Clemente
May 31, 2019 - jabba is a cross-platform Java Version Manager. I found that it really excels at streamlining the process of installing different versions of Java.
🌐
Batsov
batsov.com › articles › 2021 › 12 › 10 › working-with-multiple-versions-of-java-on-ubuntu
Working with Multiple Versions of Java on Ubuntu | (think)
December 10, 2021 - Today I encountered a bug that was specific to JDK 16 on a project I was working on, and I needed to switch back my Java version to something older. I realized I had forgotten (once again) how to switch between multiple Java versions on Ubuntu (Debian), so I’ve decided to write a short article ...
🌐
LabEx
labex.io › tutorials › java-how-to-manage-java-sdk-versions-421342
How to manage Java SDK versions | LabEx
Version management tools help developers efficiently switch between different Java SDK versions and manage multiple installations on a single system.
🌐
ManageEngine
manageengine.com › products › desktop-central › help › browser-security › secure-and-manage-java.html
Manage Java | ManageEngine Endpoint Central
Java Manager provides administrators with the ability to enable or disable specific Java versions within Internet Explorer.
🌐
Dice.com
dice.com › job-detail › 0e9ab5bf-cfa8-40c7-b243-aad9ff81dc56
Senior Java Developer / Agile Product Manager - TransAmerica Technology Services - Oklahoma City, OK, US | Dice.com
April 27, 2026 - The candidate will design, develop, and maintain enterprise Java applications using Spring and Hibernate. Serve as Agile Product Manager, defining product vision, roadmap, and priorities. Translate stakeholders needs into user stories, acceptance criteria, and backlog items. Integrate, extend, and support IFS ERP and COTS Warehouse Management Systems. Use Git for version control and Jira/Confluence for Agile planning and documentation.
🌐
Faun
faun.pub › simplify-java-version-management-on-macos-a-guide-to-sdkman-and-jabba-8f8d563b6c56
Simplify Java Version Management on macOS: A Guide to SDKMAN! and Jabba
October 20, 2024 - If you require a versatile tool for managing multiple SDKs and development environments, SDKMAN! may be the better choice due to its broader support and active community. However, if you primarily need to manage Java versions and prefer a lightweight and focused solution, Jabba offers a simple and efficient option.
🌐
Gradle
gradle.org
Gradle Build Tool
Gradle has been an integral part of our JVM tooling for the last 10 years. We leverage Gradle for more than 4,500 JVM based projects and we have benefited from all the outstanding work in dependency management, parallelization and work avoidance in order to deliver a delightful developer experience for Netflix engineers.
🌐
Baeldung
baeldung.com › home › installation › switch between multiple java versions
Switch Between Multiple Java Versions | Baeldung on Linux
March 18, 2024 - The above command shows the script and native versions. Particularly, the sdk command manages all SDKMAN functions that we’ll use. Once installed, SDKMAN can list all the available SDK candidates: ... $ sdk list java ======================================================================== Available Java Versions for Linux 64bit ======================================================================== Vendor | Use | Version | Dist | Status | Identifier ------------------------------------------------------------------------ Corretto | | 21 | amzn | | 21-amzn | | 20.0.2 | amzn | | 20.0.2-amzn ...
🌐
Reddit
reddit.com › r/java › getting started with sdkman! – manage java, maven, gradle versions with ease
r/java on Reddit: Getting started with SDKMAN! – Manage Java, Maven, Gradle versions with ease
April 20, 2025 -

I put together a beginner-friendly guide on SDKMAN!, a super handy tool for managing parallel versions of Java SDKs, Maven, Gradle, and many other development tools right from your terminal.

If you've ever struggled with switching between Java versions for different projects, SDKMAN! can really simplify your workflow.

In the post, I cover:

  • What SDKMAN! is and why it’s useful.

  • How to install it.

  • How to install and switch between SDKs.

  • Tips for setting a default version.

Hope it helps someone!