Java/JDK for the Apple M1 chip

We Are Going To Discuss About Java/JDK for the Apple M1 chip. So lets Start this Java Article.

Java/JDK for the Apple M1 chip

Advertisements
  1. Java/JDK for the Apple M1 chip

    If you instead leave Operation System on 'any', you'll note aarch64 is in there, and this gets you to a Linux release for ARM processors. That (probably) won't run on macOS on M1 hardware, but that's 95% of the work already done.

  2. Java/JDK for the Apple M1 chip

    If you instead leave Operation System on 'any', you'll note aarch64 is in there, and this gets you to a Linux release for ARM processors. That (probably) won't run on macOS on M1 hardware, but that's 95% of the work already done.

Solution 1

Advertisements

Yes.

On this page: AdoptOpenJDK Latest Releases you can select ‘macOS’ from the ‘Operating System’ dropdown, and then from ‘Architecture’, it’s currently only x64, but soonish there should be AArch64 or ARM64 (those are usually the shortcodes for 64-bit ARM). Possibly, as Apple no doubt has a bunch of extensions built into their M1 designs, and Apple gets its own.

If you instead leave Operation System on ‘any’, you’ll note aarch64 is in there, and this gets you to a Linux release for ARM processors. That (probably) won’t run on macOS on M1 hardware, but that’s 95% of the work already done.

So: It’s not there yet, but note that JDKs for ARM have been available for more than decade, and whilst JDK 15 has dropped support for a bunch of exotic OS/architecture combinations (such as Solaris), ARM development has always remained at least partially relevant (even if so far it’s mostly an Oracle commercial license offering). That is to say: It should not be a herculean effort to create an adoptopenjdk release that runs on M1s natively, so presumably, it will happen. But, it’s an open source effort, so if you’re anxious, by all means, read up and contribute 🙂

Apple has not given any details on this architecture whatsoever until November 10th 2020, unless you bought a development kit box for it (a Mac Mini with an A14 chip, which isn’t an M1 chip, but close enough I guess), and signed a big NDA.

As a rule, open source projects will run as fast as possible in the opposite direction if you wave an NDA around, so if you dislike this state of affairs, I don’t think it’s wise to complain to adoptopenjdk or other packagers and open source projects about it 🙂

Fortunately, now it’s out, and an NDA is no longer required. My assumption is that the ARM branch of the OpenJDK source code + the macOS bits that already exist for the macOS x64 release can be combined rather easily once someone with some familiarity with the OpenJDK source code has an M1-based macOS system to test it on, which should mean an adoptopenjdk macos-aarch64 release should be here within the month.

But, open source. You didn’t pay them, you have no contract, and they don’t owe it to you. Donate to the effort or contribute a pull request if you want it to go faster.

UPDATE:

  • Azul’s M1 OpenJDK builds
  • Microsoft’s (yes, really) GitHub source repo for an early access OpenJDK16 build for macOS on AArch64. Note that Microsoft’s been working on the OpenJDK branch of AArch64 (for ARM-based Windows 10) for a while, which goes back to: A lot of the hard work was already done.

Original Author Of This Content

Solution 2

Advertisements

A command line approach (thanks to the Homebrew team and the hard work of @vladimir-kempik and other openjdk contributors on the JEP-391 branch)

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install OpenJDK
brew install openjdk

Verify it’s installed:

$(brew --prefix openjdk)/bin/java --version

Verify it’s for the arm64 hardware:

file $(brew --prefix openjdk)/bin/java     
# /opt/homebrew/opt/openjdk/bin/java: Mach-O 64-bit executable arm64

Note: To install openjdk system-wide, follow the on-screen instructions provided by Homebrew.

Original Author Of This Content

Solution 3

Advertisements

Azul is offering macOS ARM builds of OpenJDK on their website in the Downloads section. I haven’t tried them out yet though, but Azul have been long-time JDK developers.

Once you unpack the Azul JDK, you have to rummage around inside of it until you find the zulu-11.jdk directory (assuming you’ve downloaded JDK 11), which you then copy to /Library/Java/JavaVirtualMachines.

Original Author Of This Content

Solution 4

Advertisements

You can install the Java JDK using sdkman (see sdkman install):

vim .sdkman/etc/config

Set sdkman_rosetta2_compatible=false (see sdkman config)

After that, you will see a list of compatible with M1 JDKs:

sdk list java

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Azul Zulu     |     | 16.0.1       | zulu    |            | 16.0.1-zulu
               |     | 11.0.11      | zulu    |            | 11.0.11-zulu
               |     | 8.0.292      | zulu    |            | 8.0.292-zulu
 BellSoft      |     | 16.0.1       | librca  |            | 16.0.1-librca
               |     | 11.0.11      | librca  |            | 11.0.11-librca
               |     | 8.0.292      | librca  |            | 8.0.292-librca
 Java.net      |     | 18.ea.3      | open    |            | 18.ea.3-open
               |     | 18.ea.2      | open    |            | 18.ea.2-open
               |     | 18.ea.1      | open    |            | 18.ea.1-open
               |     | 17.ea.28     | open    |            | 17.ea.28-open
               |     | 17.ea.27     | open    |            | 17.ea.27-open
               |     | 17.ea.26     | open    |            | 17.ea.26-open
               |     | 17.ea.25     | open    |            | 17.ea.25-open
================================================================================

Choose one and install it using the command sdk install java IDENTIFIER, i.e.:

sdk install java 8.0.292-zulu

Original Author Of This Content

Conclusion

So This is all About This Tutorial. Hope This Tutorial Helped You. Thank You.

Also Read,

Siddharth

I am an Information Technology Engineer. I have Completed my MCA And I have 4 Year Plus Experience, I am a web developer with knowledge of multiple back-end platforms Like PHP, Node.js, Python and frontend JavaScript frameworks Like Angular, React, and Vue.

Leave a Comment