c69ed0d865
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. |
||
---|---|---|
.github | ||
.gitignore | ||
ASSEMBLY_EXCEPTION | ||
Arm64_systems.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
JTRegtests.md | ||
LICENSE | ||
README.md | ||
SECURITY.md | ||
SPECJBB2015-test-matrices.md | ||
hsdis-aarch64.dll | ||
hsdis-aarch64_BINUTILS.dylib | ||
hsdis-aarch64_LLVM.dylib | ||
wkload-status-on-Win+Arm64.md |
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.
- See our Contributing Guide. Please note source code contributions are welcome through the OpenJDK project.
- Our Code of Conduct.
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
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.
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.