Affects: Any supported series
More and more software deployment and development is being done on ARM64 CPU architecture. It would be good if Spring Framework is being regularly tested on ARM64!
Spring uses Concourse CI and I assume it runs the build and tests only on AMD64 because Concourse provides only AMD64 binaries. There is a ticket to provide aarch64 binaries.
Since Spring is pure Java, without native C code, one can say that since JVM supports ARM64 there is nothing to do. And this is correct 99% of the time! But ARM64 has different memory model than AMD64 and concurrency related code may behave differently, e.g. recently Scala Cats project experienced such problem on the new Mac M1 - announcement and demo+explanation.
I see three possible outcomes for this issue:
1) Close the issue with an explanation similar to "Nothing to do! ARM64 is a supported CPU architecture for Spring applications but the JVM has to deal with the platform differences"
2) Add an extra job to ConcourseCI to run the build and tests on ARM64 worker. For this you may use the provided workarounds at https://github.com/concourse/concourse/issues/1379 until an official release is provided. ARM64 support is in their roadmap. I could give you a hand on this task! I work for one of the cloud providers, so I could even give you a free ARM64 VM if you like !
3) Use TravisCI/DroneCI just for ARM64 builds, as unofficial CI. I could provide a Pull Request if you prefer this option!
Comment From: martin-g
I've written a blog article how to run a ConcourseCI worker node on ARM64 - https://martin-grigorov.medium.com/concourseci-on-arm64-229833883ca9
Comment From: sbrannen
Hi @martin-g,
We are not planning on building and testing on ARM64 at the moment. So I'll close this issue for the time being.
However, if it becomes relevant in the future, we will reopen this ticket.
Blagodaria! Thanks for raising the issue.
Comment From: julien-faye
Does that mean that Spring Framework|Boot|Cloud are officially supported on Linux|Mac ARM64 ? As long as there is a JVM for a CPU architecture then it should be fine, right ? Does Spring Framework|Boot|Cloud use any native libraries which may cause problems ?
Comment From: martin-g
Does that mean that Spring Framework|Boot|Cloud are officially supported on Linux|Mac ARM64 ? As long as there is a JVM for a CPU architecture then it should be fine, right ?
Yes, this is the general understanding! See my note about the weaker memory model above. https://blogs.oracle.com/javamagazine/post/java-on-arm-processors-understanding-aarch64-vs-x86 is also a very good article!
Does Spring Framework|Boot|Cloud use any native libraries which may cause problems ?
This is the more common problem a Java developer could face on ARM64. AFAIK Spring does not have any native code in its libraries! But it does use native code transitively, e.g. when you use WebFlux with Netty. So, if Spring WebFlux uses Netty in some more unusual way then it may hit some corner case that fails on ARM64. It is unlikely but it is possible!
I have tested a few big open source projects based on Spring Framework/Boot (e.g. Apache Isis 2.x and Apache ServiceComb) and I didn't face any problems on ARM64!
Comment From: julien-faye
Thank you, @martin-g ! May I have a confirmation of the above from a member of the Spring team ?
Comment From: markjens
+1 to start testing Spring projects on Linux/Mac ARM64! At my job we started evaluating AWS Graviton 2|3 and so far we have found several (small) issues in Apache Phoenix, HBase and Accumulo projects although they are Java based.