M2 macを使って Javaの環境構築を行なってみる。

# はじめに
普段はRubyやTypeScriptを使ってるプログラマーです。今回、Javaを業務の都合上使うことになりそうでしたので、自宅での学習をするために、環境構築を初めて行なってみます。参考になれば幸いです。今回、Dockerは使用しておりません。

# 環境
- 端末: Mac mini
- チップ: Apple M2
- メモリ: 8GB
- OS: macOS Sonoma(14.3.1)
# 手順
1. JDKのダウンロード
1. VScode 設定
1. Hello worldを表示させたい

## JDKのダウンロード

[azul](https://www.azul.com/downloads/?os=macos&architecture=arm-64-bit&package=jdk#zulu) のサイトからJDKダウンロードします。


![スクリーンショット 2024-10-12 3.06.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/ce899e9a-d9a4-7914-9966-9f0f99be0ee1.png)

Operating Systemは、macOS
Architectureは、ARM 64-bit
Java Packageは、JDK

上記の設定で検索を行い、インストールしたいJDKを選びます。今回はJava 23をインストールしたいと思います。(なんとなく最新なので)

![スクリーンショット 2024-10-12 3.15.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/5199e061-cd22-d2db-eab1-92dfe60b47d3.png)

ダウンロードができたら上記のウィンドウが立ち上がるので、右にあるダンボールをクリックしましょう。

![スクリーンショット 2024-10-12 3.16.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/7ce94b19-d4cd-d5ee-4ca7-187f959be3d8.png)

そのまま「続ける」を押下し、そのままインストールしてみます。

/Library/Java/JavaVirtualMachines

上記のパスにインストールされていて、Javaバージョンチェックできれば成功です。

```
$ cd /Library/Java/JavaVirtualMachines
$ ls
zulu-23.jdk
$ Java -version
openjdk version "23" 2024-09-17
OpenJDK Runtime Environment Zulu23.28+85-CA (build 23+37)
OpenJDK 64-Bit Server VM Zulu23.28+85-CA (build 23+37, mixed mode, sharing)
```
※アンインストールしたい時はこの[zulu-23.jdk]を削除すればOKだそう。他のバージョンのJDKと競合したりする時にアンインストールしたりですかね。

## JDKとは
:::note info
プログラミング言語Javaのソフトウエア開発キット（SDK）。コンパイラー、デバッガーなどの開発者向けの各種ツールをひとまとめにしたものです。
:::

# VScodeの設定
補足ですが、僕がVScodeを使っているのはただ使い慣れているためです()

![スクリーンショット 2024-10-12 3.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/4866798a-a06c-16b2-43d4-5d33435693da.png)

上記の拡張機能をインストールしてください。

# Hello Worldを表示させたい

![スクリーンショット 2024-10-12 3.45.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/ba4e5059-afa9-de63-da4b-9eff0e21c1e5.png)

上記のように、VScode上で cmd+shift+Pを開いて[create Java]と入力し、[create Java Project]的なことを書いている箇所をクリックしてプロジェクトを作成します。

![スクリーンショット 2024-10-12 3.46.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/4baeccc1-14d2-5f93-f51a-be76ba1581b7.png)

そうすると、上記のような選択肢が出ると思います。GradleやSpring Bootだったり、聞いたことがある単語が並んでますね！今回は No build toolを選択します。

![スクリーンショット 2024-10-12 3.51.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/9b2dd6dc-a4c3-22cb-7934-47b67de009c7.png)

ではプロジェクト名を決めましょう！
適当に[javaPractice20241012]という風に今回は名付けました！

![スクリーンショット 2024-10-12 3.53.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/e38b08bd-291d-cf5c-1f1f-30ae61fbe40d.png)

Enterを押すと上記の画面が自動で出てきてくれます。のでsrcフォルダにあるApp.javaを開きましょう。

![スクリーンショット 2024-10-12 3.54.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2709775/2b0c012d-4d25-6666-5242-7467d4849e94.png)

簡単にRunさせる方法は、ソースコードの中にRunとありますのでこれを叩いてみましょう。すると自動で下記のように表示結果を得られます。

```
$ /usr/bin/env /Library/Java/JavaVirtualMachines/zulu-23.jdk
/Contents/Home/bin/java --enable-preview -XX:+ShowCodeDetailsInExceptionMessages -cp /Users/kanazawamadoka/develop/javaPra
ctice20241012/bin App 
Hello, World!
```

環境構築完了です！

### ※ターミナルから実行したい場合
一度コンパイルする必要があります。
```:ターミナル
# カレントディレクトリ
$pwd
/Users/myUser/develop/javaPractice20241012
$ ls
README.md       bin             lib             src

# javacで コンパイルしましょう
$ javac src/App.java 

# .classの拡張子をしたファイルが生成される。
% ls src
App.class       App.java

# それを実行してみる
$ java -cp src App  
Hello, World!
```

# 最後に
結構スラスラっと環境構築できたので良かったです！
次回はDocker×Javaもやってみようかな。いろんなツールやFWだったり、まだまだ僕には未知の世界なので調べてここに書き綴りたいと思います。
ご精読ありがとうございました。