Javaの環境構築について

## はじめに

私はITスクールのRareTECHで学習しています。学習を開始して今日で４ヶ月がたちました、RareTECHではITの基礎となる学習ももちろんですが、講師から最新の情報を教えてもらえる場所でもあります。受講生同士でチームを組むハッカソンが年に4回あり、受講生同士で切磋琢磨し合える場所でもあります。

そんな中、私は自身の学習のためにJavaの学習を行っています。どの言語でも環境の構築が初学者にとって情報が多すぎて、非常に難しいことであると私自身の経験で思いました。

:::note info
ここでは、Javaのローカル環境の構築 について確認していきます。
:::



## そもそもJavaってどんな言語？

### Javaの特徴
1. プラットフォームに依存しない
    Java で作成したプログラムはどの OS（Operating System）上でも動作する。
    そのため、プラットフォームごとの開発が不要になり、開発コストを削減できる。
2. オブジェクト指向の言語である
    Java はオブジェクト指向の言語である。オブジェクト指向のプログラムは、
    既存モジュールの再利用や拡張が容易なため、プログラムの生産性と保守性が向上する。
3. ネットワーク機能が充実している
    Web サーバ上で実行する形式のプログラム（サーブレット）などを開発できる。

## Javaでどうやって動くの？

Java のプログラムを動作させるには、JDK（Java Development Kit）、JRE（Java Runtime Environment）、JVM（Java Virtual Machine） の3つの要素が関わります。それぞれの役割を理解することで、Java の実行の仕組みを把握できます。

### JVM（Java Virtual Machine）
JVM は Java のプログラムを実行するための仮想マシンです。
Java のソースコード（.java）は、コンパイルされて バイトコード（.class） という中間コードに変換されます。
JVM はこのバイトコードを解釈し、OS に適した機械語に変換して実行します。
この仕組みにより、Java は 「一度書けばどこでも動く」 という特長を持ちます。

### JRE（Java Runtime Environment）
JRE は Java プログラムを 実行するための環境 です。
JVM に加えて、標準ライブラリ（Java の基本機能を提供するクラス群）や各種ツールが含まれています。
つまり、JRE がインストールされていれば Java アプリケーションを実行 できますが、開発はできません。

### JDK（Java Development Kit）
JDK は Java で開発を行うための環境です。
JRE に加えて、Java のコンパイラ（javac） や、デバッガ、開発ツールが含まれています。
Java のプログラムを作成・コンパイル・実行するには JDK をインストール する必要があります。


## Javaのプログラムの流れについて


プログラムの処理内容を、人間が理解しやすい形式で記述された文字列情報を、ソースコードと呼びます。ソースコードは、何らかのプログラミング言語によって記述され、テキストファイル（ソースファイル）として保存されます。プログラムを実行するためには、ソースコードを機械語（実行環境のOSやCPUが理解できる言語）に翻訳する必要があります。このように、ソースコードを機械語に翻訳するプロセスのことをコンパイルと呼びます。プログラムは、コンパイルされた機械語を実行することによって動作します。

### 実際のプログラムの流れ

1、ソースコードの作成（.java）
```
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```
２、コンパイル（.class の生成）
```
javac HelloWorld.java
```
→ HelloWorld.class（バイトコード）が生成される

３、JVM による実行
```
java HelloWorld
```
→ Hello, World! が出力される

## 開発環境の選択肢
JDK の選択肢
現在、Java の JDK にはいくつかの選択肢があります。代表的なものを紹介します。
| JDK の種類           | 特徴                                                   |
|----------------------|--------------------------------------------------|
| **Oracle JDK**      | Oracle が提供。商用利用はライセンス制限あり。         |
| **OpenJDK**         | オープンソース版。ほぼ Oracle JDK と同じ。           |
| **Eclipse Temurin** | OpenJDK ベースで、安定性とセキュリティが強化。       |
| **Amazon Corretto** | AWS 向けに最適化された OpenJDK。                     |
| **AdoptOpenJDK（旧）** | Eclipse Temurin に引き継がれた。                  |

### なぜ Eclipse Temurin を選ぶのか？
Eclipse Temurin は、かつての AdoptOpenJDK を引き継ぎ、信頼性と安定性のある OpenJDK のディストリビューション です

* 無料で使える（Oracle JDK のような商用ライセンス制限なし）
* セキュリティパッチやバグ修正が迅速
* Windows / macOS / Linux など様々な OS で動作
* 公式の OpenJDK をベースにしているため、互換性が高い
そのため、多くの開発者や企業で 標準的な JDK として採用されています。
また、Homebrew を使った簡単なインストール も可能なため、初心者にもおすすめです。

# Eclipse Temurin & Homebrew による環境構築手順

## 1. Homebrew をインストール（macOS のみ）

Homebrew は macOS でソフトウェアを簡単にインストールできるパッケージマネージャです。  
もし Homebrew がインストールされていない場合、以下のコマンドをターミナルで実行してください。[homebrew](https://brew.sh/ja/)

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

```

インストール後、以下のコマンドで Homebrew の動作を確認できます。
```
brew --version
```

### 2. Eclipse Temurin のインストール
Eclipse Temurin は OpenJDK ベースの安定した Java 実行環境です。
Homebrew を使って簡単にインストールできます。

```
brew install --cask temurin
```
インストール完了後、以下のコマンドで Java のバージョンを確認してください。
```
java -version
```
出力例:
```
openjdk version "23.0.1" 2024-10-15
OpenJDK Runtime Environment Homebrew (build 23.0.1)
OpenJDK 64-Bit Server VM Homebrew (build 23.0.1, mixed mode, sharing)
```
このように Temurin の名前が表示されれば、正常にインストールされています。

### 3. 環境変数の設定（必要に応じて）
✅JAVA_HOME の設定が必要になるケース

Maven や Gradle などのツールが JAVA_HOME を参照する場合
複数の Java バージョンを切り替える必要がある場合
java や javac がターミナルで動作しない場合
通常、brew install --cask temurin でインストールすると JAVA_HOME の設定は不要ですが、
上記のようなケースでは手動で環境変数を設定する必要があります！ 
 
以下のコマンドを実行し、JAVA_HOME のパスを確認してください。

```
/usr/libexec/java_home

```

設定が必要な場合は、以下のコマンドを .zshrc や .bash_profile に追加します。


```
echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> ~/.zshrc
source ~/.zshrc  # または source ~/.bash_profile
```
設定後、echo $JAVA_HOME で正しくパスが表示されるか確認してください。


### 4. Java の動作確認
Java の動作確認のため、以下のシンプルなプログラムを作成し、実行してみましょう。

HelloWorld.java
```
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
```
コンパイル
```
javac HelloWorld.java
```
実行
```
java HelloWorld
```

出力:
```
Hello, World!
```
このメッセージが表示されれば、環境構築は完了です。



## まとめ


初心者の方には非常に工程が多く感じる内容です。
難しい言葉もたくさんあると思います。
少しずつでいいので、慣れていきましょう。
最初は理解できなくて当たり前ですし、知らなくて当然です。
私は今でも分からないことが多く、日々学習しています。


最後に誤字脱字、解釈間違いなどございましたら、コメントなどで教えていただけましたら幸いです。