Convert Figma logo to code with AI

sdkman logosdkman-cli

The SDKMAN! Command Line Interface

6,097
629
6,097
175

Top Related Projects

79,544

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

39,014

Simple Python version management

16,078

Manage your app's Ruby environment

21,846

Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

5,819

Manage your Java environment

Quick Overview

SDKMAN! (Software Development Kit Manager) is a command-line tool for managing multiple versions of various Software Development Kits on Unix-based systems. It provides a convenient way to install, switch between, and remove different versions of SDKs such as Java, Groovy, and Scala.

Pros

  • Easy installation and management of multiple SDK versions
  • Cross-platform support for Unix-based systems (Linux, macOS, Cygwin)
  • Large number of supported SDKs and tools
  • Active community and regular updates

Cons

  • Limited support for Windows (only through Cygwin or WSL)
  • Requires shell restart or rehashing after installation
  • Some advanced features may require manual configuration
  • Occasional network-related issues during downloads

Getting Started

To install SDKMAN!, run the following command in your terminal:

curl -s "https://get.sdkman.io" | bash

After installation, open a new terminal or run:

source "$HOME/.sdkman/bin/sdkman-init.sh"

To install the latest stable version of Java:

sdk install java

To list available versions of a specific SDK:

sdk list java

To switch to a different version:

sdk use java 11.0.12-open

For more information and advanced usage, visit the official SDKMAN! documentation at https://sdkman.io/usage.

Competitor Comparisons

79,544

Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

Pros of nvm

  • Focused specifically on Node.js version management
  • Simpler installation process (single shell script)
  • Supports Windows through WSL or third-party alternatives

Cons of nvm

  • Limited to Node.js ecosystem
  • Requires manual PATH configuration in some cases
  • Less extensive plugin system compared to SDKMAN!

Code Comparison

nvm:

nvm install 14.17.0
nvm use 14.17.0
nvm alias default 14.17.0

SDKMAN!:

sdk install java 11.0.11-open
sdk use java 11.0.11-open
sdk default java 11.0.11-open

Both tools offer similar command structures for installing, using, and setting default versions. However, nvm focuses on Node.js versions, while SDKMAN! supports multiple SDKs and programming languages.

SDKMAN! provides a more comprehensive solution for managing various development kits, including Java, Kotlin, Groovy, and more. It offers a plugin system and supports parallel version installations.

nvm, on the other hand, excels in its simplicity and focus on Node.js. It's widely adopted in the JavaScript community and integrates well with Node.js projects.

The choice between these tools depends on your specific needs. If you primarily work with Node.js, nvm might be more suitable. For a broader range of SDKs and languages, SDKMAN! offers greater flexibility and extensibility.

39,014

Simple Python version management

Pros of pyenv

  • Supports multiple Python versions and virtual environments
  • Lightweight and focused solely on Python version management
  • Allows per-project Python version configuration

Cons of pyenv

  • Limited to Python ecosystem management
  • Requires manual compilation of Python versions on some systems
  • Less extensive plugin ecosystem compared to SDKMAN!

Code Comparison

pyenv:

pyenv install 3.9.0
pyenv global 3.9.0
pyenv virtualenv 3.9.0 myproject
pyenv local myproject

SDKMAN!:

sdk install java 11.0.9-amzn
sdk use java 11.0.9-amzn
sdk install gradle 6.7
sdk use gradle 6.7

Both tools provide version management capabilities, but pyenv focuses exclusively on Python, while SDKMAN! supports multiple SDKs and programming languages. pyenv offers more granular control over Python versions and environments, whereas SDKMAN! provides a broader range of tools and languages with a simpler installation process. The choice between the two depends on whether you need specialized Python management or a more versatile tool for multiple languages and SDKs.

16,078

Manage your app's Ruby environment

Pros of rbenv

  • Lightweight and focused solely on Ruby version management
  • Seamless integration with shell environments
  • Non-intrusive design that doesn't modify Ruby binaries

Cons of rbenv

  • Limited to Ruby ecosystem management
  • Requires manual installation of Ruby versions
  • Less extensive plugin ecosystem compared to SDKMAN!

Code Comparison

rbenv:

rbenv install 3.0.0
rbenv global 3.0.0
rbenv rehash

SDKMAN!:

sdk install ruby 3.0.0
sdk use ruby 3.0.0

Key Differences

  1. Scope: rbenv focuses exclusively on Ruby, while SDKMAN! supports multiple SDKs and programming languages.
  2. Installation: rbenv requires manual Ruby version installation, whereas SDKMAN! automates the process.
  3. Usage: rbenv uses a more verbose syntax, while SDKMAN! offers a simpler command structure.
  4. Ecosystem: SDKMAN! provides a broader range of tools and languages, making it more versatile for polyglot developers.
  5. Integration: rbenv integrates more deeply with the shell environment, offering smoother switching between Ruby versions.

Both tools effectively manage language versions, but rbenv is tailored for Ruby developers, while SDKMAN! caters to a wider audience with its multi-language support.

21,846

Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more

Pros of asdf

  • Supports a wider range of programming languages and tools
  • Allows managing multiple versions of the same tool simultaneously
  • More extensible with a plugin system for adding new tools

Cons of asdf

  • Requires manual installation of plugins for each tool
  • Less focused on Java ecosystem compared to SDKMAN!
  • Steeper learning curve for users new to version managers

Code Comparison

SDKMAN! installation:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

asdf installation:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf
echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc
asdf plugin add java
asdf install java openjdk-11.0.2

Both SDKMAN! and asdf are version management tools for developers, but they have different focuses and approaches. SDKMAN! is primarily designed for managing Java-related SDKs and tools, while asdf is a more general-purpose version manager that can handle a broader range of programming languages and tools.

SDKMAN! offers a simpler installation process and is more user-friendly for those primarily working with Java-based technologies. On the other hand, asdf provides greater flexibility and extensibility, making it suitable for developers working with multiple languages and tools in their projects.

The choice between SDKMAN! and asdf depends on the specific needs of the developer and the range of technologies they work with regularly.

5,819

Manage your Java environment

Pros of jenv

  • Focused specifically on Java version management
  • Lightweight and easy to install
  • Supports shell integration for automatic Java version switching

Cons of jenv

  • Limited to Java version management only
  • Requires manual installation of Java versions
  • Less active development and community support

Code Comparison

jenv:

jenv add /path/to/java/home
jenv global 11.0
jenv local 8.0

SDKMAN:

sdk install java 11.0.12-open
sdk use java 11.0.12-open
sdk default java 11.0.12-open

Summary

jenv is a lightweight tool focused solely on Java version management, offering easy installation and shell integration. However, it requires manual Java installation and has a narrower scope compared to SDKMAN.

SDKMAN, on the other hand, is a more comprehensive tool for managing multiple SDKs, including Java. It offers automatic downloads and installations, supports a wide range of tools, and has a more active community. However, it may be considered more complex for users who only need Java version management.

The choice between jenv and SDKMAN depends on whether you need a Java-specific tool or a more versatile SDK manager. Both tools effectively manage Java versions, but SDKMAN provides broader functionality for managing multiple development tools.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

SDKMAN! CLI

The Software Development Kit Manager Command Line Interface

Backers on Open Collective Sponsors on Open Collective Slack

SDKMAN is a tool for managing parallel Versions of multiple Software Development Kits on any Unix-based system. It provides a convenient command-line interface for installing, switching, removing, and listing Candidates.

See documentation on the SDKMAN! website.

NOTICE

We are rewriting all the commands for SDKMAN! in Rust under a new project that supplements this one. Only bug fixes to supporting code will be accepted in this project. As a result, no further enhancements will be accepted on the commands in this project, and the commands here will be phased out in due course. This project will eventually form a lightweight wrapper/launcher for the replacement Rust commands.

Installation

Open your favourite terminal and enter the following:

$ curl -s https://get.sdkman.io | bash

If the environment needs tweaking for SDKMAN to be installed, the installer will prompt you accordingly and ask you to restart.

Running the Cucumber Features

All SDKMAN's BDD tests describing the CLI behaviour are written in Cucumber and can be found under src/test/resources/features. These can be run with Gradle by running the following command:

$ ./gradlew test

To perform development, you will need to have a JDK 11 installed which can be obtained by running the following after installing SDKMAN:

$ sdk env install

Contributors

This project exists thanks to all the people who contribute.

Backers

Thank you to all our backers! [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]