Sdkman Page

SDKMan!



Return to sdk current, sdk list, SDK Man, SdkMan!, SDKman install, Cloud Monk's Development PC DevOps Automation via Ansible-Chocolatey-PowerShell-Homebrew-DNF-APT

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

----
Creating a detailed summary for SDKMAN! with the requested depth and structure in a single response is extensive. Instead, I will provide an informative overview that includes key aspects of SDKMAN!, its features, usage examples, and references to additional resources.

Overview of SDKMAN!



SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix-based systems. It provides a convenient command-line interface for installing, switching, and managing versions of various software development kits, including Java, Groovy, Scala, Kotlin, and more.

Introduction to SDKMAN!



SDKMAN! simplifies the management of software development tools and SDKs. It automates the process of downloading, installing, and switching between versions of development tools, addressing the challenge of managing multiple and potentially conflicting development environments.

= Main Features of SDKMAN!

=

- **Version Management:** Easily switch between different versions of development tools.
- **Wide Range of SDKs:** Supports Java, Groovy, Scala, Kotlin, and more.
- **Automatic Installation:** Streamlines the installation process for various SDKs.
- **Self-update Capability:** SDKMAN! can update itself to the latest version.
- **Vendor Selection:** Offers the ability to choose between different vendors for some SDKs.

= Code Examples

=

1. **Installing SDKMAN!:**
```bash
curl -s "https://get.sdkman.io" | bash
```

2. **Installing a Specific SDK Version:**
```bash
sdk install java 11.0.2-open
```

3. **Switching Between Versions:**
```bash
sdk use java 8.0.252-open
```

4. **Listing All Available Versions:**
```bash
sdk list java
```

5. **Removing a Version:**
```bash
sdk uninstall java 9.0.4-open
```

6. **Checking Current Version in Use:**
```bash
sdk current java
```

7. **Updating the SDKMAN! Database:**
```bash
sdk update
```

8. **Self-updating SDKMAN!:**
```bash
sdk selfupdate
```

= Popular SDKs Managed by SDKMAN!

=

SDKMAN! manages a wide range of development tools and SDKs. Some of the most popular include:

1. **Java:** Various distributions, including AdoptOpenJDK, Oracle JDK, and OpenJDK.
2. **Groovy:** A powerful, optionally typed and dynamic language.
3. **Scala:** A high-level language combining object-oriented and functional programming.
4. **Kotlin:** A statically typed programming language that runs on the Java virtual machine.
5. **Gradle:** An open-source build automation tool.

= Competition and Alternatives

=

- **Homebrew (macOS):** A package manager for macOS that can also manage versions of some development tools.
- **nvm (Node Version Manager):** For managing Node.js versions, similar in concept for Node.js.
- **pyenv:** A Python version management tool, similar in purpose for Python environments.
- **rbenv:** Manages Ruby versions in a manner similar to SDKMAN! for Ruby environments.

Additional Resources



- **GitHub Repository:** The source code and development of SDKMAN! can be tracked on GitHub at [https://github.com/sdkman/sdkman-cli](https://github.com/sdkman/sdkman-cli).
- **Official Documentation:** For comprehensive guides and the CLI reference, visit [https://sdkman.io/usage](https://sdkman.io/usage).
- **Official Website:** Discover more about SDKMAN! and its features at [https://sdkman.io/](https://sdkman.io/).
- **Wikipedia Page:** Currently, SDKMAN! does not have a specific Wikipedia page, but it is often mentioned in discussions related to Java version management.

This overview provides an introduction to SDKMAN!, highlighting its purpose, features, and how it streamlines the management of software development kits. For a deeper dive into SDKMAN!, exploring the official documentation and engaging with the community are excellent ways to learn more.

----


$ sdk list



Available Candidates


q-quit /-search down
j-down ?-search up
k-up h-help





----


Apache ActiveMQ (Classic) (5.16.2)

https://activemq.apache.org

Apache ActiveMQ® is a popular open source, multi-protocol, Java-based message broker. It supports industry standard protocols so users get the benefits of client choices across a broad range of languages and platforms. Connect from clients written in JavaScript, C, C++, Python, .Net, and more. Integrate your multi-platform applications using the ubiquitous AMQP protocol. Exchange messages between your web applications using STOMP over websockets. Manage your IoT devices using MQTT. Support your existing JMS infrastructure and beyond. ActiveMQ offers the power and flexibility to support any messaging use-case.


$ sdk install activemq




----


Ant (1.10.12)

https://ant.apache.org

Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or CPP | C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.

$ sdk install ant




----


AsciidoctorJ (2.5.3) http://asciidoctor.org/

AsciidoctorJ is the official library for running Asciidoctor on the JVM. Using
AsciidoctorJ, you can convert AsciiDoc content or analyze the structure of a
parsed AsciiDoc document from Java and other JVM languages.


$ sdk install asciidoctorj


----


Ballerina (swan-lake-p3)

https://ballerina.io/

Open source programming language and platform for cloud-era application
programmers to easily write software that just works.


$ sdk install ballerina


----


Bpipe (0.9.11) http://bpipe.org

Bpipe is a framework for running computational pipelines and workflows


$ sdk install bpipe


----


BTrace (2.2.0)

https://github.com/btraceio/btrace

BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used
to dynamically trace a running Java program (similar to DTrace for OpenSolaris
applications and OS). BTrace dynamically instruments the classes of the target
application to inject bytecode tracing code.


$ sdk install btrace


----


Concurnas (1.14.020)

https://concurnas.com/

Concurnas is an open source JVM programming language designed for building
reliable, scalable, high performance concurrent, distributed and parallel
systems.


$ sdk install concurnas


----


ConnOR (1.2.1)

https://github.com/helpermethod/connor

ConnOR, short for ConnectOffsetReset, is a commandline tool for resetting Kafka
Connect source connector offsets.


$ sdk install connor


----


CUBA CLI (2.2.0)

https://cuba-platform.com

CUBA CLI is an open source command line utility that enables you to easily
create projects based on CUBA Platform


$ sdk install cuba


----


CXF (3.2.5)

https://cxf.apache.org/

Apache CXF is an open source services framework. CXF helps you build and develop
services using frontend programming APIs, like JAX-WS and JAX-RS. These services
can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA
and work over a variety of transports such as HTTP, JMS or JBI.


$ sdk install cxf


----


docToolchain (2.0.5)

https://doctoolchain.github.io/docToolchain/

docToolchain is an implementation of the docs-as-code approach for software
architecture plus some additional automation. The basis of docToolchain is the
philosophy that software documentation should be treated in the same way as code
together with the arc42 template for software architecture.


$ sdk install doctoolchain


----


Flink (1.14.0)

https://flink.apache.org/

Apache Flink is an open-source, unified stream-processing and batch-processing
framework.It's a distributed processing engine for stateful computations over
unbounded and bounded data streams.It has been designed to run in all common
cluster environments, perform computations at in-memory speed and at any scale.


$ sdk install flink


----


Gaiden (1.2) http://kobo.github.io/gaiden/

Gaiden is a tool that makes it easy to create documentation with Markdown.


$ sdk install gaiden


----


Gradle (7.4.2) http://gradle.org/

Gradle is a build automation tool that builds upon the concepts of Apache Ant
and Apache Maven and introduces a Groovy-based domain-specific language (DSL)
instead of the more traditional XML form of declaring the project configuration.
Gradle uses a directed acyclic graph (DAG) to determine the order in which tasks
can be run.


$ sdk install gradle


----


Gradle profiler (0.18.0)

https://github.com/gradle/gradle-profiler

A tool for gathering profiling and benchmarking information for Gradle builds


$ sdk install gradleprofiler


----


Grails (5.1.7)

https://grails.org/

Grails is a powerful web framework, for the Java platform aimed at multiplying
developers productivity thanks to a Convention-over-Configuration, sensible
defaults and opinionated APIs. It integrates smoothly with the JVM, allowing you
to be immediately productive whilst providing powerful features, including
integrated ORM, Domain-Specific Languages, runtime and compile-time
meta-programming and Asynchronous programming.


$ sdk install grails


----


Groovy (4.0.2) http://www.groovy-lang.org/

Groovy is a powerful, optionally typed and dynamic language, with static-typing
and static compilation capabilities, for the Java platform aimed at multiplying
developers' productivity thanks to a concise, familiar and easy to learn syntax.
It integrates smoothly with any Java program, and immediately delivers to your
application powerful features, including scripting capabilities, Domain-Specific
Language authoring, runtime and compile-time meta-programming and functional
programming.


$ sdk install groovy


----


GroovyServ (1.2.0)

https://kobo.github.io/groovyserv/

GroovyServ reduces startup time of the JVM for runnning Groovy significantly. It
depends on your environments, but in most cases, it’s 10 to 20 times faster than
regular Groovy.


$ sdk install groovyserv


----


hadoop (3.3.0)

https://hadoop.apache.org/

Apache™ Hadoop® project develops open-source software for reliable, scalable,
distributed computing.It's a framework that allows for the distributed
processing of large data sets across clusters of computersusing simple
programming models.It is designed to scale up from single servers to thousands
of machines, each offering local computation and storage.


$ sdk install hadoop


----


http4k (4.0.0.0) http://http4k.org/

http4k is the Functional toolkit for building HTTP applications in Kotlin


$ sdk install http4k


----


Infrastructor (0.3.1) http://infrastructor.io/

Infrastructor is an open source server provisioning tool written in Groovy


$ sdk install infrastructor


----


Java (17.0.3-tem)

https://projects.eclipse.org/projects/adoptium.temurin/

Java Platform, Standard Edition (or Java SE) is a widely used platform for
development and deployment of portable code for desktop and server environments.
Java SE uses the object-oriented Java programming language. It is part of the
Java software-platform family. Java SE defines a wide range of general-purpose
APIs – such as Java APIs for the Java Class Library – and also includes the Java
Language Specification and the Java Virtual Machine Specification.


$ sdk install java


----


JBake (2.6.7) http://jbake.org/

JBake is a Java based, open source, static site/blog generator for developers
and designers.


$ sdk install jbake


----


JBang (0.94.0) http://github.com/maxandersen/jbang/

JBang makes it easy to use Java for scripting. It lets you use a single file for
code and dependency management and allows you to run it directly.


$ sdk install jbang


----


JDK Mission Control (8.1.1.51-zulu)

https://www.oracle.com/java/technologies/jdk-mission-control.html

Java Flight Recorder and JDK Mission Control together create a complete tool
chain to continuously collect low level and detailed runtime information
enabling after-the-fact incident analysis. JDK Mission Control is an advanced
set of tools that enables efficient and detailed analysis of the extensive of
data collected by Java Flight Recorder. The tool chain enables developers and
administrators to collect and analyze data from Java applications running
locally or deployed in production environments.


$ sdk install jmc


----


Apache JMeter (5.4.3)

https://jmeter.apache.org/

The Apache JMeter™ application is open source software, a 100% pure Java
application designed to load test functional behavior and measure performance.
It was originally designed for testing Web Applications but has since expanded
to other test functions.


$ sdk install jmeter


----


Joern (1.1.564)

https://joern.io/

Joern is a platform for analyzing source code, bytecode, and binary executables.
It generates code property graphs (CPGs), a graph representation of code for
cross-language code analysis. Code property graphs are stored in a custom graph
database. This allows code to be mined using search queries formulated in a
Scala-based domain-specific query language. Joern is developed with the goal of
providing a useful tool for vulnerability discovery and research in static
program analysis.


$ sdk install joern


----


JReleaser (1.0.0)

https://jreleaser.org

JReleaser is a release automation tool for Java projects. Its goal is to
simplify creating releases and publishing artifacts to multiple package managers
while providing customizable options.


$ sdk install jreleaser


----


Karaf (4.2.8)

https://karaf.apache.org/

Apache Karaf is a polymorphic, lightweight, powerful, and enterprise ready
applications runtime. It provides all the ecosystem and bootstrapping options
you need for your applications. It runs on premise or on cloud. By polymorphic,
it means that Karaf can host any kind of applications: WAR, OSGi, Spring, and
much more.


$ sdk install karaf


----


kcctl (1.0.0.Alpha5)

https://github.com/kcctl/kcctl

A modern and intuitive command-line client for Kafka Connect. Relying on the
idioms and semantics of kubectl, it allows you to register and examine
connectors, delete them, restart them, etc.


$ sdk install kcctl


----


ki (0.4.5)

https://github.com/Kotlin/kotlin-interactive-shell

An extensible implementation of the Kotlin REPL with a rich set of features
including autocomplete, syntax highlighting, type inference and maven
dependencies.


$ sdk install ki


----


Kobweb (0.9.9)

https://kobweb.varabyte.com

Kobweb is an opinionated Kotlin web framework built on top of Compose for Web.
The CLI provides commands to help setup and manage your project.


$ sdk install kobweb


----


Kotlin (1.6.21)

https://kotlinlang.org/

Kotlin is a statically-typed programming language that runs on the Java Virtual
Machine and can also be compiled to JavaScript source code.


$ sdk install kotlin


----


kscript (4.0.2)

https://github.com/holgerbrandl/kscript

Enhanced scripting support for Kotlin on *nix-based systems. kscript provides an
easy-to-use, very flexible, and almost zero-overhead solution to write
self-contained mini-applications with Kotlin.


$ sdk install kscript


----


Layrry (1.0.0.Alpha1)

https://github.com/moditect/layrry/

Layrry - A Launcher and API for Modularized Java Applications. It allows to
assemble modularized applications based on Maven artifact coordinates of the
(modular) JARs to include. Layrry utilizes the Java Module System's notion of
module layers, allowing multiple versions of one module to be used within an
application at the same time, as well as dynamically adding and removing modules
at application runtime.


$ sdk install layrry


----


Leiningen (2.9.8) http://leiningen.org/

Leiningen is the easiest way to use Clojure. With a focus on project automation
and declarative configuration, it gets out of your way and lets you focus on
your code.


$ sdk install leiningen


----


Maven (3.8.5)

https://maven.apache.org/

Apache Maven is a software project management and comprehension tool. Based on
the concept of a project object model (POM), Maven can manage a project's build,
reporting and documentation from a central piece of information.


$ sdk install maven


----


MCS (0.2)

https://github.com/mthmulders/mcs

Search the Maven Central Repository from your command line! Using mcs, you can
find artifacts and generate the required pom.xml snippet to use directly in your
Maven project.


$ sdk install mcs


----


Micronaut (3.5.0) http://micronaut.io/

Micronaut is an open source microservice framework for the JVM


$ sdk install micronaut


----


Mule Flow Diagrams (0.7.4)

https://github.com/manikmagar/mule-flow-diagrams/

Mule Flow Diagrams is an open source tool that lets you generate flow dependency
graph and diagrams for your Mule configurations.


$ sdk install mulefd


----


Maven Daemon (0.8.0)

https://github.com/mvndaemon/mvnd/

The mvnd project aims to provide a daemon infrastructure for maven based builds.
It borrows techniques from Gradle and Takari to provide a simple and efficient
system.


$ sdk install mvnd


----


MyBatis Migrations (3.3.9)

https://mybatis.org/migrations/

The MyBatis Schema Migration System (or MyBatis Migrations for short) seeks to
provide database migrations for any database (new or existing) and make the
current status of the database easily accessible and comprehensible. Installing
this candidate provides the migrate command for managing database migrations


$ sdk install mybatis


----


Neo4j-Migrations (1.6.0)

https://neo4j.com/labs/neo4j-migrations/

Neo4j-Migrations is a database migration and refactoring tool that allows
running Cypher scripts and programmatic refactorings in a controlled and
repeatable fashion against one or more Neo4j database.


$ sdk install neo4jmigrations


----


Pierrot (0.9.14)

https://agorapulse.github.io/pierrot/

Pierrot helps you to manage many GitHub repositories with a single command.


$ sdk install pierrot


----


Pomchecker (1.2.0)

https://github.com/kordamp/pomchecker/

Pomchecker - Checks that POM files comply with the minimum rules required for
publication to Maven Central. It can also check if a POM is a valid BOM file.


$ sdk install pomchecker


----


Quarkus CLI (2.9.2.Final) http://quarkus.io

Quarkus is a Kubernetes Native Java framework tailored for OpenJDK HotSpot and
GraalVM, crafted from best-of-breed Java libraries and standards.


$ sdk install quarkus


----


sbt (1.6.2) http://www.scala-sbt.org/

SBT is an open source build tool for Scala and Java projects, similar to Java's
Maven or Ant. Its main features are: native support for compiling Scala code and
integrating with many Scala test frameworks; build descriptions written in Scala
using a DSL; dependency management using Ivy (which supports Maven-format
repositories); continuous compilation, testing, and deployment; integration with
the Scala interpreter for rapid iteration and debugging; support for mixed
Java/Scala projects


$ sdk install sbt


----


Scala (3.1.2) http://www.scala-lang.org/

Scala is a programming language for general software applications. Scala has
full support for functional programming and a very strong static type system.
This allows programs written in Scala to be very concise and thus smaller in
size than other general-purpose programming languages. Scala source code is
intended to be compiled to Java bytecode, so that the resulting executable code
runs on a Java virtual machine. Java libraries may be used directly in Scala
code and vice versa. Scala is object-oriented, and uses a curly-brace syntax.
Scala has many features of functional programming languages, including currying,
type inference, immutability, lazy evaluation, and pattern matching. It also has
an advanced type system supporting algebraic data types, covariance and
contravariance, higher-order types, and anonymous types. Other features of Scala
include operator overloading, optional parameters, named parameters, raw
strings, and no checked exceptions.


$ sdk install scala


----


Scala CLI (0.1.6)

https://scala-cli.virtuslab.org

Scala CLI is a command-line tool to interact with the Scala language. It lets
you compile, run, test, and package your Scala code (and more!)


$ sdk install scalacli


----


SchemaCrawler (16.16.14)

https://www.schemacrawler.com

SchemaCrawler is a free database schema discovery and comprehension tool.
SchemaCrawler has a good mix of useful features for data governance. You can
search for database schema objects using regular expressions, and output the
schema and data in a readable text format. The output serves for database
documentation, and is designed to be diff-ed against other database schemas.
SchemaCrawler also generates schema diagrams. You can execute scripts in any
standard scripting language against your database. You can find potential schema
design issues with lint.


$ sdk install schemacrawler


----


Spark (3.2.0)

https://spark.apache.org/

Apache Spark is an open-source cluster-computing framework. Spark provides an
interface for programming entire clusters with implicit data parallelism and
fault-tolerance.


$ sdk install spark


----


Spring Boot (2.7.0) http://projects.spring.io/spring-boot/

Spring Boot takes an opinionated view of building production-ready Spring
applications. It favors convention over configuration and is designed to get you
up and running as quickly as possible.


$ sdk install springboot


----


Sshoogr (0.9.25)

https://github.com/aestasit/sshoogr

Sshoogr is a Groovy based DSL and command line tool for working with remote
servers through SSH.


$ sdk install sshoogr


----


Taxi (1.32.5)

https://taxilang.org

Taxi is a language for documenting data - such as data models - and the
contracts of APIs. It describes data semantically, allowing powerful tooling to
discover and map data based on it's meaning, rather than the name of a field.


$ sdk install taxi


----


Apache Tomcat (10.0.14)

https://tomcat.apache.org/

The Apache Tomcat® software is an open source implementation of the Java
Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
technologies.


$ sdk install tomcat


----


Vert.x (4.3.1) http://vertx.io/

Vert.x is a tool-kit for building reactive applications on the JVM.


$ sdk install vertx


----


VisualVM (2.1.3)

https://visualvm.github.io/

VisualVM is a tool that provides a visual interface for viewing detailed
information about Java applications while they are running on a Java Virtual
Machine.


$ sdk install visualvm


----


Webtau (1.48)

https://github.com/testingisdocumenting/webtau

Webtau (short for web test automation) is a testing API, command line tool and a framework to write unit, integration and end-to-end tests. Tests can span multiple application layers like REST-API, Graph QL, Browser, Database and CLI.
Consistent set of matchers and testing concepts work across all testing layers.
Use REPL mode to speed-up tests development. Leverage rich reporting to
significantly cut down failure investigation time.


$ sdk install webtau


----


Znai (1.51.1)

https://github.com/testingisdocumenting/znai

Build functional, maintainable, beautiful User Guides with znai. Instant pages
navigation. Local search. Multiple integrations to work with Python, Java,
OpenAPI, etc. Transform Getting Started sections into slideshow for your
workshops. Manage multiple documentations with self-deployed znai hub.


$ sdk install znai

----

#!/bin/bash
#
# Copyright 2017 Marco Vermeulen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


# install:- channel: stable; cliVersion: 5.18.2; cliNativeVersion: 0.4.6; api: https://api.sdkman.io/2

set -e

track_last_command() {
last_command=$current_command
current_command=$BASH_COMMAND
}
trap track_last_command DEBUG

echo_failed_command() {
local exit_code="$?"
if "$exit_code" != "0" ; then
echo "'$last_command': command failed with exit code $exit_code."
fi
}
trap echo_failed_command EXIT


# Global variables
export SDKMAN_SERVICE="https://api.sdkman.io/2"
export SDKMAN_VERSION="5.18.2"
export SDKMAN_NATIVE_VERSION="0.4.6"

if [ -z "$SDKMAN_DIR" ]; then
SDKMAN_DIR="$HOME/.sdkman"
SDKMAN_DIR_RAW='$HOME/.sdkman'
else
SDKMAN_DIR_RAW="$SDKMAN_DIR"
fi
export SDKMAN_DIR

# Local variables
sdkman_src_folder="${SDKMAN_DIR}/src"
sdkman_libexec_folder="${SDKMAN_DIR}/libexec"
sdkman_tmp_folder="${SDKMAN_DIR}/tmp"
sdkman_ext_folder="${SDKMAN_DIR}/ext"
sdkman_etc_folder="${SDKMAN_DIR}/etc"
sdkman_var_folder="${SDKMAN_DIR}/var"
sdkman_candidates_folder="${SDKMAN_DIR}/candidates"
sdkman_config_file="${sdkman_etc_folder}/config"
sdkman_platform_file="${sdkman_var_folder}/platform"
sdkman_bash_profile="${HOME}/.bash_profile"
sdkman_profile="${HOME}/.profile"
sdkman_bashrc="${HOME}/.bashrc"
sdkman_zshrc="${ZDOTDIR:-${HOME}}/.zshrc"

sdkman_init_snippet=$( cat << EOF
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$SDKMAN_DIR_RAW"
-s "${SDKMAN_DIR_RAW}/bin/sdkman-init.sh" && source "${SDKMAN_DIR_RAW}/bin/sdkman-init.sh"
EOF
)

# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
solaris=false;
freebsd=false;
case "$(uname)" in
CYGWIN*)
cygwin=true
;;
Darwin*)
darwin=true
;;
SunOS*)
solaris=true
;;
FreeBSD*)
freebsd=true
esac

echo ''
echo ' -+syyyyyyys:'
echo ' `/yho:` -yd.'
echo ' `/yh/` +m.'
echo ' .oho. hy .`'
echo ' .sh/` :N` `-/o` `+dyyo:.'
echo ' .yh:` `M- `-/osysoym :hs` `-+sys: hhyssssssssy+'
echo ' .sh:` `N: ms/-`` yy.yh- -hy. `.N-````````+N.'
echo ' `od/` `N- -/oM- ddd+` `sd: hNNm -N:'
echo ' :do` .M. dMMM- `ms. /d+` `NMMs `do'
echo ' .yy- :N` ```mMMM. - -hy. /MMM: yh'
echo ' `+d+` `:/oo/` `-/osyh/ossssssdNMM` .sh: yMMN` /m.'
echo ' -dh- :ymNMMMMy `-/shmNm-`:N/-.`` `.sN /N- `NMMy .m/'
echo ' `oNs` -hysosmMMMMydmNmds+-.:ohm : sd` :MMM/ yy'
echo ' .hN+ /d: -MMMmhs/-.` .MMMh .ss+- `yy` sMMN` :N.'
echo ' :mN/ `N/ `o/-` :MMMo +MMMN- .` `ds mMMh do'
echo ' /NN/ `N+....--:/+oooosooo+:sMMM: hMMMM: `my .m+ -MMM+ :N.'
echo ' /NMo -+ooooo+/:-....`...:+hNMN. `NMMMd` .MM/ -m: oMMN. hs'
echo ' -NMd` :mm -MMMm- .s/ -MMm. /m- mMMd -N.'
echo ' `mMM/ .- /MMh. -dMo -MMMy od. .MMMs..---yh'
echo ' +MMM. sNo`.sNMM+ :MMMM/ sh`+MMMNmNm+++-'
echo ' mMMM- /--ohmMMM+ :MMMMm. `hyymmmdddo'
echo ' MMMMh. ```` `-+yy/`yMMM/ :MMMMMy -sm:.``..-:-.`'
echo ' dMMMMmo-.``````..-:/osyhddddho. `+shdh+. hMMM: :MmMMMM/ ./yy/` `:sys+/+sh/'
echo ' .dMMMMMMmdddddmmNMMMNNNNNMMMMMs sNdo- dMMM- `-/yd/MMMMm-:sy+. :hs- /N`'
echo ' `/ymNNNNNNNmmdys+/::----/dMMm: +m- mMMM+ohmo/.` sMMMMdo- .om: `sh'
echo ' `.-----+/.` `.-+hh/` `od. NMMNmds/ `mmy:` +mMy `:yy.'
echo ' /moyso+//+ossso:. .yy` `dy+:` .. :MMMN+---/oys:'
echo ' /+m: `.-:::-` /d+ +MMMMMMMNh:`'
echo ' +MN/ -yh. `+hddhy+.'
echo ' /MM+ .sh:'
echo ' :NMo -sh/'
echo ' -NMs `/yy:'
echo ' .NMy `:sh+.'
echo ' `mMm` ./yds-'
echo ' `dMMMmyo:-.````.-:oymNy:`'
echo ' +NMMMMMMMMMMMMMMMMms:`'
echo ' -+shmNMMMNmdy+:`'
echo ''
echo ''
echo ' Now attempting installation...'
echo ''
echo ''

# Sanity checks

echo "Looking for a previous installation of SDKMAN..."
if [ -d "$SDKMAN_DIR" ]; then
echo "SDKMAN found."
echo ""
echo "

=="
echo " You already have SDKMAN installed."
echo " SDKMAN was found at:"
echo ""
echo " ${SDKMAN_DIR}"
echo ""
echo " Please consider running the following if you need to upgrade."
echo ""
echo " $ sdk selfupdate force"
echo ""
echo "

=="
echo ""
exit 0
fi

echo "Looking for unzip..."
if ! command -v unzip > /dev/null; then
echo "Not found."
echo "

=="
echo " Please install unzip on your system using your favourite package manager."
echo ""
echo " Restart after installing unzip."
echo "

=="
echo ""
exit 1
fi

echo "Looking for zip..."
if ! command -v zip > /dev/null; then
echo "Not found."
echo "

=="
echo " Please install zip on your system using your favourite package manager."
echo ""
echo " Restart after installing zip."
echo "

=="
echo ""
exit 1
fi

echo "Looking for curl..."
if ! command -v curl > /dev/null; then
echo "Not found."
echo ""
echo "

=="
echo " Please install curl on your system using your favourite package manager."
echo ""
echo " Restart after installing curl."
echo "

=="
echo ""
exit 1
fi

if "$solaris" == true ; then
echo "Looking for gsed..."
if [ -z $(which gsed) ]; then
echo "Not found."
echo ""
echo "

=="
echo " Please install gsed on your solaris system."
echo ""
echo " SDKMAN uses gsed extensively."
echo ""
echo " Restart after installing gsed."
echo "

=="
echo ""
exit 1
fi
else
echo "Looking for sed..."
if [ -z $(command -v sed) ]; then
echo "Not found."
echo ""
echo "

=="
echo " Please install sed on your system using your favourite package manager."
echo ""
echo " Restart after installing sed."
echo "

=="
echo ""
exit 1
fi
fi

echo "Installing SDKMAN scripts..."


# Create directory structure

echo "Create distribution directories..."
mkdir -p "$sdkman_tmp_folder"
mkdir -p "$sdkman_ext_folder"
mkdir -p "$sdkman_etc_folder"
mkdir -p "$sdkman_var_folder"
mkdir -p "$sdkman_candidates_folder"

echo "Getting available candidates..."
SDKMAN_CANDIDATES_CSV=$(curl -s "${SDKMAN_SERVICE}/candidates/all")
echo "$SDKMAN_CANDIDATES_CSV" > "${SDKMAN_DIR}/var/candidates"

echo "Prime platform file..."
# infer platform
function infer_platform() {
local kernel
local machine

kernel="$(uname -s)"
machine="$(uname -m)"

case $kernel in
Linux)
case $machine in
i686)
echo "linuxx32"
;;
x86_64)
echo "linuxx64"
;;
armv6l)
echo "linuxarm32hf"
;;
armv7l)
echo "linuxarm32hf"
;;
armv8l)
echo "linuxarm32hf"
;;
aarch64)
echo "linuxarm64"
;;
*)
echo "exotic"
;;
esac
;;
Darwin)
case $machine in
x86_64)
echo "darwinx64"
;;
arm64)
echo "darwinarm64"
;;
*)
echo "darwinx64"
;;
esac
;;
MSYS*|MINGW*)
case $machine in
x86_64)
echo "windowsx64"
;;
*)
echo "exotic"
;;
esac
;;
*)
echo "exotic"
esac
}

export SDKMAN_PLATFORM="$(infer_platform)"

echo "$SDKMAN_PLATFORM" > "$sdkman_platform_file"

echo "Prime the config file..."
touch "$sdkman_config_file"
echo "sdkman_auto_answer=false" >> "$sdkman_config_file"
if [ -z "$ZSH_VERSION" -a -z "$BASH_VERSION" ]; then
echo "sdkman_auto_complete=false" >> "$sdkman_config_file"
else
echo "sdkman_auto_complete=true" >> "$sdkman_config_file"
fi
echo "sdkman_auto_env=false" >> "$sdkman_config_file"
echo "sdkman_beta_channel=false" >> "$sdkman_config_file"
echo "sdkman_checksum_enable=true" >> "$sdkman_config_file"
echo "sdkman_colour_enable=true" >> "$sdkman_config_file"
echo "sdkman_curl_connect_timeout=7" >> "$sdkman_config_file"
echo "sdkman_curl_max_time=10" >> "$sdkman_config_file"
echo "sdkman_debug_mode=false" >> "$sdkman_config_file"
echo "sdkman_insecure_ssl=false" >> "$sdkman_config_file"
echo "sdkman_selfupdate_feature=true" >> "$sdkman_config_file"

# script cli distribution
echo "Installing script cli archive..."
# fetch distribution
sdkman_zip_file="${sdkman_tmp_folder}/sdkman-${SDKMAN_VERSION}.zip"
echo "* Downloading..."
curl --fail --location --progress-bar "${SDKMAN_SERVICE}/broker/download/sdkman/install/${SDKMAN_VERSION}/${SDKMAN_PLATFORM}" > "$sdkman_zip_file"

# check integrity
echo "* Checking archive integrity..."
ARCHIVE_OK=$(unzip -qt "$sdkman_zip_file" | grep 'No errors detected in compressed data')
if -z "$ARCHIVE_OK" ; then
echo "Downloaded zip archive corrupt. Are you connected to the internet?"
echo ""
echo "If problems persist, please ask for help on our Slack:"
echo "* easy sign up: https://slack.sdkman.io/"
echo "* report on channel: https://sdkman.slack.com/app_redirect?channel=user-issues"
exit
fi

# extract archive
echo "* Extracting archive..."
if "$cygwin" == 'true' ; then
sdkman_tmp_folder=$(cygpath -w "$sdkman_tmp_folder")
sdkman_zip_file=$(cygpath -w "$sdkman_zip_file")
fi
unzip -qo "$sdkman_zip_file" -d "$sdkman_tmp_folder"

# copy in place
echo "* Copying archive contents..."
rm -f "$sdkman_src_folder"/*
cp -rf "${sdkman_tmp_folder}"/sdkman-*/* "$SDKMAN_DIR"

# clean up
echo "* Cleaning up..."
rm -rf "$sdkman_tmp_folder"/sdkman-*
rm -rf "$sdkman_zip_file"

echo ""

# native cli distribution
if "$SDKMAN_PLATFORM" != "exotic" ; then
echo "Installing script cli archive..."
# fetch distribution
sdkman_zip_file="${sdkman_tmp_folder}/sdkman-native-${SDKMAN_NATIVE_VERSION}.zip"
echo "* Downloading..."
curl --fail --location --progress-bar "${SDKMAN_SERVICE}/broker/download/native/install/${SDKMAN_NATIVE_VERSION}/${SDKMAN_PLATFORM}" > "$sdkman_zip_file"

# check integrity
echo "* Checking archive integrity..."
ARCHIVE_OK=$(unzip -qt "$sdkman_zip_file" | grep 'No errors detected in compressed data')
if -z "$ARCHIVE_OK" ; then
echo "Downloaded zip archive corrupt. Are you connected to the internet?"
echo ""
echo "If problems persist, please ask for help on our Slack:"
echo "* easy sign up: https://slack.sdkman.io/"
echo "* report on channel: https://sdkman.slack.com/app_redirect?channel=user-issues"
exit
fi

# extract archive
echo "* Extracting archive..."
if "$cygwin" == 'true' ; then
sdkman_tmp_folder=$(cygpath -w "$sdkman_tmp_folder")
sdkman_zip_file=$(cygpath -w "$sdkman_zip_file")
fi
unzip -qo "$sdkman_zip_file" -d "$sdkman_tmp_folder"

# copy in place
echo "* Copying archive contents..."
rm -f "$sdkman_libexec_folder"/*
cp -rf "${sdkman_tmp_folder}"/sdkman-*/* "$SDKMAN_DIR"

# clean up
echo "* Cleaning up..."
rm -rf "$sdkman_tmp_folder"/sdkman-*
rm -rf "$sdkman_zip_file"

echo ""
fi

echo "Set version to $SDKMAN_VERSION ..."
echo "$SDKMAN_VERSION" > "${SDKMAN_DIR}/var/version"

echo "Set native version to $SDKMAN_NATIVE_VERSION ..."
echo "$SDKMAN_NATIVE_VERSION" > "${SDKMAN_DIR}/var/version_native"


if $darwin == true ; then
touch "$sdkman_bash_profile"
echo "Attempt update of login bash profile on OSX..."
if -z $(grep 'sdkman-init.sh' "$sdkman_bash_profile") ; then
echo -e "\n$sdkman_init_snippet" >> "$sdkman_bash_profile"
echo "Added sdkman init snippet to $sdkman_bash_profile"
fi
else
echo "Attempt update of interactive bash profile on regular UNIX..."
touch "${sdkman_bashrc}"
if -z $(grep 'sdkman-init.sh' "$sdkman_bashrc") ; then
echo -e "\n$sdkman_init_snippet" >> "$sdkman_bashrc"
echo "Added sdkman init snippet to $sdkman_bashrc"
fi
fi

echo "Attempt update of zsh profile..."
touch "$sdkman_zshrc"
if -z $(grep 'sdkman-init.sh' "$sdkman_zshrc") ; then
echo -e "\n$sdkman_init_snippet" >> "$sdkman_zshrc"
echo "Updated existing ${sdkman_zshrc}"
fi



echo -e "\n\n\nAll done!\n\n"

echo "You are subscribed to the STABLE channel."

echo ""
echo "Please open a new terminal, or run the following in the existing one:"
echo ""
echo " source \"${SDKMAN_DIR}/bin/sdkman-init.sh\""
echo ""
echo "Then issue the following command:"
echo ""
echo " sdk help"
echo ""
echo "Enjoy!!!"


https://get.sdkman.io


----

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


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

-+syyyyyyys:
`/yho:` -yd.
`/yh/` +m.
.oho. hy .`
.sh/` :N` `-/o` `+dyyo:.
.yh:` `M- `-/osysoym :hs` `-+sys: hhyssssssssy+
.sh:` `N: ms/-`` yy.yh- -hy. `.N-````````+N.
`od/` `N- -/oM- ddd+` `sd: hNNm -N:
:do` .M. dMMM- `ms. /d+` `NMMs `do
.yy- :N` ```mMMM. - -hy. /MMM: yh
`+d+` `:/oo/` `-/osyh/ossssssdNMM` .sh: yMMN` /m.
-dh- :ymNMMMMy `-/shmNm-`:N/-.`` `.sN /N- `NMMy .m/
`oNs` -hysosmMMMMydmNmds+-.:ohm : sd` :MMM/ yy
.hN+ /d: -MMMmhs/-.` .MMMh .ss+- `yy` sMMN` :N.
:mN/ `N/ `o/-` :MMMo +MMMN- .` `ds mMMh do
/NN/ `N+....--:/+oooosooo+:sMMM: hMMMM: `my .m+ -MMM+ :N.
/NMo -+ooooo+/:-....`...:+hNMN. `NMMMd` .MM/ -m: oMMN. hs
-NMd` :mm -MMMm- .s/ -MMm. /m- mMMd -N.
`mMM/ .- /MMh. -dMo -MMMy od. .MMMs..---yh
+MMM. sNo`.sNMM+ :MMMM/ sh`+MMMNmNm+++-
mMMM- /--ohmMMM+ :MMMMm. `hyymmmdddo
MMMMh. ```` `-+yy/`yMMM/ :MMMMMy -sm:.``..-:-.`
dMMMMmo-.``````..-:/osyhddddho. `+shdh+. hMMM: :MmMMMM/ ./yy/` `:sys+/+sh/
.dMMMMMMmdddddmmNMMMNNNNNMMMMMs sNdo- dMMM- `-/yd/MMMMm-:sy+. :hs- /N`
`/ymNNNNNNNmmdys+/::----/dMMm: +m- mMMM+ohmo/.` sMMMMdo- .om: `sh
`.-----+/.` `.-+hh/` `od. NMMNmds/ `mmy:` +mMy `:yy.
/moyso+//+ossso:. .yy` `dy+:` .. :MMMN+---/oys:
/+m: `.-:::-` /d+ +MMMMMMMNh:`
+MN/ -yh. `+hddhy+.
/MM+ .sh:
:NMo -sh/
-NMs `/yy:
.NMy `:sh+.
`mMm` ./yds-
`dMMMmyo:-.````.-:oymNy:`
+NMMMMMMMMMMMMMMMMms:`
-+shmNMMMNmdy+:`


Now attempting installation...


Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime platform file...
Prime the config file...
Installing script cli archive...
* Downloading...
######################################################################## 100.0%
* Checking archive integrity...
* Extracting archive...
* Copying archive contents...
* Cleaning up...

Installing script cli archive...
* Downloading...
######################################################################## 100.0%
* Checking archive integrity...
* Extracting archive...
* Copying archive contents...
* Cleaning up...

Set version to 5.18.2 ...
Set native version to 0.4.6 ...
Attempt update of interactive bash profile on regular UNIX...
Added sdkman init snippet to /home/bowman/.bashrc
Attempt update of zsh profile...
Updated existing /home/bowman/.zshrc



All done!


You are subscribed to the STABLE channel.

Please open a new terminal, or run the following in the existing one:

source "/home/bowman/.sdkman/bin/sdkman-init.sh"

Then issue the following command:

sdk help

Enjoy!!!




----

{{navbar_deployment}}

{{navbar_sdkman}}

{{navbar_footer}}