1.2 Javaの開発環境（JDK、Eclipse、Pleiades）～Java Basic編

### はじめに

#### 自己紹介

皆さん、こんにちは、Udemy講師の斉藤賢哉です。私はこれまで、25年以上に渡って企業システムの開発に携わってきました。特にアーキテクトとして、ミッションクリティカルなシステムの技術設計や、Javaフレームワーク開発などの豊富な経験を有しています。
様々なセミナーでの登壇や雑誌への技術記事寄稿の実績があり、また以下のような書籍も執筆しています。
* [「マスタリング Java EE 5」（2007年）](https://amzn.asia/d/j0txqK5)
* [「アプリケーションアーキテクチャ設計パターン」（2017年）](https://amzn.asia/d/9avaCyF)

いずれも**Java EE**（**Jakarta EE**）を中心にした企業システム開発のための書籍です。中でも [「アプリケーションアーキテクチャ設計パターン」](https://amzn.asia/d/9avaCyF)は、（Javaに限定されない）比較的普遍的なテーマを扱っており、内容的にはまだまだ陳腐化していないため、興味のある方は是非手に取っていただけると幸いです（中級者向け）。

#### Udemy講座のご紹介

この記事の内容は、私が講師を務めるUdemy講座『**Java Basic編**』の一部の範囲をカバーしたものです。『**Java Basic編**』はこちらの[**リンク**](https://www.udemy.com/course/learn-java-se-basic/?referralCode=594C958456356851C97C)から購入できます（セールス対象外のためいつも同じ価格）。また**定価の約30%OFFで購入可能なクーポン**をQiita内で定期的に発行していますので、興味のある方は、ぜひ私の他の記事をチェックしてみてください。

この講座は、以下のような皆様にお薦めします。
* Javaの言語仕様や文法を正しく理解すると同時に、現場での実践的なスキル習得を目指している方
* 新卒でIT企業に入社、またはIT部門に配属になった、新米システムエンジニアの方
* 長年IT部門で活躍されてきた中堅層の方で、学び直し（リスキル）に挑戦しようとしている方
* 今後、フリーランスエンジニアとしてのキャリアを検討している方
* 「**Chat GPT**」のエンジニアリングへの活用に興味のある方
* 「**Oracle認定Javaプログラマ**」の資格取得を目指している方
* IT企業やIT部門の教育研修部門において、新人研修やリスキルのためのオンライン教材をお探しの方

#### この記事を含むシリーズ全体像

この記事はJava SEの一部の機能・仕様を取り上げたものですが、一連のシリーズになっており、**シリーズ全体でJava SEを網羅**しています。また認定資格である「**Oracle認定Javaプログラマ**」（Silver、Gold）の範囲もカバーしています。シリーズの全体像および「Oracle認定Javaプログラマ」の範囲との対応関係については、以下を参照ください。

https://qiita.com/KenyaSaitoh/items/4711a078a851510bc4da

## 1.2 Javaの開発環境

### チャプターの概要

このチャプターでは、Javaプログラムの開発や実行に必要なツール類や環境、そしてそれらをセットアップする方法などについて学びます。

### 1.2.1 JDK

#### JDK（Java Development Kit）とは

JDK（Java Development Kit）とは、Javaプログラムの開発に必要になる、最も基本的なツールキットです。具体的には、Java言語の本体ともなるクラスライブラリや、Javaプログラムの実行環境であるJVM、そしてコンパイラといった各種ツール類などが含まれます。
なおクラスライブラリとJVMのことを合わせて、JRE（Java Runtime Environment）と呼びます。JREは、単に「ランタイム」または「Javaランタイム」と呼ばれることもありますが、本コースでは「Javaランタイム」で統一します。
JDKおよびJavaランタイムと各種ツール類の関係性を示すと、以下のようになります。

【図1-2-1】JDK、Javaランタイム、各種ツール類の関係性

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/e1bb741b-80fd-4cbc-d637-64c6448b663a.png)

:::note info
JDKには、Oracle社によるOracle JDKや、OSSのOpenJDKなど、幾つかの選択肢があります。
:::

#### JDKのダウンロードとディレクトリ構成

本コースでは、学習の目的で後述するEclipse（Pleiades）に同梱されたJDKを利用します。一般的な利用目的では、単独でJDKを利用するケースもあるため、JDKを単独でダウンロードおよびインストールする方法を紹介します。
まずOracle JDKとOpenJDKは、それぞれ以下のサイトからダウンロード可能です。

Oracle JDK
https://www.oracle.com/java/technologies/downloads/
OpenJDK
http://jdk.java.net/

ここではOSはWindowsとし、OpenJDKを利用するものとします。
ダウンロードしたZIPファイル（openjdk-18.0.1.1_windows-x64_bin.zip）を、任意のディレクトリで展開します。本コースではCドライブ直下に"LetsLearn"、その下に"Java"というディレクトリを作成し、さらにその下に「openjdk-18.0.1.1」というディレクト名で展開するものとします。
展開されたC:/LetsLearn/Java/openjdk-18.0.1.1ディレクトリの中は、以下のような構成になっています。binディレクトリの配下には、Javaプログラムの実行コマンド（java.exe）や、コンパイラ（javac.exe）が配置されています。

```
+-- LetsLearn
     +-- Java
          +-- openjdk-18.0.1.1
               +-- bin
                    +-- java.exe   → 実行コマンド
                    +-- javac.exe  → コンパイラ
                    ....
               +-- jre
                    +-- lib
                         +-- クラスライブラリ等
                         ....
               ....
```

通常はこのディレクトリにパスを設定します。パスを設定すると、ディレクトリ名を指定することなくコマンド名だけで実行することが可能になります。
Windowsの場合は「システム」->「システムの詳細設定」->「環境変数」から、「システム環境変数」の"Path"を"編集"して設定します。

![1.2.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/eeb65e53-ad32-18f7-eb40-067963327f7c.png)

またこのディレクトリに、環境変数としてJAVA_HOMEを設定しておくと良いでしょう（本コースを進める上でマストではありません）。JAVA_HOME環境変数は、Javaを利用する様々なアプリケーションによって参照されます。

### 1.2.2 統合開発環境とEclipse

#### テキストエディタ

開発者がソースコードを記述するためのツールの代表が、テキストエディタです。
テキストエディタには、Windowsの場合は「メモ帳」、macOSの場合は「テキストエディット」など、OSに標準で搭載されている簡易的なものや、Vim、Emacs、Sublime Textなど、よりプログラム開発に特化したものもあります。

#### 統合開発環境（IDE）

統合開発環境（IDE）とは、ソフトウェア開発のための様々な機能を持った統合的な開発ツールです。統合開発環境を利用すると、コーディングだけではなく、コンパイルやビルド、デバッグといった開発のための一連の作業を、1つのツール上でシームレスに実行することが可能になります。
小規模なアプリケーション開発であれば、テキストエディタで事足りる可能性がありますが、ある程度の規模のアプリケーション開発になると、統合開発環境の豊富な機能を利用しないと効率的に開発することは困難です。
Javaの統合開発環境には、JetBrains社の「IntelliJ IDEA」やOSSの「Apache NetBeans」など、様々な種類がありますが、本コースでは代表的な統合開発環境の1つであるEclipseを利用します。

#### Eclipseとは

Eclipseとは「The Eclipse Foundation」によって開発されているOSSの統合開発環境で、無料で利用することができます。
https://www.eclipse.org/
またEclipseには「Eclipse Marketplace」にて様々なプラグインが公開されており、必要なプラグインを組み込むことで機能を拡張することができます。
https://marketplace.eclipse.org/

#### Pleiadesとは

素のEclipseは英語版ですが、「MergeDoc Project」によってEclipseを日本語化した「Pleiades」が提供されています。
https://mergedoc.osdn.jp/

Pleiadesには、日本語化対応に加えて、利用価値の高い様々なプラグインがあらかじめインストールされている「Pleiades All in One」があります。「Pleiades All in One」には、Javaを初め、C言語やPythonなど、様々なプログラミング言語のための開発環境がラインアップされています。
また「Pleiades All in One」には、2つのエディションがあります。
1つはStandard Editionで、この中にJDKは含まれません。個別にインストールしたJDKを利用する場合は、このエディションを選択します。もう1つはFull Editionで、JDKも含めて開発に必要なすべてのパッケージが同梱されています。
本コースでは、Java用の「Pleiades All in One Full Edition」を利用するものとします。

### 1.2.3 本コースにおける開発環境のセットアップ

#### Pleiadesのダウンロード

本コースでは、日本語化されたEclipseである「Pleiades All in One Full Edition」を利用します。Pleiadesは「MergeDoc Project」のサイトより、最新版をダウンロードしてください。
まず以下のサイトに進みます。
https://mergedoc.osdn.jp/

![画像1 [2].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/d2bfffe6-f5f2-2db1-4bc5-05639ae7ef06.png)


そして、最新版である「Eclipse 2022」を選択し、次の画面に進みます。本コースでは、Java用の「Pleiades All in One Full Edition」を利用しますので、OSの種類に合わせてダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/a327cc38-bc54-9fc2-8a04-5f66ef21085c.png)

ここでは、Windowsを前提に解説を進めますが、macOSをご利用の方は適宜読み替えをお願いします。「Download」ボタンを押下すると、「pleiades-2022-12-java-win-64bit-jre_xxxxxxxx.exe」といったEXEファイルがダウンロードされます。

#### Pleiadesのセットアップ

前項でダウンロードしたEXEファイルは自己解凍機能が付いていますので、エクスプローラーなどでダウンロード先ディレクトリを開いたら、そのままダブルクリックして実行します。
すると、以下のような画面が立ち上がります。

![2023-02-04 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/f8944ee0-969b-d381-8ba5-d139e9813767.png)

デフォルトでは、展開先すなわち「作成先フォルダ」が「c:/pleiades/2022-12」になっていますが、ここは本コース用に「**c:/LetsLearn/Java/pleiades/2022-12**」に書き換えてください。
なお筆者の環境では、Windowsであってもパスの区切りには（"¥"ではなく）"/"を指定しないとうまく展開されませんでしたので、皆さんも同じようにしてもらえると確実だと思います。
次に「解凍」ボタンを押下すると、以下のように解凍が始まります。

![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/139acaea-ef06-84e3-f97c-8e7d6893e1e8.png)

解凍が終了したら、以下のようなディレクトリ構成になっていることを確認してください。

```
+-- LetsLearn
     +-- Java
          +-- pleiades
               +-- 2022-12
                    +-- eclipse
                         +-- eclipse.exe
                    +-- java
                    ....
```

Eclipseを起動するためには、展開先ディレクトリに配置された"C:/LetsLearn/Java/pleiades/2022-12/eclipse/eclipse.exe"を実行しますが、Eclipse起動後の操作方法はチャプター2.2で説明します。
なおここでは、本記事の作成時点の最新バージョンである「pleiades-2022-12」を前提にしています。皆さんがPleiadesをダウンロードする際は、その時の最新バージョンに合わせて「pleiades-XXXX-XX」の数字が変わりますので、適宜読み替えてください。
また一度環境を構築した後、途中でPleiadesを最新版にUPDATEしたい場合は、以下のようなイメージで、バージョンに応じてディレクトリを分けると良いでしょう。

```
+-- LetsLearn
     +-- Java
          +-- pleiades
               +-- 2022-12
               +-- 2023-06 ← 新バージョン
               ....
```

#### VS CodeかEclipseかの選択について

VS Codeとは、高機能な開発用のテキストエディタです。同じようなジャンルに該当するテキストエディタには、幾つかの種類がありますが、現時点ではVS Codeがデファクトの地位を築いています。VS CodeにはJava開発用のプラグインが提供されているため、Javaプログラムのための開発ツールとしても、有力な選択肢の1つとなります。
VS CodeをEclipseのような統合開発環境と比較すると、VS Codeの方がCPUやメモリなどのリソースへの影響は小さく、比較的軽快に動作します。本コースをはじめ、後続の『Java Advanced編』の内容であれば、教材のソースコードをVS Codeで開き、学習していただいても全く問題ありません。VS Codeの利用方法は本コースでは触れませんが、インターネット上で情報は入手できますので、好みに応じて利用を検討してみてください。
ただし本コースでは、開発ツールは前述したようにEclipseを採用しています。その理由は、本コースでJavaの基礎を学習された皆さんは、その後ステップアップして、比較的規模が大きい企業システムやWebサービスの開発にJava開発者として参画する可能性が高い、と考えられるからです。Javaによる比較的規模の大きなシステム開発では、統合開発環境の利点が十分に発揮されますので、開発の現場ではEclipseを筆頭に統合開発環境を利用するのが一般的です。
以上のような理由から、内容的にはややtoo muchかもしれませんが、このコースでは敢えてEclipseを選択していますのでご理解ください。

### 1.2.4 サンプルコードのダウンロードと展開

#### GitHubからのサンプルコードのダウンロード

本コースのサンプルコードは、筆者のGitHubリポジトリとして公開されていますので、それをダウンロードします。
まず以下のサイトにアクセスしてください。
https://github.com/KenyaSaitoh/learn_java_basic
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/cd6aa77b-abca-0186-6c5e-e1b5e65a2014.png)

「Code」ボタンから「Download ZIP」を選択すると、すべてのサンプルコードが「learn_java_basic-main.zip」というZIPファイルとしてダウンロードされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/c78bbe6e-b72d-2fde-bedb-2e0f39d63432.png)

#### サンプルコードの展開

これまでの手順の中で既に「C:/LetsLearn/Java」というディレクトリは作成済みですが、さらにその下に「repos」というディレクトを作成し、前項でダウンロードしたZIPファイルを移動してください。
そして「C:/LetsLearn/Java/repos」の下で、"learn_java_basic-main.zip"を解凍します。解凍の方法は任意ですが、例えばWindowsに標準搭載された解凍機能を使う場合は、ファイル上で右クリックして「すべて展開」を選択します。このとき、このZIPファイルを展開すると"learn_java_basic-main"というディレクトリができるため、階層が深くなりすぎないように展開先は「C:¥LetsLearn¥Java¥repos」にしてください。Windows標準機能なので、パスの区切りは"¥"を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/15f570da-ec0b-a462-d346-94ae7005b1b7.png)

解凍が終了したら、以下のようなディレクトリ構成になっていることを確認してください。

```
+-- LetsLearn
     +-- Java
          +-- repos
               +-- learn_java_basic-main
                    +-- 02_hello
                    +-- 03_var_type_literal
                    +-- 04_operator
                    ....
```

### 1.2.5 APIリファレンス

#### 「APIリファレンス」の参照方法

Java SEによって提供されるAPIのリファレンス（利用方法）は、Webベース（HTML形式）のドキュメントとして公開されています。
本コースが前提とするJava 17の公式なAPIリファレンスは、以下のサイトで確認することができます。
https://docs.oracle.com/javase/jp/17/docs/api/
ここでは本コースの中でも登場する、StringクラスのAPIリファレンスを確認してみましょう。Stringクラスなどの基本的なクラスは、java.baseというモジュールの、java.langというパッケージに含まれています。モジュールとパッケージについては、ここではいったんクラスを分類するためのグループと理解しておけば問題ありません。
まずトップページでは、モジュール単位でリンク先が振り分けられていますので、java.baseのリンクをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/ec490df5-7446-5953-6e5e-a6163893b590.png)

今度はパッケージ単位でリンク先が振り分けられていますので、java.langをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/d07c25ad-90db-bc7b-c97c-6050d7a2456e.png)

すると以下のように、java.langパッケージに含まれるクラスの一覧が表示されますので、スクロールしてStringクラスを探しクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/669a49a9-9066-2baf-10b1-2f4f2fab2855.png)

これでStringクラスのAPIリファレンスに、たどり着くことができました。
このページのようにStringクラスがAPIとして提供するメソッドの利用方法を、確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/6fe0005d-a290-287e-8991-6a2708de41ca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597954/090d7c66-dd77-1b55-568c-c6e97eea273c.png)

なおこのように、JavaにおいてHTML形式のドキュメントを作成するための標準的な仕組みを、Javadocと呼びます。Javadocを利用すると、ソースコード上に特殊なコメントを記述し、それをツールに読み込ませるだけで、HTML形式のドキュメンドを容易に生成することができます（チャプター21.4参照）。

### このチャプターで学んだこと

このチャプターでは、以下のことを学びました。

1. JDKの種類や特徴および、Javaランタイムや各種ツールとの関係性について。
1. JDKのダウンロード方法やディレクトリ構成について。
1. EclipseやPleiadesのダウンロードおよびセットアップ方法について。
1. 本コースが提供するサンプルコードのダウンロードおよびセットアップ方法について
1. 「APIリファレンス」によってAPIの使い方を調べる方法について。