adoptium / adoptium-support

For end-user problems reported with our binary distributions
Apache License 2.0
46 stars 15 forks source link

Support for aarch64 Windows platform #616

Open arjenw opened 2 years ago

arjenw commented 2 years ago

For people running Windows ARM (for example using Parallels on Mac M1), it would be helpful to have distributions targeting the aarch64 Windows platform. Other vendors like Microsoft and Azul have those distributions. Are there plans for Adoptium to provide builds for the aarch64 Windows platform for JDK 11, 17 and newer?

karianna commented 2 years ago

Yes, we'll be working on this. Not 100% sure of timelines yet but we've secured Windows on Arm hosts on Azure to build and test as a starting point.

Alovchin91 commented 2 years ago

Hi @karianna ,

Looking at your profile, I figured you might be able to give the best answer 😅

For the time being, can you please confirm (or deny) that Microsoft's OpenJDK builds (specifically 11) are a fully compatible replacement for Temurin on that platform (Windows aarch64)? Our users are already there and, since you still don't have specific timelines, I would like to understand if we have a backup plan other than x64 emulation.

Thanks! 😊

karianna commented 2 years ago

@Alovchin91 They are functionally equivalent yes.

kwin commented 9 months ago

@karianna Any update here? Can we leave this issue open (and allow people to watch it) until the architecture is supported on Windows?

karianna commented 9 months ago

I think Azure now has Windows AArch64 hosts available that we might be able to add to the build pool, I'll re-open

karianna commented 9 months ago

One for PMC discussion

sxa commented 9 months ago

Just to be clear, we are regularly building Windows/aarch64 but it is not yet in a condition where we can do a formal GA release. For example, https://github.com/adoptium/temurin21-binaries/releases/tag/jdk21u-2024-02-07-08-08-beta (and probably the API as well but I haven't verified that) has the builds from today. Any feedback on those would, of course, be welcome. I have a Windows/aarch64 laptop and have run them in the past, although not far beyond java -version :-)

I do note that the pipelines at https://ci.adoptium.net/job/build-scripts/job/jobs/job/evaluation/job/jobs/job/jdk21u/job/jdk21u-evaluation-windows-aarch64-temurin/ are showing failures in the verification of the signatures which needs to be addressed @andrew-m-leonard when you get an issue/PR feel free to tag this issue in it) and then we need to verify that it can pass all of the AQA+TCK suite at the project for which we are awaiting infrastructure.

karianna commented 9 months ago

https://github.com/adoptium/ci-jenkins-pipelines/issues/917

HannesWell commented 7 months ago

Does the removal of the PMC-agenda label mean that this not on the road-map anymore or does it just mean it has already been discussed?

karianna commented 7 months ago

It was discussed: https://github.com/adoptium/adoptium/blob/main/Meetings/PMC%20Meeting%20Minutes/2024/2024-02-14%20Adoptium%20PMC%20Meeting%20Minutes.pdf - but the minutes aren't super clear on what no further discussion means, I'll go find out.

HannesWell commented 7 months ago

but the minutes aren't super clear on what no further discussion means, I'll go find out.

Thank you, could you find something about it?

I just learned that in the latest jdk-17 beta builds a win32.aarch64 version is included: https://github.com/adoptium/temurin17-binaries/releases/tag/jdk17u-2024-02-07-14-14-beta Can this be considered as an indicator that it will also be included in the next GA release of a jdk-17?

For the Eclipse IDE we get user requests to support WoA and contributions to make it happen. But without Temurin providing JDKs for WoA, a major cornerstone is missing, which makes it more difficult to build it and impossible to ship a WoA Eclipse with a JDK.

Edit: looks my second question was already answered before.

karianna commented 7 months ago

The PMC is happy for it to become a supported platform but we will need to put the usual testing infra in place, especially for TCK testing. I'll follow-up and see what's required.

sxa commented 7 months ago

I just learned that in the latest jdk-17 beta builds a win32.aarch64 version is included: https://github.com/adoptium/temurin17-binaries/releases/tag/jdk17u-2024-02-07-14-14-beta Can this be considered as an indicator that it will also be included in the next GA release of a jdk-17?

Short answer: No,

We have been building for Windows in Arm for quite a while (I think a couple of years at least) but we made a change recently that meant they were published regularly to that location so they may be more visible than they were previously. It's appearance there does NOT directly mean that we will publish a GA at any given time, although we intend to do so.

As @karianna says that is dependent on the completion of a full test cycle for that platform, including the TCK, which we are currently awaiting hardware for. Once that is performed we will be able to ship. We also do not necessarily wait for the "next" java update. As an example of this we started shipping a GA version of Temurin for Linux RISC-V this month for the first time based on the January JDK21 version - we didn't wait for the next update which will be in April.

HannesWell commented 7 months ago

It's appearance there does NOT directly mean that we will publish a GA at any given time, although we intend to do so.

Thank you for your elaboration. Would it be possible to give a coarse, nonbinding estimation when it will probably be available, if everything works as expected? I have no clue how long that would probably take. I'm asking because if will take longer then a few weeks or a month we would implement a work-around to build and test Eclipse SWT for win32.aarch64 based on the published beta. But if it would we probably ready in two weeks, we could just await its general availability. Thanks in advance.

sxa commented 7 months ago

Despite me having a Windows on Arm laptop I'm not personally able to spend time myself pushing this forward so I'll defer to @karianna and @gdams for any sort if estimate on when it might happen.

HannesWell commented 6 months ago

Despite me having a Windows on Arm laptop I'm not personally able to spend time myself pushing this forward so I'll defer to @karianna and @gdams for any sort if estimate on when it might happen.

Is there any update on this one? For the Eclipse IDE we have first complete builds for Windows on ARM

It would be great if we could publish it bundled with a Temurin JDK.

karianna commented 5 months ago

@gdams is away for a little while but when he returns we'll look into Azure builds hosts (if they are available by then).

sxa commented 5 months ago

@karianna To be clear, the existing evaluation Windows/aarch64 builds are already set up and building on Azure build hosts e.g. this job for JDK21: https://ci.adoptium.net/job/build-scripts/job/jobs/job/evaluation/job/jobs/job/jdk21u/job/jdk21u-evaluation-windows-aarch64-temurin

github-actions[bot] commented 2 months ago

We are marking this issue as stale because it has not been updated for a while. This is just a way to keep the support issues queue manageable. It will be closed soon unless the stale label is removed by a committer, or a new comment is made.

Alovchin91 commented 2 months ago

Has it already been released? No? Then this issue stays open.

It always seems just around the corner but also with no end in sight.

Couldn't have said it better myself.

lost-RD commented 2 months ago

I'm using the 17 build from the CI, it works for my purposes.

lost-RD commented 2 months ago

Addendum: mostly works. I do get crashes on 17.0.13_4 but it's mostly OOM errors, which is probably more due to my Snapdragon GPU rather than ARM itself.

I was originally using 17.0.12_7 which had other instabilities. 13_4 is a noticeable improvement in compatibility at my end.

persicsb commented 4 weeks ago

Do you have any update on this? Windows ARM64 is getting quite important with the new Snapdragon X Elite devices out there, especially the dev-oriented Thinkpad and Dell XPS machines.

merks commented 4 weeks ago

FYI, if you look at https://adoptium.net/temurin/nightly/ you will see that there are beta/early-access builds:

image

I've been prototyping generating JustJ JREs from these things, though for Java 24:

So these thing do already exist. I hope they will be available in the next regular releases so that JustJ can release JREs that can be used for the Eclipse IDE Packages:

https://github.com/eclipse-packaging/packages/issues/162

sxa commented 4 weeks ago

Yep we're making good progress on it and have recently "promoted" it out of evaluation status for JDK21 so there's a chance we'll be able to release it with the 21.0.5 release later this month.

smlambert commented 4 weeks ago

Do you have any update on this? Windows ARM64 is getting quite important with the new Snapdragon X Elite devices out there, especially the dev-oriented Thinkpad and Dell XPS machines.

Recently, we have moved the aarch64 Windows platform out of evaluation for JDK21, which means we plan to officially release that platform/version during the upcoming October CPU barring any blockers in the temurin-compliance project.

Since we had a large amount of 'consumer feedback' to continue publishing 'JREs' for the later versions of Java, we are producing them. This perhaps begs the question of duplication of effort / JustJ @merks ?

Adoptium API call to pull Temurin JREs

Curl command

curl -X 'GET' \
  'https://api.adoptium.net/v3/binary/latest/21/ea/windows/aarch64/jre/hotspot/normal/eclipse?project=jdk' \
  -H 'accept: */*'

Request URL

https://api.adoptium.net/v3/binary/latest/21/ea/windows/aarch64/jre/hotspot/normal/eclipse?project=jdk

Once we start releasing official builds, replace the ea with ga in the above strings.

merks commented 4 weeks ago

@smlambert

The primary purpose of JustJ is to produce JREs packaged as p2 artifacts hosted in a p2 repository. We also produce variants, such as a minimized version primarily for use in the Eclipse Installers, versions with and without debug information as well as with and without the src.zip; the latter is of course useful in the Java IDE. In any case, it's easily to use jlink to generate these things and to record the metadata (system packages) needed for p2. The JRE generation is effectively done by this one "simple" script so no rocket science involved. 😀

https://github.com/eclipse-justj/justj/blob/master/releng/org.eclipse.justj.releng/build-jre.sh