Mac VSCode JavaでHelloWorldした

# はじめに

タイトル通り、ただHelloWorldするだけです。
よくある標準出力するだけの課題とかをささっとすますにはいいかもしれません。
今からこの環境でWebアプリとか作っちゃうんだ！って人にはお勧めしません。
他にIntelliJ IDEA, Eclipse + Pleiades, NetBeansでの環境構築をしている記事等々あると思うので、そちらを参考にしてください。
どうしても、VSCodeでやってみたいんだ！って人だけ参考にしていただければと思います。

## 動作確認した環境

- macOS : Catalina 10.15.5
- VSCode : 1.45.1
- Java : Amazon Correto 11.0.7

## 方法

Javaはすでに入っているよと言う人は、「VSCodeにJavaの拡張を入れる」まで飛ばしてください。

### SDKMAN!をインストールする

SDKMAN!は簡単に言うと同一環境で複数のJavaを管理するためのツールです。
こちらを参考にSDKMAN!をインストールしましょう。
<https://sdkman.io/install>

お持ちのMacのOSのバージョンが購入時点でCatalinaの場合は最初のcurlを以下のように変更しておきましょう。

```bash
curl -s "https://get.sdkman.io" | zsh
```

CatalinaからMacのデフォルトシェルはzshになっています。
fishとかは試していないので、知っているからがいらっしゃったら教えて欲しいです。

### SDKMAN!でお好みのJavaをインストールする

まず、以下のコマンドを実行しSDKMAN!でインストールできるJavaを確認しておきましょう。

```bash
sdk list java
```

そうすると、以下のように出力されます。（2020/6現在）
出力されない場合はSDKMAN!のインストールがうまくできていないです。

```text
================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 14.0.1.j9    | adpt    |            | 14.0.1.j9-adpt
               |     | 14.0.1.hs    | adpt    |            | 14.0.1.hs-adpt
               |     | 13.0.2.j9    | adpt    |            | 13.0.2.j9-adpt
               |     | 13.0.2.hs    | adpt    |            | 13.0.2.hs-adpt
               |     | 12.0.2.j9    | adpt    |            | 12.0.2.j9-adpt
               |     | 12.0.2.hs    | adpt    |            | 12.0.2.hs-adpt
               |     | 11.0.7.j9    | adpt    |            | 11.0.7.j9-adpt
               |     | 11.0.7.hs    | adpt    |            | 11.0.7.hs-adpt
               |     | 8.0.252.j9   | adpt    |            | 8.0.252.j9-adpt
               |     | 8.0.252.hs   | adpt    |            | 8.0.252.hs-adpt
 Amazon        | >>> | 11.0.7       | amzn    | installed  | 11.0.7-amzn
               |     | 8.0.252      | amzn    |            | 8.0.252-amzn
               |     | 8.0.202      | amzn    |            | 8.0.202-amzn
 Azul Zulu     |     | 14.0.1       | zulu    |            | 14.0.1-zulu
               |     | 13.0.3       | zulu    |            | 13.0.3-zulu
               |     | 13.0.3.fx    | zulu    |            | 13.0.3.fx-zulu
               |     | 12.0.2       | zulu    |            | 12.0.2-zulu
               |     | 11.0.7       | zulu    |            | 11.0.7-zulu
               |     | 11.0.7.fx    | zulu    |            | 11.0.7.fx-zulu
               |     | 10.0.2       | zulu    |            | 10.0.2-zulu
               |     | 9.0.7        | zulu    |            | 9.0.7-zulu
               |     | 8.0.252      | zulu    |            | 8.0.252-zulu
               |     | 8.0.252.fx   | zulu    |            | 8.0.252.fx-zulu
               |     | 8.0.232.fx   | zulu    |            | 8.0.232.fx-zulu
               |     | 8.0.202      | zulu    |            | 8.0.202-zulu
               |     | 7.0.262      | zulu    |            | 7.0.262-zulu
               |     | 7.0.181      | zulu    |            | 7.0.181-zulu
 BellSoft      |     | 14.0.1.fx    | librca  |            | 14.0.1.fx-librca
               |     | 14.0.1       | librca  |            | 14.0.1-librca
               |     | 13.0.2.fx    | librca  |            | 13.0.2.fx-librca
               |     | 13.0.2       | librca  |            | 13.0.2-librca
               |     | 12.0.2       | librca  |            | 12.0.2-librca
               |     | 11.0.7.fx    | librca  |            | 11.0.7.fx-librca
               |     | 11.0.7       | librca  |            | 11.0.7-librca
               |     | 8.0.252.fx   | librca  |            | 8.0.252.fx-librca
               |     | 8.0.252      | librca  |            | 8.0.252-librca
 GraalVM       |     | 20.1.0.r11   | grl     |            | 20.1.0.r11-grl
               |     | 20.1.0.r8    | grl     |            | 20.1.0.r8-grl
               |     | 20.0.0.r11   | grl     |            | 20.0.0.r11-grl
               |     | 20.0.0.r8    | grl     |            | 20.0.0.r8-grl
               |     | 19.3.1.r11   | grl     |            | 19.3.1.r11-grl
               |     | 19.3.1.r8    | grl     |            | 19.3.1.r8-grl
 Java.net      |     | 15.ea.26     | open    |            | 15.ea.26-open
               |     | 14.0.1       | open    |            | 14.0.1-open
               |     | 13.0.2       | open    |            | 13.0.2-open
               |     | 12.0.2       | open    |            | 12.0.2-open
               |     | 11.0.2       | open    |            | 11.0.2-open
               |     | 10.0.2       | open    |            | 10.0.2-open
               |     | 9.0.4        | open    |            | 9.0.4-open
 SAP           |     | 14.0.1       | sapmchn |            | 14.0.1-sapmchn
               |     | 13.0.2       | sapmchn |            | 13.0.2-sapmchn
               |     | 12.0.2       | sapmchn |            | 12.0.2-sapmchn
               |     | 11.0.7       | sapmchn |            | 11.0.7-sapmchn
================================================================================
Use the Identifier for installation:

    $ sdk install java 11.0.3.hs-adpt
================================================================================
```

私はAmazon Corretto 11.0.7を入れているので、Installedになっています。
以下はCorrettoをインストールする例です。
`11.0.7-amzn`を好きなIdentifierに変更ください。

```bash
$ sdk install java 11.0.7-amzn
```

それではちゃんとJavaがインストールされているか確認しましょう！

```bash
$ java --version
openjdk 11.0.7 2020-04-14 LTS
OpenJDK Runtime Environment Corretto-11.0.7.10.1 (build 11.0.7+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.7.10.1 (build 11.0.7+10-LTS, mixed mode)
```
インストールされたJavaが表示されたら成功です。

### VSCodeにJavaの拡張を入れる

VSCodeを立ち上げ、拡張機能の検索で`Java`と検索しましょう。
[Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)を選択し、インストールしてください。

### Javaのプロジェクトを作成する

拡張を入れたことによってJavaのプロジェクトを作成することが可能になっています。
`Shift + Command + P`でコマンドパレットを開き、Javaと入力してください。
<img width="569" alt="スクリーンショット 2020-06-10 23.14.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318867/96696004-13c2-5635-9556-71ce42aa80e1.png">
このように色々とコマンドが出てきます。
`Java: Create Java Project`を選択してください。
そうすると、以下のように表示されます。
<img width="567" alt="スクリーンショット 2020-06-10 23.19.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318867/0d51056b-8f48-733b-a06f-9f4dabb763e2.png">
この記事ではHelloWorldを出すことしか考えていないので、とりあえず`No build tools`を選択します。
どこに作るか聞かれるので、お好きなディレクトリにお好きな名前で作ってください。
そうすると、画面の右下に以下のように表示されます。
<img width="453" alt="スクリーンショット 2020-06-10 23.19.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318867/eebe7099-e2c3-7c1e-4d65-d34de234f517.png">
何度も言いますが、HelloWorldをするだけなのでとりあえず`Never`を選んでおいてください。
そうすると、このような構成でプロジェクトが作成されます。
<img width="256" alt="スクリーンショット 2020-06-10 23.40.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318867/6968c265-2567-e36e-b691-02fd98c16e3c.png">
`App.java`を選択すると念願のHelloWorldを出力するだけのmainメソッドが表示されるのでRunをクリックしてください。
<img width="424" alt="スクリーンショット 2020-06-10 23.43.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318867/c4e99e37-451d-d4aa-d738-a9d7988b6154.png">

念願のHelloWorldが表示されます！