Jabba
What it is
Jabba is a free, open-source Java version manager written in Go for macOS, Linux, and Windows. It installs JDK versions and lets users switch among installed versions, with a JDK index powered by DiscoAPI that lists options 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 by semantic version ranges, and set a project version in a `.jabbarc` file; a default alias can choose the version used in new terminals. Jabba can also link a system JDK and coexist with an existing Java installation. Documentation covers shell integration for bash, zsh, and fish, and installation through Homebrew, shell scripts, PowerShell, Scoop, or Docker. The project wrapper scripts let a project use Jabba without a global installation. Jabba does not switch Java globally by itself. The repository calls the project a community work in progress and warns that some README instructions may be outdated.
For and against
For
- Supports macOS, Linux, and Windows.
- Lists JDKs for the user's OS and architecture.
- `.jabbarc` can specify a project JDK version.
- Supports bash, zsh, and fish integration.
- Can coexist with an existing Java installation.
Against
- It does not switch Java globally by itself.
- The repository describes the project as work in progress.
- Some README instructions may be outdated.
The verdict
Jabba provides cross-platform JDK installation and version selection, including a project-level version file. Its community work-in-progress status and the lack of built-in global switching are important considerations.
Who it suits
Jabba suits developers who need to manage different JDK versions across macOS, Linux, and Windows. Project version selection and shell integration may help teams or individuals keep development environments aligned.
Plans and prices
Jabba
Java version management tool · Apache License 2.0
Read 9 Oct 2026 · github.com
On the record
- Custom downloads
- Jabba can install JDK distributions from custom URLs using formats including zip, tgz, tgx, dmg, bin, and exe.github.com · read 9 Oct 2026
- Data location
- Jabba stores its files under ~/.jabba on Linux and macOS and %USERPROFILE%/.jabba on Windows.github.com · read 9 Oct 2026
- Docker
- The README shows using Jabba in a Docker build to install a JDK and then remove the Jabba binary.github.com · read 9 Oct 2026
- Existing JDKs
- Jabba can link a system JDK, and the README says it can coexist with an already installed Java version.github.com · read 9 Oct 2026
- Global Java setting
- Jabba does not include built-in functionality to switch Java globally; the README gives manual platform-specific snippets instead.github.com · read 9 Oct 2026
- Goal
- The project aims to provide a unified way to install and switch JDK versions across macOS, Linux, and Windows.github.com · read 9 Oct 2026
- Index integration
- The JDK index is powered by DiscoAPI.github.com · read 9 Oct 2026
- Install and switch JDKs
- Jabba is intended to install and switch between JDK versions across macOS, Linux, and Windows.github.com · read 9 Oct 2026
- Install methods
- The README documents Homebrew, shell scripts, PowerShell, Scoop, and Docker-based installation or use.github.com · read 9 Oct 2026
- JDK catalog
- Its JDK index is powered by DiscoAPI and lists JDKs for the user's OS and architecture.github.com · read 9 Oct 2026
- JDK sources
- The README lists Oracle JDK, Adopt OpenJDK, Zulu OpenJDK, IBM SDK, GraalVM CE, OpenJDK, Liberica JDK, and Amazon Corretto among supported distributions.github.com · read 9 Oct 2026
- License
- The repository is licensed under Apache License 2.0.github.com · read 9 Oct 2026
- 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.github.com · read 9 Oct 2026
- 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.github.com · read 9 Oct 2026
- 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.github.com · read 9 Oct 2026
- Project wrapper
- The jabba-wrapper scripts let a project use Jabba without installing it globally and select a JDK version through .jabbarc.github.com · read 9 Oct 2026
- Purpose
- Jabba is a Java version manager inspired by nvm and written in Go.github.com · read 9 Oct 2026
- Security
- GitHub reports that the project has no SECURITY.md policy and no published security advisories.github.com · read 9 Oct 2026
The review
Jabba is a free Java version manager for developers who need to install and select JDKs across Linux, macOS, and Windows. It suits shell-oriented users juggling Java requirements between projects. Project-level version selection and broad JDK support are useful strengths, while its work-in-progress status and manual setup for global Java switching call for care.
Overview
Written in Go and inspired by nvm, Jabba brings JDK installation and version selection into a cross-platform command-line tool. It can manage downloaded JDKs, link a system installation, and coexist with an already installed Java version. That makes it practical for keeping project-specific JDKs alongside an existing setup, though users seeking system-wide Java changes will need to follow platform-specific manual steps.
The project describes itself as a community fork and work in progress, and warns that some README instructions may be outdated. It is Apache-2.0 licensed and carries an educational-purpose, use-at-your-own-risk disclaimer. GitHub reports no security policy and no published security advisories, a consideration for teams that require a formal security process.
Key features
JDK catalog and custom downloads
Jabba’s DiscoAPI-powered index lists JDKs for the user’s operating system and architecture. Supported distributions include Oracle, Adopt OpenJDK, Zulu, IBM SDK, GraalVM, OpenJDK, Liberica, and Amazon Corretto. Users can also install from custom URLs in formats including zip, tgz, tgx, dmg, bin, and exe. This breadth helps when a project depends on a particular vendor or distribution, though custom downloads require users to supply the URL themselves.
Version selection and project setup
Users can list remote JDKs, filter versions with semantic version ranges, install a release, and switch among installed versions. A default alias sets the version for new terminals, while a .jabbarc file selects a project’s JDK. The jabba-wrapper scripts let a project use Jabba without a global installation. These options suit developers who want repeatable project-level choices; automatic switching is not supported, so selecting a project version is not fully hands-off.
Shells and deployment
The README documents shell integration for bash, zsh, and fish, with installation instructions for macOS, Linux, and Windows. It also shows installing a JDK in a Docker build and then removing the Jabba binary. Jabba stores its files under ~/.jabba on Linux and macOS, and %USERPROFILE%/.jabba on Windows. Those documented routes cover common development setups, but the work-in-progress warning makes it sensible to check instructions against the current environment.
Pricing
Jabba is free, with the Jabba plan priced as free. The plan is an Apache-2.0-licensed Java version management tool, with no paid tier or trial to weigh. Its free plan does not change the practical trade-offs: it has project version pinning and lockfile support, but no automatic switching, and global Java switching requires manual platform-specific configuration.
Platforms
Jabba supports Linux, macOS, and Windows. Shell integration instructions cover bash, zsh, and fish. Its cross-platform scope makes it a candidate for teams using different operating systems, though each user still needs an environment-specific installation and shell setup.
Who it's for
Jabba is best suited to developers who manage multiple JDK versions, need to pin one for a project, and are comfortable using a shell. Its distribution catalog, custom URL support, and ability to link an existing JDK accommodate varied Java setups. Developers who need automatic project switching or a built-in way to change Java globally should look elsewhere; teams that depend on current, formal security guidance should also weigh the project's work-in-progress status and lack of a published security policy.
Pros and cons
- Broad JDK choice: The DiscoAPI index and support for named distributions, plus custom URLs, give developers several ways to match project requirements.
- Project-level selection: A .jabbarc file and wrapper scripts can associate a JDK with a project without requiring Jabba to be installed globally.
- Works alongside existing Java: Linking a system JDK supports setups that need to retain an existing installation.
- No automatic or built-in global switching: Project selection is not automatic, and system-wide changes rely on manual platform-specific steps.
- Maintenance uncertainty: The community fork is a work in progress and warns that some instructions may be outdated.
- No published security policy: GitHub reports no SECURITY.md file or published advisories, which may not meet every team's review needs.
Alternatives
For broader software and runtime manager options, browse Runtime Version Managers or Development Environment Managers.
- GHCup is a free option for Haskell toolchain installation and management; choose it when managing Haskell tools rather than JDKs.
- rustup is a free alternative for readers seeking a runtime version manager.
- axe-playwright is a free Linux and web option with a Playwright peer dependency.
- PHPBrew is a free Linux and macOS option for PHP; building PHP requires development packages, and unsupported older PHP versions may fail to build.
- asdf is a free, open-source tool version manager for Linux and macOS.
- chruby is a free MIT-licensed option for Linux and macOS that requires bash 3 or later, or zsh.
- elan is a free Lean version manager for Linux, macOS, and Windows, licensed under Apache-2.0 and MIT.
- fnm is a free option for Linux, macOS, and Windows.
Verdict
Choose Jabba if you need a free, cross-platform way to install JDKs from multiple distributions and select a version for each project. Its project file and ability to coexist with an existing Java installation are the strongest reasons to adopt it. Look elsewhere if you need automatic project switching, built-in global Java control, or a project with a more established maintenance and security posture.