Announcing OpenJDK for Windows 10 on ARM

Bruno Borges

Last year Microsoft announced the acquisition of jClarity to optimize Java™ workloads on Azure. This kicked off the beginning of our Java Engineering Group in Microsoft’s Developer Division, helping deliver on the vision of any developer, any app, and any platform.

Today, our team is excited to share that it has completed the first phase of porting OpenJDK™ for Windows 10 on Arm® (AArch64) based devices, and now we are in the process of upstreaming the initial changes to the OpenJDK project. The port, led by Monica Beckwith with support from Ludovic Henry and other engineers from the team and partners, has been submitted to the OpenJDK project in partnership with Red Hat. An Early Access binary is available via our GitHub project, and developers are welcome to download and try it.

Read Monica’s message to the OpenJDK mailing list.

Microsoft has seen great enthusiasm in the market and the increased adoption of ARM64 architecture on laptops, and recently on servers. With much higher energy efficiency, the use of ARM64 can drastically 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.

While still not 100% feature complete, this port is based on the OpenJDK tip branch (16+) and can run most workloads, including SPEC SERT – after our contributions towards the new platform combination gets accepted – and all of the SPEC Java suites. Developers can start developing Java on Windows 10 ARM64 compatible laptops, like the Surface Pro X, with the core Java extensions on the recently-announced Visual Studio Code for Windows ARM64 along with traditional tools like Apache Maven, Gradle, and others – check out the VS Code for Java May Update. More details on the current limitations of the port, and roadmap, can be found on Monica’s message to the OpenJDK project, and on the GitHub repo’s README.

While optimizing Java for Azure remains one of our core goals, it is crucial to share that we are involved in other initiatives to make the Java platform even better on areas besides the Cloud. Microsoft in itself is heavily invested in Java as it can be seen from this slide below, recently presented by Martijn Verburg at this year’s Microsoft Build session “Modern Java for Cloud Developers.”

How Microsoft uses Java

Microsoft’s usage of Java is why our team has committed to participate in the Java ecosystem and collaborate with the OpenJDK project beyond Cloud specific needs. We have started with some small but significant contributions to get used to the OpenJDK process, landed some non-trivial patches, and sparked interesting discussions with other OpenJDK engineers, like Stack Allocation and the Current State of JVM Escape Analysis presented by Charlie Gracie at the latest JFokus conference.

Recent Microsoft Contributions to OpenJDK

  1. 8231863: Crash if classpath is read from @argument file and the main gets option argument
  2. 8234076: JVM crashes on Windows 10 using –module=NAME
  3. 8236179: C1 register allocation error with T_ADDRESS
  4. 8236981: Remove ShenandoahTraversalUpdateRefsClosure
  5. 8220503: Move ShenandoahTerminatorTerminator::should_exit_termination out of header
  6. 8230853: Shenandoah: replace leftover assert(is_in(…)) with rich asserts
  7. 8231668: Remove ForceDynamicNumberOfGCThreads
  8. 8241067: Shenandoah: improve ShenandoahNMethod::has_cset_oops arguments
  9. 8241122: Remove unimplemented InlineTree constructor definition from parse.hpp
  10. 8240972: macOS codesign fail on macOS 10.13.5 or older
  11. 8241142: Shenandoah: should not use parallel reference processing with single GC thread

So make sure you give this OpenJDK build a try if you can, whether with pure Java projects with Gradle or Maven or even with Visual Studio Code. We are excited to continue collaborating with OpenJDK and the Java community.

Thank you!


Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Arm is a registered trademark of Arm Limited (or its subsidiaries) in the US and/or elsewhere.


Discussion is closed. Login to edit/delete existing comments.

  • Rune 0

    Can you point to any directions on how to get this working on Surface X ? I’ve tried to download the binaries, but I get this error:

    > java.exe 
    Error: could not open `C:\Program Files (Arm)\Java\lib\jvm.cfg'
    • Bernhard Urban-ForsterMicrosoft employee 0

      Hey Rune,

      could you be a bit more specific? Are you sure you have the whole archive unpacked? How do you start java.exe?

      Thank you,

  • Wil Wilder Apaza Bustamante 0

    It’s truly amazing! That’s wonderful to have all of these great resources in one spot. Will go through and give you more feedback.

    Best Regards,

  • Sandeep Gupta 0

    Thats a cool update. I like “Debugging enhancements” section and will give it a try

    Best Regards,

  • Ravinder Bharti 0

    Hey thanks Bruno for sharing deep information on OpenJDK. I have a question if you could answer, it will be a great.
    Under JDK-8244151 – the components of security-libs was not backpot on CPU ? How can we deploy them on generic CPU loader.

    Ravinder Bharti

Feedback usabilla icon