Installation on macOS Platforms

Oracle GraalVM is available for macOS on x64 and AArch64 architectures.

Note that in macOS, the JDK installation path is: _/Library/Java/JavaVirtualMachines//Contents/Home_.

Follow these steps to install Oracle GraalVM:

  1. Navigate to Oracle Java Downloads. Select the preferred Oracle GraalVM version, 17 or 20 for the Java version, macOS for the operating system, and the architecture. Start downloading.

  2. Unzip the archive:
    tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz
    

    Alternatively, open the file in the Finder.

  3. Move the downloaded package to its proper location, the /Library/Java/JavaVirtualMachines directory. Since this is a system directory, sudo is required:
    sudo mv graalvm-jdk-<version>_macos-<architecture> /Library/Java/JavaVirtualMachines
    

    To verify if the move is successful and to get a list of all installed JDKs, run /usr/libexec/java_home -V.

  4. There can be multiple JDKs installed on the machine. The next step is to configure the runtime environment:
    • Set the value of the PATH environment variable to the GraalVM bin directory:
       export PATH=/Library/Java/JavaVirtualMachines/<graalvm>/Contents/Home/bin:$PATH
      
    • Set the JAVA_HOME environment variable to resolve to the installation directory:
       export JAVA_HOME=/Library/Java/JavaVirtualMachines/<graalvm>/Contents/Home
      
  5. To check whether the installation was successful, run the java -version command.

Optionally, you can specify Oracle GraalVM as the default JRE or JDK installation in your Java IDE.

Installation Notes

On JAVA_HOME Command

The information property file, Info.plist, is located in the top-level Contents/ directory. This allows GraalVM to integrate with the macOS-specific /usr/libexec/java_home mechanism. Depending on other installed JDKs, running /usr/libexec/java_home -v<version> may return /Library/Java/JavaVirtualMachines/<graalvm>/Contents/Home. To view all JVMs recognized by java_home, run /usr/libexec/java_home -V. This command lists JVMs in descending version order.