Java
Installation
Best resource I've found is How to install Java JDK on macOS.
Latest version
brew install openjdk
As stated in the instructions printed by brew info openjdk
, run:
sudo ln -svfn \ $(brew --prefix)/opt/openjdk/libexec/openjdk.jdk \ /Library/Java/JavaVirtualMachines/openjdk.jdk
Older versions
Older java packages may not work on Apple Silicon.
brew install openjdk@17
sudo ln -svfn \ $(brew --prefix)/opt/openjdk@17/libexec/openjdk.jdk \ /Library/Java/JavaVirtualMachines/openjdk-17.jdk
Switch Versions
To see installed Java versions (assuming they have been properly symlinked):
env
Note that java_home -V
writes the "verbose" part of this output to stderr,
and only writes the current version to stdout.
/usr/libexec/java_home -V
The java's installed via brew:
ls $(brew --prefix)/Cellar | grep openjdk
/usr/libexec/java_home -v 17
You can set JAVA_HOME
to be one of those paths like this:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
GraalVM
Installation
query { repository(name: "graalvm-ce-builds", owner: "graalvm") { releases(orderBy: {field: CREATED_AT, direction: ASC}, last: 1) { nodes { name releaseAssets(first: 100) { nodes { name downloadUrl } } } } } }
(require '[babashka.curl :as curl]) (def token (System/getenv "GITHUB_TOKEN")) (def resp (curl/post "https://api.github.com/graphql" {:headers {"Authorization" (str "bearer " token)} :body (json/generate-string {:query q})})) (def names-and-urls (-> resp :body (json/parse-string true) (get-in [:data :repository :releases :nodes]) first ;; todo: map (get-in [:releaseAssets :nodes]))) ;; Can there be multiple release assets with the same name? (def my-items (filter ;; should this be a reduce? #(= "graalvm-ce-java17-darwin-amd64-22.1.0.tar.gz" (:name %)) names-and-urls)) (-> my-item first :downloadUrl)
foo
#+RESULTS:
"https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java17-darwin-amd64-22.1.0.tar.gz"