去年微軟宣佈收購 jClarity,用在了 Azure 上的 Java 工作負載,以平臺之勢加大了對 Java 的支持,而近期,開發團隊完成了在基於 Arm(AArch64)的設備上移植適用於 Windows 10 的 OpenJDK 的第一階段。同時該工作正在與 Red Hat 合作提交給 OpenJDK 項目。
微軟 Java 工程組首席程序經理 Bruno Borges 介紹,憑藉更高的能源效率,使用 ARM64 可以大大降低數據中心的成本並延長個人設備的電池壽命,而“對於許多工作負載和用戶首選項,Windows 是首選的操作系統”,因此 Java 工程組藉助此移植版以支持這一類用戶。
目前微軟在該項目上提供了 2 個補丁,第一個補丁 Webrev P1 有助於在 Linux + AArch64 上集成對 Windows(LLP64)的支持;第二個補丁 Webrev P2 在 os_cpu 中添加了對 windows-aarch64 的支持。過程中還必須修改共享代碼,具體細節包括:
- 在 Windows_x86 中,例如在 os_windows_x86.cpp 中的 get_frame_at_stack_banging_point,
- os/windows os_windows.cpp 中,使其知曉 Windows + Arm64
- threadCritical_windows.cpp 中的 os/windows,
- Windbg 支持
- share/utilities 中的 globalDefinitions_visCPP.hpp
- 還向 P2 添加了向量異常處理(Vectored Exception Handling,VEH),這是 Windows + Arm64 上的要求(由於 ABI 規範)。
另外,Webrev P2 中還對 cpu/aarch64 進行了一些重要的更改,因爲在 Windows + Arm64 上,將 R18 點指向 TEB。
目前已經成功移植了 C2,並且可以構建服務器版本(交叉編譯環境),同時另外兩個補丁也正在開發中:
- Webrev P3:在 Windows 上將 VEH 擴展到 x86-64。
- Webrev P4:Windows 上共享跨平臺代碼的改進,將會盡快發送單獨的補丁。
儘管仍未 100% 完成功能,但是此移植版本基於 OpenJDK tip branch(16+),可以運行大多數工作負載,包括 SPEC SERT 以及所有 SPEC Java 套件。開發人員可以開始使用最近發佈的 Visual Studio Code for Windows ARM64 中添加的核心 Java 擴展,以及 Apache Maven、Gradle 等工具在 Windows 10 ARM64 兼容筆記本電腦上開發 Java 應用。