Microsoft brings OpenJDK to Windows 10 on ARM

Last year, Microsoft announced the acquisition of jClarity, which used Java workloads on Azure, and increased its support for Java as a platform. Recently, the development team completed the porting OpenJDK™ for Windows 10 on Arm® (AArch64) based devices. At the same time, the work is being submitted to the OpenJDK project in cooperation with Red Hat.

Bruno Borges, Principal Program Manager, Java Engineering Group, said that with higher energy efficiency, the use of ARM64 can greatly reduce the cost of data centers and extend the battery life of personal devices. “For many workloads and user preferences, Windows is the OS of choice, and because of that, the Java Engineering Group moved forward with this port to support those users.”

java 12

Currently, Microsoft has provided two patches on the project. The first patch Webrev P1 helps to integrate support for Windows (LLP64) on Linux + AArch64; the second patch Webrev P2 adds the windows-aarch64 to os_cpu support. The shared code must also be modified during the process. Specific details include:

* In windows_x86 such as the `get_frame_at_stack_banging_point` in `os_windows_x86.cpp`,
* In `os/windows os_windows.cpp` to make it aware of Windows + Arm64
* `os/windows` in `threadCritical_windows.cpp`,
* Windbg support
* `globalDefinitions_visCPP.hpp` in `share/utilities`
* We also added Vectored Exception Handling (VEH) to P2, as it is a requirement on Windows + Arm64 (due to ABI specifications).

This ported version is based on the OpenJDK tip branch (16+) and can run most workloads, including SPEC SERT and all SPEC Java suites. Developers can start using the recently released Visual Studio Code for Windows ARM64 to add core Java extensions, as well as tools such as Apache Maven and Gradle to develop Java applications on Windows 10 ARM64 compatible laptops.