Microsoft builds of OpenJDK for AArch64 Platforms
This project holds binaries and documentation for Microsoft's port of OpenJDK for Windows on Arm64 devices, as well as Arm64 binaries built by Microsoft for all operating systems supported by the OpenJDK project.
General Access (GA) binaries are available under the releases tab.
The JEP can be found at https://openjdk.java.net/jeps/388.
This JEP was tracked under the JDK-8248496 work item and they have been delivered in OpenJDK JDK16.
All source code changes to OpenJDK, that were required to implement this port, were being tracked under JDK-8248238 Implementation of JEP: Windows AArch64 Support.
The source code is merged into JDK 16 and is now a part of the OpenJDK project. Here's a link to the source code for Microsoft's GA build of OpenJDK 16.0.2.
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:
We rely on VS 2019 and the following individual components: - MSVC v142 - VS 2019 C++ ARM64 build tools (latest) - MSVC v142 - VS 2019 C++ x64/x86 build tools (latest) - C++ ATL for latest v142 build tools (ARM64) - C++ ATL for latest v142 build tools (x86 & x64) - C++ MFC for latest v142 build tools (ARM64) - C++ MFC for latest v142 build tools (x86 & x64) - Windows 10 SDK (10.0.18362.0)
Other dependencies are: - Cygwin - Boot and build JDK: - Java 11 is needed to build JDK 11 - Java 16 is needed to build JDK 16
$ bash configure --openjdk-target=aarch64-unknown-cygwin --with-boot-jdk=
Note that the backport is not merged into the official OpenJDK repository yet. A recent version of our branch can be checked out from https://github.com/openjdk/jdk11u/pull/2.
Configure this way:
$ export DEVKIT="/cygdrive/c/work/VS2019-16.6.1-devkit" $ export BOOTJDK="/cygdrive/c/work/jdk_x64_windows/jdk-11.0.10+8" $ bash configure \ --openjdk-target=aarch64-unknown-cygwin \ --with-devkit="$DEVKIT" \ --with-build-devkit="$DEVKIT" \ --with-build-jdk=$BOOTJDK \ --with-boot-jdk=$BOOTJDK
Note that: * Devkit is required and must be created from a VS 2019 installation using the createWindowsDevkit2019.sh script. Please note that this file is not present in the JDK 11.0.12 sources (available from 11.0.13), it needs to be downloaded separately. This will no longer be necessary once the port is upstreamed. * Both
boot-jdkmust be specified. * Since we are cross-compiling, the build must happen on a
x86_64machine with the
--openjdk-target=aarch64-unknown-cygwinspecified 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 automatically supports the cross-compilation environment for Windows has not been backported to JDK 11u.
General Access (GA) Arm64 binaries are available for the following operating systems under the releases tab:
1 Upstreaming in progress. 2 Coming soon.
Please send any emails to [email protected].
Microsoft is committed to working on an upstream first approach, so please reach out through the mailing list above. If you do want to contact the Microsoft team directly, please email [email protected]