Microsoft builds of OpenJDK for AArch64 Platforms
Перейти к файлу
Bernhard Urban-Forster c69ed0d865 hsdis: add binutils based disassembler for macos/aarch64
I put together hsdis-aarch64_LLVM.dylib around a year ago based on the
work Ludovic did with the LLVM based disassembler for Windows/AArch64.
However, it doesn't seem to work for most recent jdk-tip anymore, and in
the meanwhile binutils does have support for macOS/AArch64. I'll leave
both of them in the repository, maybe hsdis-aarch64_LLVM.dylib could be
useful for older versions, but usually hsdis-aarch64_BINUTILS.dylib
should be used.
2021-10-05 20:17:47 +02:00
.github Update PR template to simplify it 2020-06-25 13:42:37 +01:00
.gitignore Add templates to strengthen community involvement 2020-06-25 13:37:09 +01:00
ASSEMBLY_EXCEPTION Initial commit 2020-06-24 08:26:27 -07:00
Arm64_systems.md Update Arm64_systems.md 2021-03-02 07:49:51 -06:00
CODE_OF_CONDUCT.md Initial commit 2020-06-24 08:26:27 -07:00
CONTRIBUTING.md Update grammar in CONTRIBUTING.md 2020-06-25 17:13:31 +01:00
JTRegtests.md Update JTRegtests.md 2021-06-29 13:36:49 -05:00
LICENSE Initial commit 2020-06-24 08:26:27 -07:00
README.md VS 2019 devkit script is now in jdk11u-dev 2021-08-10 13:50:09 -07:00
SECURITY.md Initial commit 2020-06-24 08:26:27 -07:00
SPECJBB2015-test-matrices.md Update SPECJBB2015-test-matrices.md 2021-06-29 13:35:31 -05:00
hsdis-aarch64.dll rename windows/aarch64 hsdis file to proper name 2021-10-05 17:36:08 +02:00
hsdis-aarch64_BINUTILS.dylib hsdis: add binutils based disassembler for macos/aarch64 2021-10-05 20:17:47 +02:00
hsdis-aarch64_LLVM.dylib hsdis: add binutils based disassembler for macos/aarch64 2021-10-05 20:17:47 +02:00
wkload-status-on-Win+Arm64.md Update wkload-status-on-Win+Arm64.md 2021-07-19 14:54:50 -05:00

README.md

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=<path-to-x86_64-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 make/devkit/createWindowsDevkit2019.sh script.
  • 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 💾 💾1 2
JDK 16 💾 💾 💾

1 Upstreaming in progress. 2 Coming soon.

Feedback

Please send any emails to aarch64-port-dev@openjdk.java.net.

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 openjdk-aarch64@microsoft.com.