Java versions are easier with jEnv

Java comes in many versions, if not colors. Different projects and dependencies might rely on different versions. This is where jEnv comes in!

3 min read


By Johannes Kvamme


December 16, 2022

Java versions are easier with jEnv

It seems like it was yesterday I started working on a microservice architecture and saw the need for multiple versions of Java. So it had to be just about a day earlier than yesterday that Even Holte wrote his article in Bekk's Christmas calendar about managing java versions on a mac.

As he writes, jEnv is a neat tool for those us in need of multiple java versions installed at the same time


jEnv does not come with its own repository of Java versions, but is a tool for easily changing between versions you have installed yourself.

If you’re on mac or Linux, you can install the official version of jEnv through Homebrew

brew install jenv

Finish your setup by starting jenv on terminal startup by adding it to your .zshrc.

export PATH=”$HOME/.jenv/bin:$PATH”

eval “$(jenv init -)”

To activate jenv, either restart your terminal or source your config file.

source ~/.zshrc


No tool is complete without a set of addons, is it? jenv comes with a set of addons, and some of them are a must have. The plugin export handles setting JAVA_HOME, a variable used by many a program to refer to the directory of your Java executable. Another key plugin, should you use maven, is the maven-plugin. Of course, gradle comes with a plugin too!

Set them up once by running these two commands

jenv enable-plugin export

jenv enable-plugin maven

jenv enable-plugin gradle


Windows-developers: rejoice! New since 2021 is that there do exist a windows version! It is made and maintained by someone privately and with a couple more installation steps, but seemingly works as it should 👏

AdoptOpenJdk + Eclipse Foundation == True

In 2020, AdoptOpenJDK which provided JDKs easily installable through Homebrew, is now a part of the Eclipse Foundation as the Eclipse Adoptium Project. As such, newer Java versions can no longer be found on their github or Homebrew. Instead, they can be found on https://adoptium.net/
The latest version can be installed through

brew install — cask temurin

If you want specific versions, first tap into cask/versions before suffixing the version number.

`brew tap homebrew/cask-versions`

`brew install — cask temurin11`

Then, add it to jEnv by executing jenv add with the full path to the Java variable.

Global / Local Java version

Now that everything is set up, you can start working! The easiest way is to set the Java version you use the most as default. For example, with Java 17: jenv global 17 . In the microservice you are using another version, for example Java 15, simply run jenv local 15 . This version will then be added to file in the directory saving your local version for automatically changing Java version any time you enter that directory. If your team all uses jEnv, this file might be nice to commit to git.

Up next...