JavaとJMeterをインストールする

# 概要

Java（JMeterの動作に必要）およびJMeterのインストール方法を説明します。

- Macの場合およびWindowsの場合を扱います。
- jenvを使う場合の説明は、ここでは割愛します。

# Javaをインストール

Oracle Javaの有償化を巡って、Javaの開発環境（JDK）には様々な種類がありややこしくなっています。

- バージョン8まで
    - Oracle JDKを無償で利用できました。
- バージョン9以降
    - Oracle JDKが有償化されました。
    - 代替となるOpen JDKが様々な機関から無償で提供されるようになりました。
- バージョン17以降
    - Oracle JDKが再び無償で利用できるようになりました。（[こちら](https://www.publickey1.jp/blog/21/oracle_jdkjava_17.html)を参照）

JMeterを利用する際は、利用するJDKのバージョンと種類を選定した上で、下記のいずれかの方法でインストールしてください。

> JDKのバージョンおよび種類によっては、JMeterの動作に不具合が発生するケースがあります。その場合は別のバージョン・種類のJDKをインストールして試してください。

> Oracle JDK バージョン 17.0.1 では、JMeterのレポート出力時にエラーになるケースがあります。

## バージョン8まで

下記サイトからダウンロードしてインストールします。

https://www.java.com/ja/download/

## バージョン9以降

Open JDKをインストールします。

> Open JDKの種類は下記を参照

https://qiita.com/yamadamn/items/2dd26a014791b9557199

> MacでHomebrewを使う場合は下記を参照

https://qiita.com/gishi_yama/items/ee3526e7e7a922148333

> 例：Homebrewを使ってtemurinバージョン11をインストールする場合は、下記コマンドを実行します。

```bash
brew tap homebrew/cask
brew install --cask temurin11
```

## バージョン17以降

Oracle JDKを使う場合は下記サイトからダウンロードしてインストールします。

https://www.oracle.com/java/technologies/downloads/

> MacでHomebrewを使う場合は下記コマンドを実行します。

```bash
brew tap homebrew/cask
brew install --cask oracle-jdk
```

# JMeterをインストール

## 公式サイトからダウンロードする場合

下記サイトからダウンロードして展開します。

https://jmeter.apache.org/download_jmeter.cgi

## MacでHomebrewを使う場合

下記コマンドを実行します。

```bash
brew install jmeter
```

# JMeterのGUIを起動

公式サイトからダウンロードした場合は、展開先の`bin`フォルダの中にある下記ファイルを起動します。

- Windowsの場合
    - `jmeter.bat`
- Macの場合
    - `jmeter`

MacでHomebrewを使った場合は、下記コマンドを実行します。

```bash
jmeter
```

# JMeterで使われているJavaのバージョンを確認

複数のバージョン・種類のJDKがインストールされている場合は、JMeterでどのバージョンのJavaが使われているか確認するために簡単なテストを作成できます。

JMeterのGUIで、テスト計画の名前を入力します。（例：`Java Version Test Plan`）

![スクリーンショット 2022-01-18 15.42.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/a7bb5a14-2885-17d5-d9ed-bc2a9fe7fd85.png)

テスト計画にスレッドグループを追加します。

- Test Planを右クリック ＞「Add」＞「Threads(Users)」＞「Thread Group」をクリック

![スクリーンショット 2022-01-18 15.46.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/c3877b44-1d7f-c30d-2ca1-2a16f32a2143.png)

スレッドグループにJSR223 Samplerを追加します。

Thread Groupを右クリック＞「Add」＞「Sampler」＞「JSR223 Sampler」をクリック

![スクリーンショット 2022-01-18 15.47.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/157aad6d-fc0c-cb62-bfd8-ab526532de00.png)

追加したJSR223 Samplerにて、下記の項目に入力します。

- Name
    - Get Java Version
- Language
    - groovy
- Script
    - `return System.getProperty('java.version');`

![スクリーンショット 2022-01-18 15.49.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/6c3a0d9a-e901-b315-3652-fdbaee2c17b0.png)

テスト計画に結果表示ツリーを追加します。

- Test Planを右クリック＞「Add」＞「Listener」＞「View Results Tree」をクリック

![スクリーンショット 2022-01-18 15.51.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/8bb3bbcb-c067-cacd-596b-808658327ec4.png)

テスト計画を保存します。

- **テスト計画を選択している状態**で保存ボタンをクリック
- 保存ダイアログで保存先フォルダを選び、ファイル名を入力して「Save」をクリック

![スクリーンショット 2022-01-18 15.52.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/a448660e-3b15-a943-f2ee-f4583ad19ab3.png)

スタートボタンをクリックしてテスト計画を実行したのち、下記の手順でJavaのバージョンを確認します。

- 結果表示ツリーを選択
- JSR223 Samplerの結果を選択
- 「Response data」タブを選択
- 「Response Body」タブを選択

![スクリーンショット 2022-01-18 18.29.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/6c3f6e4d-441d-badd-e0bd-8d3e2463d41a.png)

もし想定しているJavaのバージョンと異なる場合は、[こちら](#jmeterの環境変数を設定)の手順で使いたいバージョン・種類のJDKを設定します。その後JMeterのGUIを再起動したのち、再びテスト計画を実行してJavaのバージョンが変更されていることを確認します。

# JMeterの環境変数を設定

環境変数を設定する場合は、設定ファイルを作成します。

- 設定ファイル作成場所
    - 公式サイトからダウンロードした場合
        - 展開先の`bin`フォルダ
    - MacでHomebrewを使った場合
        - `/usr/local/Cellar/jmeter/x.x.x/libexec/bin`

- 設定ファイル名
    - Windowsの場合
        - `setenv.bat`
    - Macの場合
        - `setenv.sh`

## JAVA_HOME

> Macの場合のみ

複数のバージョン・種類のJDKがインストールされている場合は、JMeterで使用するJDKのバージョン・種類をJAVA_HOME環境変数で明示的に指定できます。

下記コマンドを実行して、使用したいバージョン・種類のJava Homeを取得します。

```bash
/usr/libexec/java_home -V
```

![スクリーンショット 2022-01-14 6.37.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268124/eef2c98c-7cd3-e824-68f8-587cafcb50cf.png)

`setenv.sh`を編集して、取得したJava Homeを環境変数JAVA_HOMEに設定します。

> 例：temurinバージョン11を設定する場合

```shell:setenv.sh
#! /bin/sh

export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
```

## JM_LAUNCH

> Windowsの場合のみ

複数のバージョン・種類のJDKがインストールされている場合は、JMeterで使用する`java.exe`のパスをJM_LAUNCH環境変数で明示的に指定できます。

`setenv.bat`を編集します。

> 例：`C:\work\java`フォルダに展開したtemurinバージョン11を設定する場合

```:setenv.bat
@echo off

set JM_LAUNCH=C:\work\java\OpenJDK11U-jdk_x64_windows_hotspot_11.0.13_8\jdk-11.0.13+8\bin\java.exe
```

## HEAP

JMeterを実行する時にJavaが使うメモリ領域に関する設定です。設定内容の詳細は下記サイトなどをご覧ください。

https://overworker.hatenablog.jp/entry/2020/05/12/235652

> Macの場合

```shell:setenv.sh
#! /bin/sh

export HEAP="-Xms2g -Xmx6g -XX:MaxMetaspaceSize=256m"
```

Windowsの場合

```:setenv.bat
@echo off

set HEAP=-Xms2g -Xmx6g -XX:MaxMetaspaceSize=256m
```