I was able to play around with the latest early access binary for Project Loom by downloading the file from http://jdk.java.net/loom/, extracting it (I had a directory called jdk-18
), setting the JAVA_HOME
env var to the jdk-18
directory, and adding the bin
subdirectory for the build to the beginning of my PATH
env var. I was able to use the build to compile and run a Java program using the virtual thread preview features.
But this feels like a very manual process. I like how SDKMAN manages JDKs on my system. How can I set up this early access build (or any other JDK build for that matter) as an entry in the list of JDKs managed by SDKMAN, so that I could change to it, for example, by typing sdk default java <my-jdk-18-name>
?
CodePudding user response:
Joggling PATH variable for managing mulptiple JDK's was the only straightforward way of doing things for many years, however general automation of this process slowly improves.
Currently on I use jenv, generally any POSIX OS should be supported, I use it on Mac (brew install jenv
).
Its main drawback for me — if you include its init $(jenv init -)
in terminal RC script, it will delay terminal start-up for a few seconds.
Switch for particular folder would look like:
jenv local <my-custom-jdk-name>
CodePudding user response:
SDKMAN has a feature called "Install Local Version(s)" (https://sdkman.io/usage#localversion).
So, to set up a custom build of the JDK with SDKMAN, I can download and install the JDK wherever I want and then link it to SDKMAN so that it's useable like any other JDK managed by SDKMAN:
wget https://download.java.net/java/early_access/loom/7/openjdk-18-loom 7-288_linux-x64_bin.tar.gz
tar -xf openjdk-18-loom 7-288_linux-x64_bin.tar.gz
mv jdk-18/ 18-loom
sdk install java 18-loom $(realpath 18-loom/)
After installing and linking:
~/javas > sdk default java 18-loom
Default java version set to 18-loom
~/javas > which java
/home/matt/.sdkman/candidates/java/current/bin/java
~/javas > java --version
openjdk 18-loom 2022-03-15
OpenJDK Runtime Environment (build 18-loom 7-288)
OpenJDK 64-Bit Server VM (build 18-loom 7-288, mixed mode, sharing)