Oracle’s Java SE Mobile and Embedded Lead Bob Vandette announced plans to open source their Linux ARM 32 and 64 bit ports of Java SE for JDK 9. This would allow it to be developed under the OpenJDK project.
This allows 32 and 64 bit ARM processors to run JDK 9. It would provide client, server and minimal Hotspot VMs. It also provides the ability to build Linux ARM interpreter runtimes statically for platforms that do not support dynamic code generation. The code provides a 32-bit and 64-bit implementation, and will focus solely on JDK 9.
ARM (Advanced RISC Machine) is a family of reduced instruction set computing (RISC) architectures for computer processors. ARM specialise in microprocessors. They can be used in anything from servers to sensors and the Raspberry Pi.
Back in July 2014, there were no plans to open source the ARM project. Oracle and ARM were working to port JDK 8 to 64-bit ARMv8 microarchitecture. This was to support the introduction of 64-bit ARM-based servers. Oracle charged per-unit license fees for embedded ports to fund the development.
At the same time, the AArch64 Port project provided an open source ARM 64-bit port. This provided OpenJDK on the Linux/AArch64 platform that could be integrated into JDK 8. AArch64 is the 64-bit mode of ARMv8: it is not compatible with ARM 32-bit. When asked why the two projects didn’t join forces, Oracle VP of Product Management Henrik Stahl doubted their success:
“I will also mention that while we are positive to community efforts to port OpenJDK to new hardware architectures – including those sponsored by Red Hat – history has shown that such efforts are not likely to be successful unless they receive significant and continuous resourcing (by a large organization). All community ports I have seen so far have started out well but then failed to be maintained.”
Since then, the AArch32 Port Project started to provide OpenJDK on the Linux/AArch32 platform. Contrary to concerns, the AArch32 and AArch64 Port Projects have been well maintained, with contributors from Red Hat and Azul.
How to merge two ports
Now there are competing projects. One of the main reasons cited for opening up Oracle’s code is to try to avoid having two different 32/64-bit ARM ports in OpenJDK. The goal of open sourcing Oracle’s ARM ports is to integrate them into the mainline repositories. There is no intention to open up the JDK 8 ARM ports. Oracle are considering either creating a new OpenJDK project or contributing to the existing AArch 32 Project.
Some AArch32 port contributors such as Edward Nevill welcomed the effort: “[This is] great news, and something I have been looking forward to for some time.”
However some, such as Andrew Haley of Red Hat, were positive but raised concerns about the practical problems. The OpenJDK AArch64 port is ready for release as part of OpenJDK 9, and is past Feature Complete. The AArch32 port is new and the C1 interpreter is being contributed by Azul. How to avoid having two competing ports in the OpenJDK source tree (which could dilute and split community efforts) is also a concern. The AArch32 Port Project is not necessarily the most logical place for Oracle’s code, that also provides 64-bit ports.
However Bob Vandette is hopeful: “I also agree that it’s not real practical to completely merge these two ports. We might be able to pick up a few improvements such as intrinsics from one or the other but these ports are quite different. We chose, for example, to share as much of the ARM assembler for both 32 and 64 within the same hotspot/src/cpu/arm directory in order to reduce the overhead of adding new features to all architectures.”
Late but not unwelcome
It may be a little late, and consequently face challenges merging with the existing AArch projects. However it is a positive step, with contributors such as Kostya Zolotnikov from Azul welcoming it too. “…we think it is more logical to have the evolutionary development of OpenJDK ARM port based on the current community expertise and code base. In either case, we are happy about your activity and would be glad to see your participation and contributions!”