{"id":27963204,"url":"https://github.com/windmillcode/jabba","last_synced_at":"2025-07-17T07:06:42.822Z","repository":{"id":171674244,"uuid":"648253915","full_name":"WindMillCode/jabba","owner":"WindMillCode","description":"fork from shykio/jabba a java version manager which keeps up to date with the latest versions of java","archived":false,"fork":false,"pushed_at":"2023-08-22T01:26:45.000Z","size":14999,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-07T19:58:26.067Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WindMillCode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-01T14:44:28.000Z","updated_at":"2023-06-01T14:45:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"990e38fa-1179-4843-a304-81feb22deedb","html_url":"https://github.com/WindMillCode/jabba","commit_stats":null,"previous_names":["windmillcode/jabba"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WindMillCode/jabba","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindMillCode%2Fjabba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindMillCode%2Fjabba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindMillCode%2Fjabba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindMillCode%2Fjabba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WindMillCode","download_url":"https://codeload.github.com/WindMillCode/jabba/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WindMillCode%2Fjabba/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265575509,"owners_count":23790780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-07T19:58:25.245Z","updated_at":"2025-07-17T07:06:42.817Z","avatar_url":"https://github.com/WindMillCode.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jabba ![Latest Version](https://img.shields.io/badge/latest-0.11.2-blue.svg) [![Build Status](https://travis-ci.org/shyiko/jabba.svg?branch=master)](https://travis-ci.org/shyiko/jabba)\n\nJava Version Manager inspired by [nvm](https://github.com/creationix/nvm) (Node.js). Written in Go.\n\nThe goal is to provide unified pain-free experience of **installing** (and **switching** between different versions of) JDK regardless of\nthe OS (macOS, Linux x86/x86_64/ARMv7+, Windows x86_64).\n\n`jabba install`\n- [Oracle JDK](http://www.oracle.com/technetwork/java/javase/archive-139210.html) (latest-version only)\n- [Oracle Server JRE](http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html) (latest-version only),\n- [Adopt OpenJDK](https://adoptopenjdk.net/) \u003csup\u003e(jabba \u003e=0.8.0 is required)\u003c/sup\u003e\n  - Hotspot\n  - [Eclipse OpenJ9](https://www.eclipse.org/openj9/oj9_faq.html)\n- [Zulu OpenJDK](http://zulu.org/) \u003csup\u003e(jabba \u003e=0.3.0 is required)\u003c/sup\u003e\n- [IBM SDK, Java Technology Edition](https://developer.ibm.com/javasdk/) \u003csup\u003e(jabba \u003e=0.6.0 is required)\u003c/sup\u003e\n- [GraalVM CE](https://www.graalvm.org/)\n- [OpenJDK](http://openjdk.java.net/)\n- [OpenJDK Reference Implementation](http://openjdk.java.net/)\n- [OpenJDK with Shenandoah GC](https://wiki.openjdk.java.net/display/shenandoah/Main) \u003csup\u003e(jabba \u003e=0.10.0 is required)\n- [Liberica JDK](https://bell-sw.com/)\n- [Amazon Corretto](https://aws.amazon.com/corretto/)\n\u003c/sup\u003e\n\n... and from custom URLs.\n\n## Installation\n\n#### macOS / Linux\n\n\u003e (in bash/zsh/...)\n\n```sh\nexport JABBA_VERSION=...\ncurl -sL https://raw.githubusercontent.com/WindMillCode/jabba/master/install.sh | bash \u0026\u0026 . ~/.jabba/jabba.sh\n```\n\n\u003e (use the same command to upgrade)\n\nThe script modifies common shell rc files by default. To skip these provide the `--skip-rc` flag to `install.sh` like so:\n\n```sh\nexport JABBA_VERSION=...\ncurl -sL https://raw.githubusercontent.com/WindMillCode/jabba/master/install.sh | bash -s -- --skip-rc \u0026\u0026 . ~/.jabba/jabba.sh\n```\n\nMake sure to source `jabba.sh` in your environment if you skip it:\n\n```sh\nexport JABBA_VERSION=...\n[ -s \"$JABBA_HOME/jabba.sh\" ] \u0026\u0026 source \"$JABBA_HOME/jabba.sh\"\n```\n\n\u003e In [fish](https://fishshell.com/) command looks a little bit different -\n\u003e export JABBA_VERSION=...\n`curl -sL https://raw.githubusercontent.com/WindMillCode/jabba/master/install.sh | bash; and . ~/.jabba/jabba.fish`\n\n\u003e If you don't have `curl` installed - replace `curl -sL` with `wget -qO-`.\n\n\u003e If you are behind a proxy see -\n[curl](https://curl.haxx.se/docs/manpage.html#ENVIRONMENT) /\n[wget](https://www.gnu.org/software/wget/manual/wget.html#Proxies) manpage.\nUsually simple `http_proxy=http://proxy-server:port https_proxy=http://proxy-server:port curl -sL ...` is enough.\n\n**NOTE**: The brew package is currently broken. We are working on a fix.\n\n#### Docker\n\nWhile you can use the same snippet as above, chances are you don't want jabba binary \u0026 shell\nintegration script(s) to be included in the final Docker image, all you want is a JDK. Here is the `Dockerfile` showing how this can be done:\n\n```dockerfile\nFROM buildpack-deps:jessie-curl\n\nRUN curl -sL https://raw.githubusercontent.com/WindMillCode/jabba/master/install.sh | \\\n    JABBA_COMMAND=\"install 1.17.0-4 -o /jdk\" bash\n\nENV JAVA_HOME /jdk\nENV PATH $JAVA_HOME/bin:$PATH\n```\n\n\u003e (when `JABBA_COMMAND` env variable is set `install.sh` downloads `jabba` binary, executes specified command and then deletes the binary)\n\n```sh\n$ docker build -t \u003cimage_name\u003e:\u003cimage_tag\u003e .\n$ docker run -it --rm \u003cimage_name\u003e:\u003cimage_tag\u003e java -version\n\njava version \"1.17.0-4....\n```\n\n#### Windows 10\n\n\u003e (in powershell)\n\n```powershell\n[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\nInvoke-Expression (\n  Invoke-WebRequest https://raw.githubusercontent.com/WindMillCode/jabba/master/install.ps1 -UseBasicParsing\n).Content\n```\n\n\u003e (use the same command to upgrade)\n\n## Usage\n\n```sh\n# list available JDK's\njabba ls-remote\n# you can use any valid semver range to narrow down the list\njabba ls-remote zulu@~1.8.60\njabba ls-remote \"*@\u003e=1.6.45 \u003c1.9\" --latest=minor\n\n# install Oracle JDK\njabba install 1.17.0-4\n# install Oracle Server JRE\njabba install sjre@1.8\n# install Adopt OpenJDK (Hotspot)\njabba install adopt@1.8-0\n# install Adopt OpenJDK (Eclipse OpenJ9)\njabba install adopt-openj9@1.9-0\n# install Zulu OpenJDK\njabba install zulu@1.8\njabba install zulu@~1.8.144 # same as \"zulu@\u003e=1.8.144 \u003c1.9\"\n# install IBM SDK, Java Technology Edition\njabba install ibm@1.8\n# install GraalVM CE\njabba install graalvm@1.0-0\n# install OpenJDK\njabba install openjdk@1.10-0\n# install OpenJDK with Shenandoah GC\njabba install openjdk-shenandoah@1.10-0\n\n# install from custom URL\n# (supported qualifiers: zip (since 0.3.0), tgz, tgx (since 0.10.0), dmg, bin, exe)\njabba install 1.8.0-custom=tgz+http://example.com/distribution.tar.gz\njabba install 1.8.0-custom=tgx+http://example.com/distribution.tar.xz\njabba install 1.8.0-custom=zip+file:///opt/distribution.zip\n\n# uninstall JDK\njabba uninstall zulu@1.6.77\n\n# link system JDK\njabba link system@1.8.72 /Library/Java/JavaVirtualMachines/jdk1.8.0_72.jdk\n\n# list all installed JDK's\njabba ls\n\n# switch to a different version of JDK (it must be already `install`ed)\njabba use adopt@1.8\njabba use zulu@~1.6.97\n\necho \"1.8\" \u003e .jabbarc\n# switch to the JDK specified in .jabbarc (since 0.5.0)\njabba use\n\n# set default java version on shell (since 0.2.0)\n# this version will automatically be \"jabba use\"d every time you open up a new terminal\njabba alias default 1.8\n```\n\n\u003e `.jabbarc` has to be a valid YAML file. JDK version can be specified as `jdk: 1.8` or simply as `1.8`\n(same as `~1.8`, `1.8.x` `\"\u003e=1.8.0 \u003c1.9.0\"` (mind the quotes)).\n\n\u003e jsyk: **jabba** keeps everything under `~/.jabba` (on Linux/Mac OS X) / `%USERPROFILE%/.jabba` (on Windows). If at any point of time you decide to uninstall **jabba** - just remove this directory.\n\nFor more information see `jabba --help`.\n\n## Development\n\n\u003e PREREQUISITE: [go1.8](https://github.com/moovweb/gvm)\n\n```sh\ngit clone https://github.com/shyiko/jabba $GOPATH/src/github.com/shyiko/jabba\ncd $GOPATH/src/github.com/shyiko/jabba\nmake fetch\n\ngo run jabba.go\n\n# to test a change\nmake test # or \"test-coverage\" if you want to get a coverage breakdown\n\n# to make a build\nmake build # or \"build-release\" (latter is cross-compiling jabba to different OSs/ARCHs)\n```\n\n## FAQ\n\n**Q**: What if I already have `java` installed?\n\nA: It's fine. You can switch between system JDK and `jabba`-provided one whenever you feel like it (`jabba use ...` / `jabba deactivate`).\nThey are not gonna conflict with each other.\n\n**Q**: How do I switch `java` globally?\n\nA: **jabba** doesn't have this functionality built-in because the exact way varies greatly between the operation systems and usually\ninvolves elevated permissions. But. Here are the snippets that \u003cu\u003eshould\u003c/u\u003e work:\n\n* Windows\n\n\u003e (in powershell as administrator)\n\n```\n# select jdk\njabba use ...\n\n# modify global PATH \u0026 JAVA_HOME\n$envRegKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment', $true)\n$envPath=$envRegKey.GetValue('Path', $null, \"DoNotExpandEnvironmentNames\").replace('%JAVA_HOME%\\bin;', '')\n[Environment]::SetEnvironmentVariable('JAVA_HOME', \"$(jabba which $(jabba current))\", 'Machine')\n[Environment]::SetEnvironmentVariable('PATH', \"%JAVA_HOME%\\bin;$envPath\", 'Machine')\n```\n\n* Linux\n\n\u003e (tested on Debian/Ubuntu)\n\n```\n# select jdk\njabba use ...\n\nsudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000\nsudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000\n```\n\n\u003e To switch between multiple GLOBAL alternatives use `sudo update-alternatives --config java`.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindmillcode%2Fjabba","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwindmillcode%2Fjabba","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindmillcode%2Fjabba/lists"}