M1 Mac への JDK のセットアップ

flutter doctorで指摘された M1 Mac への JDK のインストールです。

Flutterのセットアップ方法については次の記事を参照してください。

JDK いろいろあるけど

Java Runtime のセットアップ、まずはダウンロードですが、気づけば JDK もいろいろあります。

flutter doctorには次のようなメッセージが表示されていました。

The operation couldn’t be completed. Unable to locate a Java Runtime.

Please visit http://www.java.com for information on installing Java.

指定されたページからダウンロードできるのは、Oracle版のJavaです。この記事執筆時点のライセンスでは、次のように記述されていて、個人的に使用する場合や開発目的であれば無償で利用可能です。

Oracle Javaライセンスの重要な更新
Oracle Javaライセンスは、2019年4月16日以降のリリースに対して変更されました。

新しいOracle Java SEのOracle Technology Networkライセンス契約は、以前のOracle Javaライセンスとは大きく異なります。
新しいライセンスでは、個人的な使用や開発目的での使用など、特定の使用が無償で許可されますが、以前のOracle Javaライセンスの下で認可されたその他の使用はできなくなりました。
この製品をダウンロードして使用する前に、条件をよくお読みください。
FAQがこちらでご覧いただけます。

商用ライセンスおよびサポートは、安価なJava SEサブスクリプションにより提供されます。

オラクル社は、オープン・ソースのGPLライセンスの下、jdk.java.netでOpenJDKの最新リリースも提供しています。

https://www.java.com/ja/download/ より引用

せっかくなので、他のディストリビューションも調べて、Apple Siliconに対応しているものを探してみました。

OpenJDK

Homebrew も M1 Mac 対応が進んで、今は Apple Silicon ネイティブ対応しています。Homebrew経由でインストール可能なOpenJDKもApple Siliconに対応していました。

openjdk — Homebrew Formulae

上記のページを確認すると、OSの対応状況は次のようになっていました。

Arch OS 対応状況
Intel Big Sur OK
Intel Catalina OK
Intel Mojave OK
Apple Silicon Big Sur OK

OpenJDKのインストール

Homebrew 経由で OpenJDK をインストールします。

$ brew install openjdk

インストールが完了すると、次のようなメッセージが表示されます。

For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
This is a beta version of openjdk for Apple Silicon
(openjdk 16 preview).

openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk you may need to set:
  export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"

この指示に従って、次の2つの設定を行います。

$ sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

$PATHの方は、既に設定されているものなどもあるので、echoを使わずに、.zshrcファイルを編集して、"/opt/homebrew/opt/openjdk/bin:$PATH"を追加します。

例えば、私の環境の場合は次のようになります。

export PATH=/Applications/CMake.app/Contents/bin:~/Documents/src/flutter/bin:/opt/homebrew/opt/openjdk/bin:$PATH

確認

ターミナルを再起動してから、javaのバージョンを表示して設定できたか確認します。

$ java --version
openjdk 16 2021-03-16
OpenJDK Runtime Environment (build 16+14)
OpenJDK 64-Bit Server VM (build 16+14, mixed mode)

Flutterを使う場合には、更にflutter doctorを実行して、認識されるか確認します。このページの冒頭にあるエラーメッセージが出力されなければ成功です。

投稿者プロフィール

林 晃
林 晃macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者
アールケー開発代表。macOS/iOSアプリ/SDK/ミドルウェア開発が専門の開発者。ObjC/Swift/C++使い。豊富な開発実務経験を基に、教育コンテンツ開発、技術書執筆、技術指導、技術セミナー講師、企業内研修講師、行政・自治体職員研修講師も行います。

基礎から学ぶMetal


「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。

私が初めてGPUプログラミングを行ったとき、どこから手をつけて、学んでいけば良いのか分からず呆然としました。もし、あのとき、これを教えてくれればという部分を解説しました。本書で解説している部分はMetalの基礎となる部分で、Metalを使うときに必ず触れることになる部分です。

詳細

基礎から学ぶSwiftUI


「基礎から学ぶ SwiftUI」というタイトルの本を執筆しました。

SwiftUIの入門書です。

SwiftUIのコンセプトは「ユーザーインターフェイスを作るための最短パスを提供する」「一度学べば(Appleのプラットフォームの)どこにでも適用できる」です。

SwiftUIの概要から始まって、一つ一つのテクノロジートピックに注目しながらSwiftUIとは何か?どんなことができるのか?どのようなコードを書けば良いのかなどを丸々一冊使って解説しています。

詳細

関連記事

  1. M1 MacにFlutterをセットアップする

  2. M1 MacへのAndroid Studioのセットアップ

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事