プロジェクト

全般

プロフィール

macOS上のOpenJDK環境

高橋 徹 さんが2年以上前に追加

macOS上でOpenJDKを利用するための徒然

2021年12月から当面は、MacBook Pro 13インチ(M1チップ)で使用するOpenJDKの調査を書く。

まず、M1チップとは、これまでMacコンピュータが搭載してきたIntel CPUではなく、ARM CPUを核としてGPU、ユニファイドメモリ、周辺デバイスのコントローラーを一つのチップにまとめたシステムオンチップ(SoC)のこと。

これまでのMacコンピュータのIntel CPUとは命令セットが変わっているため、Intel CPU向けに作られたプログラムはそのままでは実行できない。これでは互換性が皆無となるので、次の方法で対応している。

  1. プログラムファイルに、Intel用バイナリとARM用バイナリの両方を含め、実行するマシンのプロセッサに合う方バイナリを実行
  2. Intel命令をARM命令に実行時に変換する Rosetta 2 を使用

前者は、あらかじめIntel用とARM用のバイナリを用意するので、M1チップ搭載Macが登場するまえに作られたプログラムは対応しない。
後者は、古いプログラムでも実行できるが、Intel命令からARM命令に実行時に変換するオーバーヘッドが生じる。

macOS向けOpenJDKで、ARMに対応しているものは、次

  • Oracle JDK 17
  • Azul Zulu JDK 11, 17
  • Liberica JDK 11, 17

返答 (3)

インストール管理として Homebrew を導入 - 高橋 徹 さんが2年以上前に追加

macOSにソフトウェアをインストールするには、通常はdmg形式のファイルを入手しアプリケーションフォルダに配置する。

しかし、この方法ではユーザーが各ソフトウェアの配布元に都度アクセスして新しいソフトウェアや更新するソフトウェアのdmg形式ファイルを入手、インストールを実施しなくてはならず、かなり手間がかる。ソフトウェアの更新があったかどうかもユーザーが自分で確認しなくてはならない。

そこで、ソフトウェアのインストールと管理を行うパッケージ管理ツールがサードパーティで提供されている。一番メジャーなものはオープンソースの Homebrew である。 Homebrew をインストールし、以降ソフトウェアのインストールや更新、削除を Homebrew で行うと効率的な管理ができる。

Homebrew 以外にも、MacPorts、pkgsrc、nix、… などがある模様。

Homebrewについては、Homebrewに記載

RE: macOS上のOpenJDK環境 - 高橋 徹 さんが2年以上前に追加

はてな日記に macOS上でのJava開発環境 を記載。

brewのjava-beta - 高橋 徹 さんが8ヶ月前に追加

brew searchでjavaを検索すると、Caskにjava-betaなるものがありました。

~% brew info java-beta
==> java-beta: 21,34
https://jdk.java.net/
Not installed
From: https://github.com/Homebrew/homebrew-cask-versions/blob/HEAD/Casks/java-beta.rb
==> Name
OpenJDK Early Access Java Development Kit
==> Description
Early access development kit for the Java programming language
==> Artifacts
jdk-21.jdk -> /Library/Java/JavaVirtualMachines/openjdk-21.jdk (Generic Artifact)

JDK 21は現在 Release Candidateで今月下旬に正式リリース予定です。
java-betaは、OpenJDKのOracleビルドのブレビューが提供されているようです。

/Library/Java/JavaVirtualMachinesの下にインストールされるので、/usr/libexec/java_home で設定可能です。

~ % export JAVA_HOME=`/usr/libexec/java_home -v 21`
~ % java --version
openjdk 21-ea 2023-09-19
OpenJDK Runtime Environment (build 21-ea+34-2500)
OpenJDK 64-Bit Server VM (build 21-ea+34-2500, mixed mode, sharing)
    (1-3/3)