Java/JDK for the Apple M1 芯片

2022-08-31 05:57:16

是否需要特别发布OpenJDK来支持新的Apple M1芯片?

我看到目前有适用于macOS / OS X的JDK的下载,但这些似乎仅适用于x86处理器。这是对的吗?如果是这样,我在哪里可以下载适用于M1的OpenJDK版本?


答案 1

是的。

在此页面上:采用OpenJDK最新版本,您可以从“操作系统”下拉列表中选择“macOS”,然后从“体系结构”中选择“体系结构”,它目前只有x64,但很快应该有AArch64或ARM64(这些通常是64位ARM的短代码)。可能,因为苹果无疑在他们的M1设计中内置了一堆扩展,苹果有自己的扩展。

如果你把操作系统放在“any”上,你会注意到aarch64就在那里,这让你进入了ARM处理器的Linux版本。这(可能)不会在M1硬件的macOS上运行,但这是已经完成的工作的95%。

所以:它还没有出现,但请注意,ARM的JDK已经存在了十多年,虽然JDK 15已经放弃了对一堆异国情调的操作系统/架构组合(如Solaris)的支持,但ARM开发始终至少部分相关(即使到目前为止它主要是Oracle商业许可证产品)。也就是说:创建一个在M1上运行的adoptopenjdk版本不应该是一项艰巨的努力,所以大概,它会发生。但是,这是一项开源工作,所以如果你很焦虑,一定要阅读并贡献:)

苹果直到2020年11月10日才提供有关此架构的任何细节,除非您为其购买了开发套件盒(带有A14芯片的Mac Mini,这不是M1芯片,但我想足够接近),并签署了一份大NDA

通常,如果你挥舞着NDA,开源项目将尽可能快地朝着相反的方向运行,所以如果你不喜欢这种状态,我认为向adoptopenjdk或其他打包者和开源项目抱怨它是不明智的,:)

幸运的是,现在它已经出来了,不再需要NDA。我的假设是,OpenJDK源代码的ARM分支+macOS x64版本中已经存在的macOS位可以很容易地组合在一起,一旦熟悉OpenJDK源代码的人有一个基于M1的macOS系统来测试它,这应该意味着一个adoptopenjdk macos-aarch64版本应该在一个月内在这里。

但是,开源。你没有付钱给他们,你没有合同,他们也不欠你。捐赠给这项工作或贡献一个拉取请求,如果你想让它走得更快。

更新:

  • Azul的M1 OpenJDK构建
  • 微软(是的,真的)GitHub源代码存储库,用于在AArch64上为macOS构建的早期访问OpenJDK16。请注意,微软已经在AArch64(基于ARM的Windows 10)的OpenJDK分支上工作了一段时间,这可以追溯到:很多艰苦的工作已经完成。

答案 2

命令行方法(感谢 Homebrew 团队以及 JEP-391 分支上@vladimir-kempik 和其他 openjdk 贡献者的辛勤工作)

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

# Install OpenJDK
brew install openjdk

验证它是否已安装:

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

验证它是否适用于 arm64 硬件:

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

注意:要在系统范围内安装 OpenJDK,请按照 Homebrew 提供的屏幕说明进行操作。