This project holds the documentation for Microsoft's port of OpenJDK for Windows on ARM64 devices.
- See our Contributing Guide. Please note source code contributions are welcome through the OpenJDK project.
- Our Code of Conduct.
General Access (GA) binaries can be downloaded from the official release page.
A number of older builds can be found under the releases tab.
The JEP can be found at https://openjdk.java.net/jeps/388.
The work was tracked under the JDK-8248496 item and has been delivered in OpenJDK 16. The work was later backported to JDK 11.
Source code changes required to implement this port were tracked under JDK-8248238.
The port was merged into OpenJDK 16 and since then has been part of the OpenJDK mainline. Like previously stated, the port was later backported to JDK 11.
- Windows 10/11
- Windows Server 2016
- Serial GC
- Parallel GC
- G1 GC
- ZGC
- Shenandoah GC
Yes.
We have uploaded our ARM64 test systems information here. You can find retail laptops with ARM64 and Windows, such as HP Enxy x2, Asus NovaGo, and the Microsoft Surface Pro X.
For additional information, please visit the Works on Arm website.
The following tools have been tested, though not extensively, and did not show any immediate issues:
- Apache Maven
- Apache Ant
- Gradle
- Visual Studio Code Java Extension Pack
The native Visual Studio build toolset for ARM64 has become available in Visual Studio 2022 17.3 Preview2 (as of June 2022). To find out more information on how to setup this version of Visual Studio please visit the Microsoft Docs. For those not using the native Visual Studio build toolset for ARM64, the JDK can be cross-compiled for Windows ARM64. This means that the build happens on an x64/x86 machine, but the resulting binaries run on ARM64.
We recommend using the latest version of Visual Studio available. At a minimmum VS 2019 (16.8) is required. The following individual components are needed (with example versions):
- MSVC v143 - VS 2022 C++ ARM64 build tools (Latest)
- MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)
- C++ ATL for latest v143 build tools (ARM64)
- C++ ATL for latest v143 build tools (x86 & x64)
- C++ MFC for latest v143 build tools (ARM64)
- C++ MFC for latest v143 build tools (x86 & x64)
- Windows 10 SDK (10.0.18362.0)
Other dependencies are:
- Cygwin
- Boot and build JDK:
- To build JDK 11 for ARM64, x86/x64 JDK 11 binaries are needed.
- To build the latest JDK for ARM64, x86/x64 binaries of one of the latest 3 JDK versions are needed. At the time of writing (June 2022) one can use either JDK 17, 18 or 19 (not yet released).
- These binaries can be obtained from any vendor.
Sources are available at https://github.com/openjdk/jdk.
The usual build process can be used with the following configure arguments:
$ bash configure
--openjdk-target=aarch64-unknown-cygwin
--with-boot-jdk=<path-to-x86_64-JDK>
Windows-ARM64 support is available as part of the official OpenJDK 11 Updates project starting from 11.0.14.
Sources are available at https://github.com/openjdk/jdk11u.
An example minimal configuration:
$ export DEVKIT="/cygdrive/c/dev/jdk11u/build/devkit/VS2022-17.1.0-devkit"
$ export BOOTJDK="/cygdrive/c/progra~1/AdoptOpenJDK/jdk-11.0.10.9-hotspot"
$ bash configure \
--openjdk-target=aarch64-unknown-cygwin \
--with-devkit="$DEVKIT" \
--with-build-devkit="$DEVKIT" \
--with-build-jdk=$BOOTJDK \
--with-boot-jdk=$BOOTJDK
Note that:
- A so-called devkit is required and can be generated by running the following script: VS 2019. The VS 2022 script should be out shortly.
- Both
build-jdk
andboot-jdk
must be specified. - Since we are cross-compiling, the build must happen on a
x86_64
machine with the--openjdk-target=aarch64-unknown-cygwin
specified as shown above. - If you want to enable Shenandoah GC in this build, you have to explicitly enable it via:
--with-jvm-features=shenandoahgc
. - The ARM64 flavor of the fixpath binary is available under the releases tab and has to be placed at the root of the source tree.
The WINENV patch that adds support for cross-compilation on Windows is not expected to be backported to JDK 11.
-
Microsoft is committed to working on an upstream first approach, so for port related questions, please reach out through the aarch64-port-dev@openjdk.java.net mailing list. If you do want to contact the Microsoft team directly, please email openjdk-aarch64@microsoft.com
-
To provide feedback or to report issues regarding Microsoft's Build of OpenJDK, please reach out to us @github.com/microsoft/OpenJDK. Thank you.