Microsoft successfully ports OpenJDK for Windows 10 on ARM

Last year Microsoft announced the acquisition of jClarity, which uses Java workloads on Azure to increase platform support for Java, and recently completed the first phase of porting OpenJDK for Windows 10 on Arm-based devices. The work is also being submitted to the OpenJDK project in collaboration with Red Hat.

Microsoft successfully ports OpenJDK for Windows 10 on ARM

Bruno Borges, Chief Program Manager, Microsoft Java Engineering Group, says that with greater energy efficiency, arm64 can significantly reduce data center costs and extend the battery life of personal devices, and that “Windows is the operating system of choice for many workloads and user preferences”, so the Java Engineering Group uses this ported version to support this class of users.

Microsoft currently provides two patches on this project, the first patch, Webrev P1, to help integrate support for Windows (LLP64) on Linux and AArch64, and the second, Webrev P2, to add support for Windows-aarch64 in the os_cpu. The sharing code must also be modified in the process, with specific details including:

In Windows_x86, for example, in the get_frame_at_stack_banging_point in os_windows_x86.cpp,

os/windows os_windows.cpp to make it aware of Windows and Arm64

os/windows in threadCritical_windows.cpp,

Windbg Support

globalDefinitions_visCPP.hpp in share/utilities

Vector exception handling (Vectored Exception Handling, VEH) has also been added to P2, which is required on Windows plus Arm64 (due to the ABI specification).

In addition, some important changes to cpu/aarch64 have been made in Webrev P2 because the R18 point is pointed to the TEB on Windows plus Arm64.

C2 has been successfully ported and the server version (cross-compiled environment) can be built, while two additional patches are under development:

Webrev P3: Extend VEH to x86-64 on Windows.

Webrev P4: Improvements to share cross-platform code on Windows will send separate patches as soon as possible.

Although the feature is still 100% complete, this ported version is based on OpenJDK tip branch (16 plus) 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, Gradle, and other tools to develop Java applications on Windows 10 ARM64 compatible laptops.