Need help with openjdk-aarch64?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

microsoft
265 Stars 14 Forks GNU General Public License v2.0 42 Commits 0 Opened issues

Description

Microsoft builds of OpenJDK for AArch64 Platforms

Services available

!
?

Need anything else?

Contributors list

OpenJDK for Windows 10 ARM64

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.

JDK Enhancement Proposal

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.

Source Code

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.

Supported Windows Versions

  • Windows 10
  • Windows Server 2016

Supported Garbage Collectors

  • Serial GC
  • Parallel GC
  • G1 GC
  • ZGC
  • Shenandoah GC

FAQ

Is this build TCK'ed?

Yes.

Where can I test this build?

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.

What Java tools run on this build?

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

Build dependencies

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

Building JDK 16 from github.com/openjdk/jdk.git

$ bash configure
          --openjdk-target=aarch64-unknown-cygwin
          --with-boot-jdk=

Building JDK 11

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

build-jdk
and
boot-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.
Why is this more complicated than on >= jdk16u?

The WINENV patch that automatically supports the cross-compilation environment for Windows has not been backported to JDK 11u.

OpenJDK binaries built by Microsoft for ARM64 devices

General Access (GA) Arm64 binaries are available for the following operating systems under the releases tab:

| | Linux | Windows | MacOS | |--------|-------|---------|-------| | JDK 11 | :floppy_disk: | :floppy_disk:1 | :x:2 | | JDK 16 | :floppy_disk: | :floppy_disk: | :floppy_disk: |

1 Upstreaming in progress. 2 Coming soon.

Feedback

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]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.