【初心者】Javaの環境構築（Adopt Open JDKの導入まで）

# 1. はじめに
Androidアプリ作成のため**Java**を知識ゼロから独学で学んでみることにしました。
Kotlinは使用しません。

学びながら、経過を書いていくので、間違いも多々あろうかと思います。
でも、失敗や勘違いも含めて、そういう経過を書き残しておきます。

なお環境は、**mac**で進めていきます。

まずは、環境構築からです。
今回は、無償で商用利用もできる「**Adopt Open JDK**」というものを導入することにしましたが、その選定の経緯を含めて作業内容を残しておきます。

## 1-1. Javaは有償化された？

環境構築をしようとして、最初からつまづきました。
**Javaは有償化された**との記事がちらほらとあります。

調べてみると、「**Oracle JDK**」というものが有償化されたのであって、Java自体は無償とのこと（詳しくは「[Java有償化」って、どういうこと？～](https://www.knowledgewing.com/kw/blog/2019/03/java-update.html)」を参照ください）。
なお、「**有償となるのは商用利用する場合**」であり、個人的な学習などであれば「Oracle JDK」も無償で使用できます。

## 1-2. Oracle JDKとは

Oracle JDKとは何なのか。
以下「[商用製品／Oracle JDKとは](https://www.ossnews.jp/oss_info/Oracle_JDK)」からの引用です。
>Oracle JDK(オラクルジェーディーケー)とは通称であり、Oracle社が提供するJava言語用開発ツールキット「JDK(Java SE Development Kit)」を指します。

まあ、Oracle社が提供する「Java開発ツール」ということですね。
C言語で言うと、Visual Studio とか gcc のようなものなんでしょう、きっと。

## 1-3. JDKとは

そして、JDK（Java SE Development Kit）とは何なのか。
これも、[先ほどのサイト](https://www.ossnews.jp/oss_info/Oracle_JDK)に、次のように書いてありました。

>「JDK」とは「Java SE Development Kit」の略称です。
JavaSEを利用してJava言語でプログラム開発を行う際に必要な開発用ソフトウェアをまとめたパッケージです。「コードエディタ」や「IDE(統合開発環境)」などは付属しておらず、Javaプログラム開発を始めるための最低限のソフトウェアのセットです。
JDKには以下のものが含まれます。
・コンパイラ
・デバッガ
・アーカイバ
・Javaプログラム実行環境(JRE)　など

まあ、コンパイラなどの「開発用のソフトウェアをまとめたもの」ということですね。
コンパイラについては、weblio辞書の「[コンパイラ型言語](https://www.weblio.jp/content/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E8%A8%80%E8%AA%9E)」を参照してください。


## 1-4. Java SEとは

JDKの説明に出てくる「Java SE」とは「Java Platform, Standard Edition」の略で、 Javaプラットフォームで使用されるAPIの集合体とのことです。
いまいちイメージが湧きませんが、今は、「まあ、そんなものか」と思っておきます。

# 2. AdoptOpenJDKのインストール

以上で見たように、現在は、「**Oracle JDK**」は無償で商用利用はできません。
厳密には、バージョンにより無償利用も可能（下記参考サイト）ですが、ここでは詳しく書きません。


●参考サイト
[Java有償化とは？無償で利用できない？いや、できます。](https://cakephp2.com/programming/java/7238/)


じゃあ、世の方々はどうしているのかと調べてみると、無償で商用利用もできる「**Adopt Open JDK**」というものがあるようで、これを使っている人が多いようです。

●参考サイト
[Android Studioで別のOpenJDKプロバイダーによるJDKを使用する](https://qiita.com/keicha_hrs/items/56fbdab9874475a0ced4)

## 2-1. ダウンロード方法

結論として、無償で商用利用もできる「**Adopt Open JDK**」を使うことにしました。
次のURLからダウンロードできます。

Adopt Open JDKのサイト：https://adoptopenjdk.net/

URLをクリックすると、`Windows`か`Mac`かを自動的に判定してくれます。
私の環境は、macなので、`Download for macOS x64`と表示されています。

![AdoptOpenJDK2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551412/aa3f6ff0-e9a9-3711-7ab7-537493b748b1.png)

ダウンロードする前に、`1. Choose a Version`（Javaのバージョン）と`2. Choose a JVM`（Java仮想マシン）の項目を選択する必要があります。

### バージョンの選択

ここでは、バージョンは`OpenJDK 11 (LTS)`を選択しました。
**LTS**とは Long Term Support版のことで、長期間のサポートがされるバージョンとなります。
このLTSの最新版を使用すれば、おおよそ間違いないと思います。

### JVMの選択

ここでは、JVMは`HotSpot`を選択しました。
**JVM**とは、Java仮想マシン（Java Virtual Machine）のことで、Javaプログラムを実行するために必要となるものとのことです。詳しくは分かりませんが、まあ、そんなものと考えておきます。
選択肢として、`HotSpot`と`OpenJ9`の２つがありますが、初心者の私にはさっぱりわかりません。
「[AdoptOpenJDKを使う](https://www.gwtcenter.com/using-adoptopenjdk)」というサイトをみると、Oracle Javaとの互換性を優先したければ`HotSpot`を選択した方が良いようなので、ここは保守的に`HotSpot`としておきました。

あとは、青いボタンを押してダウンロードを開始します。

## 2-2. インストール方法

ダウンロードしたファイルをダブルクリックすると、インストーラーが立ち上がります。
あとは、画面の指示に従って進めれば問題なくインストールができました。

インストールに際しては、Windows版の解説となりますが「[AdoptOpenJDK11（JDK11）インストール手順＜Windows向け＞](https://sukkiri.jp/technologies/processors/jdk/adoptopenjdk11-win_install.html)」というサイトを参考にしました。

# 3. インストール後の確認

ターミナルで`java -version`というコマンドを打ってJavaのバージョンを確認してみます。

```
$ java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)
```

以上のように表示されれば、無事にJDKがインストールできたことになると思います。

# 4. おわりに

今ある解説が、ほとんど**Oracle JDK**を使用するものであり、環境も**Windows**の場合が多いので、**mac**で**Adopt Open JDK**を使用する場合の過程を残しておくことにしました。

まだ、これで良かったかどうかの結果が見えないので、少しずつ記録を残していこうと思います。