⚓ インストール
この講義では,Javaを使ったプログラミングの演習科目です. そのため,Javaの開発環境とエディタが必要です. 以下の内容を読み,必要なソフトウェアをインストールしてください. なお,本講義では,Javaとエディタの利用に 仮想環境を利用する方法とローカル環境にインストールする方法の2通りを紹介しますが, 仮想環境を利用する方法を推奨します.
仮想環境を利用する方法
この方法は,Visual Studio CodeとDocker を用いて開発を行います. この方法を使ってのプログラミングの動作イメージは以下の通りです. 画像をクリックすることで各ペイン(領域)の説明が表示されます.
🐳 Docker のインストール
Dockerのページに行くと下のようなボタンが表示されていると思います. Intel チップの場合は「Download Docker Desktop」のボタンを,Appleチップの場合は「Apple Chip」をクリックすることでダウンロードが始まります.

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

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

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

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 で開く
仮想環境でソースファイルが開くことができれば,ターミナルで以下のコマンドを入力して実行結果を確認してみましょう.
1, 5, 7行目の vscode@ の後ろの英数字は以下の通りでなくても構いません.
これで各ファイルの中身を確認したり,コンパイルや実行などが可能になります.
vscode@f7b361ede9b7:~/lesson00$ java -version # Javaのバージョンを確認する.
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
vscode@f7b361ede9b7:~/lesson00$ javac -version
javac 17.0.2
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の開発環境が用意されているのは仮想環境の中のみです. macOS にインストールされている ターミナル.app や iTerm2.app などを利用して(ローカル環境で) Java の開発は行えません. ローカル環境で Java の開発を行う場合は,ローカル環境にインストールする方法 に記されている方法で Java の開発をインストールしてください.
.devcontainerディレクトリ内のファイルで,仮想環境を設定しています. このディレクトリ内のファイルは編集しないようにしてください. もし編集したり,削除してしまって期待通りに動作しなくなった場合は,再度ダウンロードして始めてください.
ローカル環境にインストールする方法
インストール確認
まず,Java がインストールされているかを確認する.
ターミナルを開き,java -versionとjavac -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.x,13.x.x,14.x.x,15.x.x,16.x.x
になっていると古い Java 環境しかインストールされていないため,
Javaのインストールを参考に,
最新の Java をインストールするようにしてください.
なお,古いバージョンのソフトウェアは本講義ではサポートしません. 特にバージョンが 1.7.0_xxx 以前のものでは動かないサンプルプログラムも存在します. Oracle からのサポートもすでに切れており,使い続けること自体が推奨されないためです. そのため,上記のバージョンを確認し,最新の Java をインストールしておいてください. バージョンアップを行わないことによる不利益は自身で対応するようにしてください.
また,Javaの最新バージョンは,19 で 2022-09-20にリリースされます. 本講義で主に利用するバージョンは Java 17 とします.
なお,Javaのバージョンは次のように更新されていき,現在,有効なバージョンは 1.8, 11, 17, 19の4つのバージョンのみです.
- Java 1.8(2014-03-18)
- LTS(Long Term Support)2026年5月まで(Amazon Corretto)
- Oracleが提供する Java 1.8 はすでにサポートが終了しているため利用しないこと.
- Java 9(2017-09-21)サポート終了
- 毎年3月と9月の年2回に定期的にリリースされるよう変更された.
- Java 10(2018-03-20)サポート終了
- Java 11(2018-09-25)
- LTS(Long Term Support)2027年9月まで(Amazon Corretto)
- Java 12(2019-03-19)サポート終了
- Java 13(2019-09-17)サポート終了
- Java 14(2020-03-17)サポート終了
- Java 15(2020-09-15)サポート終了
- Java 16(2021-03-16)サポート終了
- Java 17(2021-09-14)
- 本講義の対象バージョン.
- LTS(Long Term Support)
- Java 18(2022-03-22)2022-09-20 にサポート終了.
- Java 19(2022-09-20)2023年3月に Java 20がリリースされるとサポート終了.
本講義では,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月まで サポートされるようです.
Javaのインストール
手元の macOS に Java をインストールするには,次の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用のパッケージマネージャの一つである Homebrew(brewコマンド)を利用して
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 corretto
# 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 を推奨します.
ただ,自分の好みのエディタを利用してもらっても構いません. ただし,次の機能の使い方を知っておくと,これ以降の演習の手間が大きく省けるでしょう.
- ソースコード全体の一括インデント
- インクリメンタル検索
- カーソルの行頭,行末,先頭行,末尾移動
- Javaのシンタックスハイライト