微軟在ARM 上成功移植OpenJDK for Windows 10
去年微軟宣布收購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應用。