Jabba
github.com
What it is
Jabba is a free Java version manager written in Go for installing and switching among JDK versions on macOS, Linux and Windows. Its JDK index, powered by DiscoAPI, lists versions for the user's operating system and architecture. The README names distributions including Oracle, Adopt OpenJDK, Zulu, IBM SDK, GraalVM, OpenJDK, Liberica and Amazon Corretto. Users can list remote JDKs, filter versions with semantic version ranges, install versions and switch among those installed. A `.jabbarc` file can specify a project's JDK, while a default alias can select the version used in new terminals. Jabba can link to a system JDK and coexist with an existing Java installation. The README documents shell integration for bash, zsh and fish, plus installation through Homebrew, shell scripts, PowerShell, Scoop or Docker. Custom JDK downloads are also supported. Jabba does not switch Java globally on its own; the README gives manual platform-specific snippets instead. The repository describes Jabba as a community fork that is a work in progress and warns that some README instructions may be outdated. It is licensed under Apache-2.0.
Spec sheet
- Purpose
- Jabba is a Java version manager inspired by nvm and written in Go.Read 9 Oct 2026 · github.com
- Platforms
- The README documents installation for macOS, Linux, and Windows 10, with OS and architecture support described as macOS, Linux x86/x86_64/ARMv7+, and Windows x86_64.Read 9 Oct 2026 · github.com
- Security
- GitHub reports that the project has no SECURITY.md policy and no published security advisories.Read 9 Oct 2026 · github.com
- License
- The repository is licensed under Apache License 2.0.Read 9 Oct 2026 · github.com
- Custom downloads
- Jabba can install JDK distributions from custom URLs using formats including zip, tgz, tgx, dmg, bin, and exe.Read 9 Oct 2026 · github.com
- Data location
- Jabba stores its files under ~/.jabba on Linux and macOS and %USERPROFILE%/.jabba on Windows.Read 9 Oct 2026 · github.com
- Docker
- The README shows using Jabba in a Docker build to install a JDK and then remove the Jabba binary.Read 9 Oct 2026 · github.com
- Existing JDKs
- Jabba can link a system JDK, and the README says it can coexist with an already installed Java version.Read 9 Oct 2026 · github.com
- Global Java setting
- Jabba does not include built-in functionality to switch Java globally; the README gives manual platform-specific snippets instead.Read 9 Oct 2026 · github.com
- Goal
- The project aims to provide a unified way to install and switch JDK versions across macOS, Linux, and Windows.Read 9 Oct 2026 · github.com
- Index integration
- The JDK index is powered by DiscoAPI.Read 9 Oct 2026 · github.com
- Install and switch JDKs
- Jabba is intended to install and switch between JDK versions across macOS, Linux, and Windows.Read 9 Oct 2026 · github.com
- Install methods
- The README documents Homebrew, shell scripts, PowerShell, Scoop, and Docker-based installation or use.Read 9 Oct 2026 · github.com
- JDK catalog
- Its JDK index is powered by DiscoAPI and lists JDKs for the user's OS and architecture.Read 9 Oct 2026 · github.com
- JDK sources
- The README lists Oracle JDK, Adopt OpenJDK, Zulu OpenJDK, IBM SDK, GraalVM CE, OpenJDK, Liberica JDK, and Amazon Corretto among supported distributions.Read 9 Oct 2026 · github.com
- License and disclaimer
- The repository identifies the software as Apache-2.0 licensed and says it is for educational purposes and used at the user's own risk.Read 9 Oct 2026 · github.com
- Project configuration
- A `.jabbarc` file can specify a JDK version for Jabba to use, and a default alias can select the version used in new terminals.Read 9 Oct 2026 · github.com
- Project status
- The repository describes Jabba as a community fork that is a work in progress and warns that some README instructions may be outdated.Read 9 Oct 2026 · github.com
- Project wrapper
- The jabba-wrapper scripts let a project use Jabba without installing it globally and select a JDK version through .jabbarc.Read 9 Oct 2026 · github.com
- Shell support
- The README gives shell integration instructions for bash, zsh, and fish.Read 9 Oct 2026 · github.com
- Shells and installation
- The README documents shell integration for bash, zsh, and fish, with installation instructions for macOS, Linux, and Windows.Read 9 Oct 2026 · github.com
- Supported distributions
- The README lists Oracle, Adopt OpenJDK, Zulu, IBM SDK, GraalVM, OpenJDK, Liberica, and Amazon Corretto among supported JDKs.Read 9 Oct 2026 · github.com
- Version selection
- Users can list remote JDKs, filter versions with semantic version ranges, install versions, and switch among installed versions.Read 9 Oct 2026 · github.com
- Version switching
- Users can install JDKs, switch among installed versions, set a default version, and select a project version through a .jabbarc file.Read 9 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Installs and switches among JDK versions across three operating systems.
- Supports several named JDK distributions and custom downloads.
- Project `.jabbarc` files can select a JDK version.
- Integrates with bash, zsh and fish.
- Can coexist with an existing system JDK.
Limits
- Does not switch Java globally by itself.
- The repository warns that some README instructions may be outdated.
- The project is described as a work in progress.
Who it suits
Jabba suits developers who need to install and select JDK versions across Windows, macOS and Linux. It can be useful when projects require different JDK versions, provided manual global switching is not a requirement.
Jabba in depth
Read the full write-up
Jabba is a cross-platform Java version manager for developers who need several JDK releases or vendors on one machine. It is best suited to command-line users managing project-specific Java environments. The trade-off is a work-in-progress project and manual work for global Java changes.
Overview
Written in Go and inspired by nvm, Jabba provides one workflow for obtaining and selecting JDKs on Linux, macOS, and Windows. It can manage downloads, connect an existing system JDK, and keep separate project requirements from colliding. That makes it a practical fit for teams supporting applications on different Java baselines, but less suitable for users expecting a polished graphical setup tool.
Jabba is a community fork that identifies itself as work in progress and warns that some README instructions may be outdated. It is released under Apache License 2.0 with an educational-purpose, use-at-your-own-risk disclaimer. GitHub reports no SECURITY.md policy and no published security advisories, a consideration for organizations with formal security-governance requirements.
Key features
JDK catalog and installation
The DiscoAPI-powered index presents JDKs for the operating system and architecture in use. The supported list includes Oracle, Adopt OpenJDK, Zulu, IBM SDK, GraalVM, OpenJDK, Liberica, and Amazon Corretto. When the catalog is not enough, Jabba accepts custom download URLs in zip, tgz, tgx, dmg, bin, and exe formats. This breadth helps developers match a vendor-specific build or an unusual distribution without abandoning the same manager.
Version selection
Users can inspect remote versions, filter them with semantic-version ranges, install selected releases, and switch among installed JDKs. A default alias controls the version used in new terminals. A.jabbarc file pins a project to a JDK, providing project-level selection without changing every other shell. The project wrapper can bring Jabba into a project without a global installation, which is useful for repositories that need a repeatable entry point.
Existing installations, shells, and containers
Jabba can link a system JDK and coexist with Java already installed on the machine. Shell integration is documented for bash, zsh, and fish. Installation and usage paths include Homebrew, shell scripts, PowerShell, Scoop, and Docker; the Docker example installs a JDK during a build and then removes the Jabba binary. Files are stored under ~/.jabba on Linux and macOS and %USERPROFILE%/.jabba on Windows.
There is no built-in global Java switch. Platform-specific snippets in the README require manual configuration, so users wanting one command to alter the system-wide Java setting should look elsewhere.
Pricing
Jabba is free and open source. The Jabba plan costs nothing and includes Java version management under Apache License 2.0. There are no paid tiers, seat charges, quotas, or trial terms to weigh; the relevant cost is the operational effort of maintaining a work-in-progress tool and its shell configuration.
Platforms
Jabba runs on Linux, macOS, and Windows. Its cross-platform scope is a strong reason to standardize developer setup across those operating systems, while shell integration is specifically documented for bash, zsh, and fish. Docker usage extends it to image builds, where a temporary JDK can be installed and the manager removed afterward.
Who it's for
Choose Jabba if you are a developer, build engineer, or team member who regularly switches JDK releases, needs to compare vendors, or wants a project file to select Java automatically at the project level. It also suits users who prefer shell-driven workflows and need to reuse an existing system JDK alongside managed installations.
It is a weaker choice for organizations that require a formal security policy, guaranteed documentation currency, or built-in global Java switching. The work-in-progress status means teams should be prepared to validate setup instructions and own their operational decisions.
Pros and cons
Pros
Broad JDK coverage: multiple major distributions and custom archive formats accommodate vendor and release-specific requirements.
Project pinning:.jabbarc, aliases, and the wrapper support per-project Java choices rather than one machine-wide version.
Cross-platform workflow: Linux, macOS, and Windows support helps mixed-OS teams use a common approach.
Existing-JDK linking: a system installation can coexist with Jabba-managed versions.
Cons
No built-in global switch: changing Java globally requires manual, platform-specific setup.
Work-in-progress maintenance: README instructions may be outdated, increasing setup and troubleshooting responsibility.
Limited security governance: no SECURITY.md policy or published advisories are reported.
Command-line orientation: users seeking a graphical manager will find the workflow centered on shells and scripts.
Alternatives
For a broader directory of tools in this category, see Runtime Version Managers and Development Environment Managers.
GHCup is a free manager for Haskell toolchains across Linux, macOS, Windows, self-hosted environments, and the web; choose it when Haskell rather than Java is your target.
rustup is a free Rust toolchain manager for Linux, macOS, and Windows; pick it for Rust-specific installation and updates.
fnm is a free cross-platform manager for Node.js versions; use it when your projects depend on Node instead of JDKs.
GVM is a free, MIT-licensed Go version manager for Linux and macOS; it is the relevant choice for Go toolchains.
nvm is a free open-source Node.js version manager spanning Linux, macOS, self-hosted environments, and Windows.
axe-playwright is free Linux and web software with a Playwright peer dependency; consider it for that testing-oriented runtime context.
ClearerVoice-Studio is free software offered across Linux, macOS, Windows, self-hosted environments, and the web.
RVM is a free manager available on Linux, macOS, Windows, self-hosted environments, and the web.
Verdict
Jabba is a sensible choice for developers who need project-level JDK pinning, several vendor options, and one free workflow across desktop operating systems. Its main reason to choose it is the combination of broad JDK sourcing and flexible per-project selection. Look elsewhere if global Java switching, maintained documentation, or formal security governance is more important than that flexibility.
Verdict
Jabba offers project-level JDK selection and a broad set of installation options across desktop operating systems. Its work-in-progress status and lack of built-in global switching are important considerations.
Where Specifiction places it
- Runtime Version Managers#3 of 308.5
- Development Environment Managers#8 of 508.5