Skip to content

Platform and Distribution Reference

Chloe41427 edited this page Sep 27, 2026 · 1 revision

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.


Platform

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

UNIVERSAL must be requested explicitly. There is no implicit default - if your SDK is platform-independent, publish it with "platform": "UNIVERSAL".

Which do I use?

  • 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

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.


Java version format (semverish)

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; currently fx (JavaFX) or crac (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.

Clone this wiki locally