Java 21 JDK for arm32 🚀

The Adoptium team stopped supporting arm32 hardware with Java 21, but many still rely on arm32 devices (like older Raspberry Pis) and OS.
(https://adoptium.net/de/supported-platforms/)

To keep OpenEMS up-to-date and accessible, we’ve built our own packages:
https://openems.io/download/temurin-21-jdk-armhf_21.0.6+2.deb
https://openems.io/download/temurin-21-jre-armhf_21.0.6+2.deb

Feel free to install and test them. Feedback is more than welcome!

7 Likes

Hello @da-Kai ,

you are great! I will try and report aswell.

Afaik i need to use it in my IDE and on the devixe itself right?

Instead of using Java 17 i will use 21 on my IDE and device - right?

How are the next steps regarding openEMS and arm32 devices? Do you then always Update if a new Java Version is released?

Greetings

Hi @Sn0w3y,

Yes, you’re correct, once Java 21 features are implemented, you’ll need to use Java 21 both in your IDE and on your device.

Regarding OpenEMS and arm32 devices, my plan is to support them for as long as possible. Currently, I am capable of compiling JDKs for Java 23 also.

I’ll do my best to maintain compatibility for as long as it makes sense.

Regards

2 Likes

Right now i updated the Device to Java 21 - it runs smoothly until today - my guess is, that it will do further :smiley:

Greetings!

Hi @da-Kai,

thank you very much for providing the JRE/JDK. This is a great time saver and helps us a lot! We have now been able to roll out your Java 21 package on many systems without any problems.

Unfortunately we have a few old systems running a raspberry buster distribution and we don’t want to do a distribution update to raspberry bullseye remotely. Buster uses GLIBC 2.28. Whereas your packages of JRE/JDK21 are compiled with GLIBC Support for > 2.29.

Easiest way seems to be, to build JRE/JDK21 for a system with GLIBC2.28 support. As far as I see it, Adoptium provides docker container for building

Our naive approach would it be, to create a new version based on the cross toolchain for Java 17 for arm and simply replace the Java 17 with the Java 21 source code.

Do you think this is possible and it is a good starting point?
I remember, that it it once took me several weeks of time to cross compile some bigger programs. How much time did you spend to build the debian packages? Do you remember any show stopper on building java 21 with glibc 2.28. Of course you can’t probably do an estimation on this. I am more interested in your gut feeling on this. I ask, because we are talking about ~10 old Systems. It may be more economic to simply exchange the old systems.

Thank you. Chris

Great efforts, thank you. I allowed to borrow your JVM package for openHABian, the OS companion to openHAB. We just moved openHAB to Java 21 and just like yourself now have trouble supporting older Raspberries that don’t have enough RAM to run in 64 bit. Hope that’s okay for you?
So far everything seems to be working just as fine as with regular 64bit Temurin 21.
Do you have any plans to update the packages? I think we’re on .8 meanwhile.

Thanks again

1 Like

Hello @mstormi and welcome to OpenEMS,

i see, that you use OpenEMS Commercially - could you tell us what purpose and in which Company? :slight_smile:

Also please consider joining the OpenEMS Association :slight_smile:

Greetings

No I don’t use OpenEMS. As I wrote I use the JVM 21 package in openHABian. openHAB and its OS are well known OSS projects you will have come across I guess.

1 Like

Hi All,

we have OpenEMS running locally, but for deployment in the field we also need a arm32 bit version.

we are building it into a docker image for ease of deployment, but run into an issue with the security policies:
SecurityException: Couldn’t iterate through the jurisdiction policy files: unlimited

Anyone had issues with that? Certificates/policies?

thanks

anyone?

we keep getting into issues with JCE when we try to connect from the UI.
nobody has that issue? the rest runs.

any advice on host OS and/or other dependencies we might have missed?

Rgds

Unfortunately i can not help you further - though i have one quastion:

Did you already join the Association? :slight_smile:

Hi @omedirk ,
I can’t help you off the top of my head. If you could share the Dockerfile you used to create the docker image, I might be able to help.

Thats a bit of chicken/egg thing :slight_smile: I did get into contact already, i have the docs here for signing up. But if we cant get it to run, it’s not really a solid replacement for our own EMS. We have more than 300 units in the field on arm32.
We are working hard to solve our current setup within OpenEMS. If we succeed we will defnitely join.

will keep you posted!

Rgds

we might be running into a docker emulation issue, will confirm this when running on real hardware.
will come back asap.

we have managed to get it all running.
it was indeed an emulation error with a docker file for armv7 on windows. Apparently the emulation is not 100%. It runs fine on actual hardware.

we use bellsoft arm32 release now on our devices and all is going smoothly now. Also UI is ported it seems.

1 Like

Dear @da-Kai … Do you know whether there is an OpenJDK 21 for ARM32 platform out as ZIP or TGZ? Had been hard to install the Debian package on our ARM32 test system. Somebody told me there is one, but I cannot find it.

https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-linux-amd64.tar.gz

1 Like