⚓ インストール

この講義では,Javaを使ったプログラミングの演習科目です. そのため,Javaの開発環境とエディタが必要です. 以下の内容を読み,必要なソフトウェアをインストールしてください. なお,本講義では,Javaとエディタの利用に 仮想環境を利用する方法ローカル環境にインストールする方法の2通りを紹介しますが, 仮想環境を利用する方法を推奨します.

仮想環境を利用する方法

この方法は,Visual Studio CodeDocker を用いて開発を行います. この方法を使ってのプログラミングの動作イメージは以下の通りです. 画像をクリックすることで各ペイン(領域)の説明が表示されます.

動作イメージ

🐳 Docker のインストール

Dockerのページに行くと下のようなボタンが表示されていると思います. Intel チップの場合は「Download Docker Desktop」のボタンを,Appleチップの場合は「Apple Chip」をクリックすることでダウンロードが始まります.

Docker Desktopダウンロードボタン

Docker Desktopダウンロードボタン

ダウンロードが終了すると Docker.dmg というファイルが作成されていますので,このファイルを開いてください. すると,Docker ボリュームがマウントされ,そのボリュームが開きます.その結果,下の画面が表示されるはずです. この画面の指示に従い,Docker を Applications フォルダにドラッグ&ドロップしてください. コピーが完了すると Docker のインストールも完了です.

Docker ボリューム

Docker ボリューム

Docker のインストールが終われば,Docker アイコンをダブルクリックしてDocker を起動してください. 初回起動時は管理者のパスワードを聞かれますので,適切に答えてください. 起動が終われば次のウィンドウが表示されますが,このウィンドウは使いませんので閉じてください.

Dockerダッシュボード

Dockerダッシュボード

また,メニューバーにある Docker のアイコンをクリックすることで,Docker の現在の状態が確認できます. 下の図のように,「Docker Desktop is running」の表示が出ていれば正常に動作しています.

Dockerメニュー

Dockerメニュー

Visual Studio Code のインストール

仮想環境を利用する方法では,エディタは Visual Studio Code 限定です. Visual Studio Code を https://code.visualstudio.com/Download からダウンロードしてインストールしてください. 自身のPCのチップに対応するボタンをクリックしてダウンロードしてください. 次に,ダウンロードした zip ファイルを展開し,得られた Visual Studio Code.app を Applications フォルダにドラッグ&ドロップしてください.

次に Visual Studio Code の機能拡張である Remote - Containers をインストールします. https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers を開き,Install ボタンをクリックしてください. そして,Visual Studio Code で開くことを許可するかと聞かれますので,許可してください.

課題の進め方

各回のトップページに,この講で利用するプログラムというリンクがあります. ダウンロードされたファイルを展開すると,その講の例題や課題のプログラムの雛形が収められたディレクトリが作成されます. そのディレクトリを Visual Studio Code で開いてください(FileメニューからOpen Folder...を選択してディレクトリを選択する). すると,以下の画面が表示されますので,「Reopen in Container 」ボタンを押してください. すると仮想環境がダウンロードされ,仮想環境が整備されます. なお,初回は850MB 程度のダウンロードが行われますので,初回は速いネットワーク環境で実施してください. 左下の緑の部分で,ローカル環境で開いているのか,仮想環境で実行されているのかを区別できます(上の動作イメージと比較してみてください).

devcontainer で開く

devcontainer で開く

仮想環境でソースファイルが開くことができれば,ターミナルで以下のコマンドを入力して実行結果を確認してみましょう. 1, 5, 7行目の vscode@ の後ろの英数字は以下の通りでなくても構いません. これで各ファイルの中身を確認したり,コンパイルや実行などが可能になります.

vscode@f7b361ede9b7:~/lesson00$ java -version # Javaのバージョンを確認する.
openjdk version "17.0.6" 2023-01-17 LTS
OpenJDK Runtime Environment SapMachine (build 17.0.6+0-LTS)
OpenJDK 64-Bit Server VM SapMachine (build 17.0.6+0-LTS, mixed mode, sharing)
vscode@f7b361ede9b7:~/lesson00$ javac -version
javac 17.0.6
vscode@f7b361ede9b7:~/lesson00$ ls
BigAndSmall.java  EvenPrinter.java  HelloWorld.java  Multiplication.java  PositiveChecker.java
ClassName.java    GrandTotal.java   LeapYear.java    OddPrinter.java      XPrinter.java

注意点

ローカル環境にインストールする方法

インストール確認

まず,Java がインストールされているかを確認する. ターミナルを開き,java -versionjavac -versionをそれぞれ入力して結果を確認してください. 以下のような出力が得られた場合,Javaのインストールは行われていません. Javaのインストールに書かれている項目を確認し,Javaをインストールしてください.

インストールされていない場合の出力

$ java -version
java: command not found # <= javaがインストールされていない.
$ javac -version
javac: command not found

インストールされている場合の出力

$ java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Zulu17.32+13-CA (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Zulu17.32+13-CA (build 17.0.2+8-LTS, mixed mode, sharing)
$ javac -version
javac 17.0.2

インストールされている場合は,出力されたバージョン番号を確認してください. 出力の先頭行に 17.0.2 のようなバージョン番号を確認しましょう. このバージョン番号が 17.0.2 になっていれば適切な Java がインストールされています. もし,出力されたバージョン番号が 1.7.0_xxx より前の数値や 12.x.x13.x.x14.x.x15.x.x16.x.x になっていると古い Java 環境しかインストールされていないため, Javaのインストールを参考に, 最新の Java をインストールするようにしてください.

なお,古いバージョンのソフトウェアは本講義ではサポートしません. 特にバージョンが 1.7.0_xxx 以前のものでは動かないサンプルプログラムも存在します. Oracle からのサポートもすでに切れており,使い続けること自体が推奨されないためです. そのため,上記のバージョンを確認し,最新の Java をインストールしておいてください. バージョンアップを行わないことによる不利益は自身で対応するようにしてください.

また,Javaの最新バージョンは,20 で 2023-03-21にリリースされました. 本講義で主に利用するバージョンは Java 17 とします.

なお,Javaのバージョンは次のように更新されていき,現在,有効なバージョンは 1.8, 11, 17, 19の4つのバージョンのみです.

本講義では,AWS (Amazon Web Service) が提供する Amazon Corretto 17, もしくは Azul Systems が提供する Azul Zulu Builds of OpenJDK を利用します. 両方とも オープンソースの Java の開発環境である OpenJDK の一つで, Java 17 に相当します. そして,Amazon Corretto は2028年9月までZulu は 2029年9月まで サポートされるようです.

Zuluのサポート期間の補足

Javaのインストール

手元の macOS に Java をインストールするには,次の4通りあります.

  1. Sdkmanを使ったインストール
  2. asdfを使ったインストール
  3. Homebrewを使ったインストール
  4. インストーラを利用したインストール

各自,自分の好きな方法を選択し,インストールしてください. なお,この4つのうちの複数の方法を併用することは難しいため,どれか1つを選んでください.

複数バージョンのJavaを切り替えながら利用したいのであれば,sdkman,もしくはasdfを利用してください. 全部自分で管理したい場合は,最後のインストーラを利用したインストールを利用してください. 上記の内容がよくわからない場合はsdkmanを利用してください.

sdkmanを使ったインストール

Sdkmanとは,Java に関係する様々なライブラリやツールのバージョンを管理し,インストールできるツールです.

sdkman のインストール

ターミナルにて,sdkコマンドを実行してください.ヘルプメッセージが出てくればインストールされています. sdk: command not found と表示される場合はインストールされていません. Sdkman をインストールするには,ターミナルで以下のコマンドを実行した後,新しいターミナルのウィンドウを開いてください. インストール方法の詳細は,Sdkman のページも併せてご覧ください.

$ curl -s "https://get.sdkman.io" | bash
sdkman を使ったJavaのインストール

まず,有効なJavaのバージョンを確認するため,sdk list java とコマンドを入力してください.

$ sdk list java
============================================================================================================
Available Java Versions for macOS ARM 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 18.0.2       | amzn    |            | 18.0.2-amzn
               |     | 17.0.4       | amzn    |            | 17.0.4-amzn
               |     | 11.0.16      | amzn    |            | 11.0.16-amzn
               |     | 8.0.342      | amzn    |            | 8.0.342-amzn
 Gluon         |     | 22.1.0.1.r17 | gln     |            | 22.1.0.1.r17-gln
               |     | 22.1.0.1.r11 | gln     |            | 22.1.0.1.r11-gln
 GraalVM       |     | 22.2.r17     | grl     |            | 22.2.r17-grl
               |     | 22.2.r11     | grl     |            | 22.2.r11-grl
               |     | 22.1.0.r17   | grl     |            | 22.1.0.r17-grl
               |     | 22.1.0.r11   | grl     |            | 22.1.0.r11-grl
 Java.net      |     | 20.ea.13     | open    |            | 20.ea.13-open
               |     | 20.ea.12     | open    |            | 20.ea.12-open
               |     | 20.ea.11     | open    |            | 20.ea.11-open
               |     | 20.ea.10     | open    |            | 20.ea.10-open
               |     | 19.ea.36     | open    |            | 19.ea.36-open
               |     | 19.ea.35     | open    |            | 19.ea.35-open
               |     | 18.0.2       | open    |            | 18.0.2-open
               |     | 18.0.2.1     | open    |            | 18.0.2.1-open
 Liberica      |     | 18.0.2.fx    | librca  |            | 18.0.2.fx-librca
               |     | 18.0.2.1.fx  | librca  |            | 18.0.2.1.fx-librca
               |     | 18.0.2.1     | librca  |            | 18.0.2.1-librca
               |     | 18.0.2       | librca  |            | 18.0.2-librca
               |     | 18.0.1.1.fx  | librca  |            | 18.0.1.1.fx-librca
               |     | 18.0.1.1     | librca  |            | 18.0.1.1-librca
               |     | 17.0.4.fx    | librca  |            | 17.0.4.fx-librca
               |     | 17.0.4.1.fx  | librca  |            | 17.0.4.1.fx-librca
               |     | 17.0.4.1     | librca  |            | 17.0.4.1-librca
               |     | 17.0.4       | librca  |            | 17.0.4-librca
               |     | 17.0.3.1.fx  | librca  |            | 17.0.3.1.fx-librca
               |     | 17.0.3.1     | librca  |            | 17.0.3.1-librca
               |     | 11.0.16.fx   | librca  |            | 11.0.16.fx-librca
               |     | 11.0.16.1.fx | librca  |            | 11.0.16.1.fx-librca
               |     | 11.0.16.1    | librca  |            | 11.0.16.1-librca
               |     | 11.0.16      | librca  |            | 11.0.16-librca
               |     | 11.0.15.1.fx | librca  |            | 11.0.15.1.fx-librca
               |     | 11.0.15.1    | librca  |            | 11.0.15.1-librca
               |     | 8.0.345.fx   | librca  |            | 8.0.345.fx-librca
               |     | 8.0.345      | librca  |            | 8.0.345-librca
               |     | 8.0.342.fx   | librca  |            | 8.0.342.fx-librca
               |     | 8.0.342      | librca  |            | 8.0.342-librca
               |     | 8.0.333.fx   | librca  |            | 8.0.333.fx-librca
               |     | 8.0.333      | librca  |            | 8.0.333-librca
 Liberica NIK  |     | 22.2.r17     | nik     |            | 22.2.r17-nik
               |     | 22.2.r11     | nik     |            | 22.2.r11-nik
 Microsoft     |     | 17.0.4.1     | ms      |            | 17.0.4.1-ms
               |     | 17.0.4       | ms      |            | 17.0.4-ms
               |     | 17.0.3       | ms      |            | 17.0.3-ms
               |     | 11.0.16.1    | ms      |            | 11.0.16.1-ms
               |     | 11.0.16      | ms      |            | 11.0.16-ms
               |     | 11.0.15      | ms      |            | 11.0.15-ms
 Oracle        |     | 18.0.2       | oracle  |            | 18.0.2-oracle
               |     | 18.0.1       | oracle  |            | 18.0.1-oracle
               |     | 17.0.4       | oracle  |            | 17.0.4-oracle
               |     | 17.0.3       | oracle  |            | 17.0.3-oracle
 SapMachine    |     | 18.0.2       | sapmchn |            | 18.0.2-sapmchn
               |     | 18.0.2.1     | sapmchn |            | 18.0.2.1-sapmchn
               |     | 18.0.1.1     | sapmchn |            | 18.0.1.1-sapmchn
               |     | 17.0.4       | sapmchn |            | 17.0.4-sapmchn
               |     | 17.0.4.1     | sapmchn |            | 17.0.4.1-sapmchn
               |     | 17.0.3       | sapmchn |            | 17.0.3-sapmchn
               |     | 17.0.3.0.1   | sapmchn |            | 17.0.3.0.1-sapmchn
               |     | 17.0.2       | sapmchn |            | 17.0.2-sapmchn
               |     | 11.0.16      | sapmchn |            | 11.0.16-sapmchn
               |     | 11.0.16.1    | sapmchn |            | 11.0.16.1-sapmchn
 Semeru        |     | 18.0.2       | sem     |            | 18.0.2-sem
               |     | 18.0.1.1     | sem     |            | 18.0.1.1-sem
               |     | 17.0.4       | sem     |            | 17.0.4-sem
               |     | 17.0.4.1     | sem     |            | 17.0.4.1-sem
               |     | 17.0.3       | sem     |            | 17.0.3-sem
               |     | 11.0.16      | sem     |            | 11.0.16-sem
               |     | 11.0.16.1    | sem     |            | 11.0.16.1-sem
               |     | 11.0.15      | sem     |            | 11.0.15-sem
 Temurin       |     | 18.0.2       | tem     |            | 18.0.2-tem
               |     | 18.0.2.1     | tem     |            | 18.0.2.1-tem
               |     | 18.0.1       | tem     |            | 18.0.1-tem
               |     | 17.0.4       | tem     |            | 17.0.4-tem
               |     | 17.0.4.1     | tem     |            | 17.0.4.1-tem
               |     | 17.0.3       | tem     |            | 17.0.3-tem
               |     | 11.0.16      | tem     |            | 11.0.16-tem
               |     | 11.0.16.1    | tem     |            | 11.0.16.1-tem
               |     | 11.0.15      | tem     |            | 11.0.15-tem
 Zulu          |     | 18.0.2       | zulu    |            | 18.0.2-zulu
               |     | 18.0.2.fx    | zulu    |            | 18.0.2.fx-zulu
               |     | 18.0.2.1     | zulu    |            | 18.0.2.1-zulu
               |     | 18.0.2.1.fx  | zulu    |            | 18.0.2.1.fx-zulu
               |     | 18.0.1       | zulu    |            | 18.0.1-zulu
               |     | 18.0.1.fx    | zulu    |            | 18.0.1.fx-zulu
               |     | 17.0.4       | zulu    |            | 17.0.4-zulu
               |     | 17.0.4.fx    | zulu    |            | 17.0.4.fx-zulu
               |     | 17.0.4.1     | zulu    |            | 17.0.4.1-zulu
               |     | 17.0.4.1.fx  | zulu    |            | 17.0.4.1.fx-zulu
               |     | 17.0.3       | zulu    |            | 17.0.3-zulu
               |     | 17.0.3.fx    | zulu    |            | 17.0.3.fx-zulu
               |     | 11.0.16      | zulu    |            | 11.0.16-zulu
               |     | 11.0.16.fx   | zulu    |            | 11.0.16.fx-zulu
               |     | 11.0.16.1    | zulu    |            | 11.0.16.1-zulu
               |     | 11.0.16.1.fx | zulu    |            | 11.0.16.1.fx-zulu
               |     | 11.0.15      | zulu    |            | 11.0.15-zulu
               |     | 11.0.15.fx   | zulu    |            | 11.0.15.fx-zulu
               |     | 8.0.345      | zulu    |            | 8.0.345-zulu
               |     | 8.0.345.fx   | zulu    |            | 8.0.345.fx-zulu
               |     | 8.0.342      | zulu    |            | 8.0.342-zulu
               |     | 8.0.342.fx   | zulu    |            | 8.0.342.fx-zulu
               |     | 8.0.332      | zulu    |            | 8.0.332-zulu
               |     | 8.0.332.fx   | zulu    |            | 8.0.332.fx-zulu
================================================================================
Omit Identifier to install default version 17.0.4.1-tem:
    $ sdk install java
Use TAB completion to discover available versions
    $ sdk install java [TAB]
Or install a specific version by Identifier:
    $ sdk install java 17.0.4.1-tem
Hit Q to exit this list view
================================================================================

様々なベンダからJavaの開発環境(JDK; Java Development Kit)が公開されています. AWSや,Oracle,java.net(OpenJDK),Azul Systems(Zulu)などです. この内容は,実行する環境により結果が異なります(上記の結果は,macOS Monterey, M1 で実行した結果).

この中で,インストールしたい Java のバージョンの Identifier の列を確認してください. この列がこれからインストールする Java のバージョンの文字列です.

$ sdk install java 17.0.4-zulu
    # java 17.0.4-zulu がインストールされる.
    # sdk list java の結果で 上記の 17.0.4 は異なる値になっているかもしれません.

これでインストールできたはずです.ターミナルを再起動してから java コマンドを実行して確認してみましょう.

asdfを使ったインストール

asdfは多種多様なツール,ライブラリのバージョン管理を行うためのCLIツールです.

asdfのインストール

Homebrew を使ってインストールしましょう.

$ brew install coreutils curl git # <- asdf の依存コマンドをインストールする.
$ brew install asdf

最後に,asdf のパスを通しましょう. 利用しているシェルを echo $SHELL で確認して,適切な方法を用いてください.

zsh を用いた場合.
echo -e ". $(brew --prefix asdf)/libexec/asdf.sh" >> ~/.zshrc
source ~/.zshrc
bash を用いた場合.
echo -e ". $(brew --prefix asdf)/libexec/asdf.sh" >> ~/.bash_profile
source ~/.bash_profile
asdfを使った Java のインストール

まず,asdf で Java を有効化するため,Java プラグインを追加しましょう.

$ asdf plugin add java

次に,有効な Java のバージョンを確認しましょう. 2022-04-01 現在 535 のバージョンが提供されています.

$ asdf list all java
adoptopenjdk-11.0.15+10
adoptopenjdk-11.0.16+8
adoptopenjdk-11.0.16+101
adoptopenjdk-17.0.0+35
... # 途中省略
corretto-11.0.16.9.1
corretto-17.0.0.35.1
corretto-17.0.0.35.2
corretto-17.0.1.12.1
corretto-17.0.2.8.1
corretto-17.0.3.6.1
corretto-17.0.4.8.1
corretto-17.0.4.9.1
corretto-18.0.0.35.1
... # 途中省略
zulu-jre-javafx-18.32.11
zulu-jre-javafx-18.32.13
$ asdf install java corretto-17.0.4.9.1

これでインストールできたはずです.ターミナルを再起動してから java コマンドを実行して確認してみましょう.

Homebrewを使ったインストール

macOS用のパッケージマネージャの一つである Homebrewbrewコマンド)を利用して Java をインストールする方法を記します.

Homebrew のインストール

ターミナルにて,brewコマンドを実行してください.ヘルプメッセージが出てくればインストールされています. brew: command not found と表示される場合はインストールされていません. ターミナルで次のコマンドを実行した後,新しいターミナルのウィンドウを開いてください.

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

詳細はHomebrewのページを確認してください.

Homebrew を使ったJavaのインストール

Homebrew でJavaをインストールするには,Homebrew caskの利用が必要です. Homebrew cask をすでに利用している場合は,次のコマンドをターミナルで実行するとJavaのインストールが行われます ($より後ろ,#より前を入力して Enter をタイプすること).

$ brew install --cask corretto8
    # Homebrew cask を利用して Java をインストールする.

ここでは,Amazon Web Service が提供するAmazon Correttoという Java の開発環境を利用します.

インストーラを利用したインストール

ここでは,Javaの配布元である Oracle からインストーラパッケージをダウンロードし, インストーラパッケージからJavaをインストールする方法を記します.

Amazon Corretto 17のダウンロードページから適切なインストーラをダウンロードしてください. Intel Macは macOS x64 を,M1 Macは macOS aarch64 をそれぞれダウンロードしてください.

その後は,通常のインストーラパッケージでインストールするときと同じように, ダウンロードしてできたインストーラパッケージをダブルクリックし, インストーラの指示に従ってインストールしてください.

エディタのインストール

この講義では,基礎プログラミング演習I, IIと同様に,エディタを利用してプログラムを作成します. Visual Studio Code for macOS を推奨します.

ただ,自分の好みのエディタを利用してもらっても構いません. ただし,次の機能の使い方を知っておくと,これ以降の演習の手間が大きく省けるでしょう.

推奨

その他のエディタ

非推奨のエディタ