-
Notifications
You must be signed in to change notification settings - Fork 3
Platform and Distribution Reference
When you publish a version, two fields describe what you're publishing and
where it runs: platform (always required) and distribution (Java only).
This page lists the exact accepted values.
These are canonical enum values enforced by the API. They are case-sensitive and must match exactly - an unrecognised value is rejected with a
400 Bad Request.
Every published version carries exactly one platform. Most candidates ship a
single archive that runs everywhere - use UNIVERSAL. Only publish per-platform
values if you genuinely ship separate binaries per OS/architecture.
| Value | Target |
|---|---|
UNIVERSAL |
Platform-independent - one archive for all systems |
LINUX_X64 |
Linux, x86-64 |
LINUX_ARM64 |
Linux, ARM 64-bit (AArch64) |
LINUX_X32 |
Linux, x86 32-bit |
LINUX_ARM32HF |
Linux, ARM 32-bit hard-float |
LINUX_ARM32SF |
Linux, ARM 32-bit soft-float |
MAC_X64 |
macOS, Intel (x86-64) |
MAC_ARM64 |
macOS, Apple Silicon (ARM64) |
WINDOWS_X64 |
Windows, x86-64 |
UNIVERSALmust be requested explicitly. There is no implicit default - if your SDK is platform-independent, publish it with"platform": "UNIVERSAL".
-
Build tools, languages, CLIs that ship one archive (Gradle, Maven, sbt,
Ant, Groovy, Kotlin, and most others): use
UNIVERSAL, published once. - SDKs with a separate binary per OS/arch: publish each platform value you ship, in a loop or as separate steps.
For how your archive itself should be laid out, see Well-formed SDK Archives.
distribution applies to Java only. It identifies the JDK vendor/build
(e.g. Temurin vs Corretto vs Zulu), so multiple distributions of the same Java
version can coexist.
For every non-Java candidate, omit distribution entirely. It is not a
"vendor" field for general SDKs - it's specifically the Java distribution axis.
Accepted values:
| Value | Distribution |
|---|---|
TEMURIN |
Eclipse Temurin (Adoptium) |
ZULU |
Azul Zulu |
CORRETTO |
Amazon Corretto |
ORACLE |
Oracle JDK |
OPENJDK |
Oracle OpenJDK |
GRAALVM |
Oracle GraalVM |
GRAALCE |
GraalVM Community Edition |
LIBERICA |
BellSoft Liberica |
LIBERICA_NIK |
BellSoft Liberica Native Image Kit |
MICROSOFT |
Microsoft Build of OpenJDK |
SAP_MACHINE |
SapMachine |
SEMERU |
IBM Semeru |
KONA |
Tencent Kona |
BISHENG |
Huawei BiSheng |
MANDREL |
Red Hat Mandrel |
JETBRAINS |
JetBrains Runtime |
ELIYA |
Eliya |
Java distributions are published automatically via the Foojay DISCO API - vendors don't publish Java through the API by hand. This list is here for reference and for tooling that reads the state directly.
Semverish is SDKMAN!'s normalised, SemVer-like version scheme: a mandatory
three-part major.minor.patch core with optional variant and build-metadata
sections. Some candidates opt in to having their versions validated against it;
Java is the first. A Java version string must match:
M.N.P[-variant][+build-metadata]
-
M.N.P- three non-negative integers, no leading zeros (e.g.21.0.2) -
-variant- optional; currentlyfx(JavaFX) orcrac(e.g.21.0.2-fx) -
+build-metadata- optional; unlike SemVer, it is significant in semverish and forms part of the version's identity
Semverish borrows SemVer's surface syntax but reinterprets it (the variant is a released flavour, not a pre-release). For the full grammar and rationale, see the semverish specification.
Publishing a visible, eligible Java version supersedes its release series:
every other version in the same (candidate, distribution, platform, major, variant) series is hidden (visible=false). Hidden is not deleted - the old
version still resolves by its exact identifier and keeps its tags; it just drops
out of sdk list.
Non-Java candidates are not semverish-validated - any version string is accepted.