Java入門

Javaとは?

ここでは主にFlutterアプリのためのJava環境という位置付けでJavaを学びます。

(1)オブジェクト指向言語である

オブジェクト指向とは、アプリケーションの中で扱う対象をオブジェクト(モノ)と見立てて、その組み合わせによって機能を作り上げていく手法のことを言います。Javaに限らず、多くのプログラミング言語がオブジェクト指向に則って設計されています。
つまり、Javaを学ぶということは、他の言語でも活用できる汎用的な知識を得るということでもあるのです。

(2)プラットフォームに依存しない

Javaのプログラムは、Java仮想マシンで動作する中間コードに変換された上で動作します。プラットフォーム固有のネイティブコードを生成しませんので、アプリケーションが特定のプラットフォームに依存しません。そのプラットフォームに対応した仮想マシンさえあれば、Javaのプログラムはどこででも動作します。この性質を「Write Once, Run Anywhere」と言います。

(3)ガベージコレクターがメモリーを自動管理

Javaではガベージコレクターと呼ばれるしくみが用意されており、使われなくなったメモリーを自動的に解放してくれます。このため、メモリーの解放忘れによるメモリリークと呼ばれる問題も原則として発生しません。また、開発者がメモリーの解放を意識したコードを記述しなくて良いため、開発生産性が向上します。

Javaの構成

Javaには、目的に応じて以下のエディションが用意されています。

Javaのエディション
エディション概要
Java SE(Java Platform, Standard Edition)Javaの基本となるエディション
Java EE(Java Platform, Enterprise Edition)サーバーサイド開発のための企業向けエディション
Java ME(Java Platform, Micro Edition)組み込みシステムに利用されるエディション

Java SEは、Java言語の基本的な機能、APIを提供するエディションです。Java EEを動作するにもJava SEが必須です。Java MEは、組み込み系での利用を想定されており、Java SEのサブセットと、互換性はないが最小限の機能を提供しているものとがあります。本稿で扱うのは、Java SEの機能です。

開発環境

Javaでアプリを開発するには、一般的に、以下のソフトウェアをインストールしておきます。

(1)JDK(Java Develpment Kit)

Javaアプリを実行するためのJava仮想マシンをはじめ、コンパイラーやデバッガーなどのツールを備えたJava開発環境です。Oracleのサイトからダウンロードできます。
コードそのものは、一般的なテキストエディターで記述できますので、JDKさえインストールされていれば、最低限のアプリ開発は可能ということです。

(2)統合開発環境(Eclipseなど)

統合開発環境は、コーディングを支援するコードエディターをはじめ、デバッガー、プロジェクト管理機能、リファクタリング機能など、アプリ開発にはおおよそ欠かせない諸機能を備えたあまねく備えたソフトウェアです。 最低限のコーディングであれば、確かにテキストエディターだけでも可能です。しかし、コンパイル/配置(デプロイ)/デバッグなど、開発に際して繰り返し発生する作業は面倒でもあれば、非生産的です。本格的な開発では、統合開発環境の利用が一般的ですし、現場でも当たり前のように求められます。早い段階から、統合開発環境での開発に慣れておくのが吉でしょう。
代表的なJavaの統合開発環境には、Eclipse、NetBeansなどがありますが、本稿ではより利用者数も多いと思われるEclipseを採用します。Eclipseは、機能を拡張するためのプラグインも豊富で、Javaのみならず、他の言語にも対応しているのが特徴です。

Eclipseをインストールする際には、「Pleiades」を利用することをお勧めします。PleiadesはEclipseの代表的なプラグインで、Eclipseとその代表的なプラグインを日本語化できます。All in Oneパッケージを利用することで、アプリ開発によく利用するプラグインをまとめてインストールできますので、個別にプラグインを導入する手間もなくなります。
「Pleiades All in One」は、以下のページからダウンロードできます。

▲Pleiades All in One ダウンロード(https://mergedoc.osdn.jp/)

執筆時点での最新バージョンは、「Pleiades All in One Eclipse 2019-12リリース」です(執筆時点では「2019-09」と表記されています)。該当するボタンをクリックすると、「Pleiades All in One Eclipse ダウンロード」というページに移動します。

▲Pleiades All in One Eclipse ダウンロード

ダウンロードできるパッケージにはいくつか種類があるので、「Java」列の「Windows 64bit」-「Full Edition」の[Download]ボタンをクリックしてください(*)。これがJava開発用の完全版パッケージで、JDKも同梱されています。
*)32bit版は、2018-09版で終了しています。32bit版が必要な場合は、同ページのリンクから2018-09版をダウンロードしてください。
ダウンロードしたファイル(著者環境ではpleiades-2019-12-java-win-64bit-jre_20191225.zip)は、「C:\pleiades」フォルダーに展開するだけです。アンインストールする場合は、/pleiadesフォルダーごと削除してしまって構いません。

▲Pleiades(Eclipse)をインストールするには、そのまま展開するだけ(*)
*)ただし、Pleiadesの解凍には解凍ソフトである「7-Zip」(https://sevenzip.osdn.jp/)が必要です。標準の解凍ソフトでは、パス長が260文字以内の制約から解凍に失敗します。

開発環境の準備(JDK単体)

Eclipse(Pleiades)を利用しない場合、もちろん、JDKを単体でインストールすることもできます。JDKには、Oracle社が提供するOracle JDK(商用ビルド)もありますが、本サイトではオープンソース実装であるOpenJDKを採用します。OpenJDKのインストールには、以下のページにアクセスしてください。

▲JDK builds from Oraclehttps://jdk.java.net/

[1]JDKをダウンロードする

[Ready for use]から[JDK 13]リンク(*)をクリックすると、ダウンロードページに移動します。
*)バージョンは、その時点での最新版を選択してください。[Early access]の方はPreview版なので、実際の開発で利用すべきではありません。

▲OpenSDKのダウンロードページ

[Windows/x64]横にある[zip (sha256)]リンクをクリックします。執筆時点でのファイル名はopenjdk-13.0.1_windows-x64_bin.zipです。

[2]JDKをインストールする

ダウンロードしたファイルは、任意のフォルダーに展開するだけです。ここでは「c:\」フォルダーに展開します。

▲ダウンロードファイルを展開するだけ

[3]環境変数を設定する

SDKを展開できたら、環境変数PATHを設定してください。PATHは、コマンドを実行する際に、その所在を検索するパスを表すものです。JDKを直接利用する場合には、アプリのコンパイルや実行にさまざまなコマンドを利用しますので、PATHを設定しておくと便利です。
以下は、Windows 10環境を前提とした手順です。
[コントロールパネル]-[システムとセキュリティ]-[システム]からシステム画面を開いて、[システムの詳細設定]をクリックします。[システムのプロパティ]ダイアログが表示されるので、[環境変数]ボタンをクリックします。

▲[環境変数]ダイアログ

[環境変数]ダイアログが表示されるので、システム環境変数の欄から変数[Path]を選択し、[編集]ボタンをクリックします。
続いて、[環境変数名の編集]ダイアログが表示されるので、[新規]ボタンをクリックします。末尾の欄に「C:\jdk-13.0.1\bin」を追加して[OK]ボタンをクリックします。

▲[環境変数名の編集]ダイアログ

[4]Javaのバージョンを確認する

環境変数を設定できたら、PowerShellを開き、javaコマンドを実行してみましょう。以下のように、現在のJavaのバージョンが表示されれば、JDKは正しくインストールでき、また、環境変数PATHも正しく設定できています。

Java Version

・openjdk version “13.0.1” 2019-10-15
・OpenJDK Runtime Environment (build 13.0.1+9)
・OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

はじめてのJavaプログラム

Eclipseを利用して、「こんにちは、世界!」と表示するだけの簡単なアプリを作成してみましょう。Eclipseの基本的な使い方を理解すると共に、Javaアプリの文法を概観します。[1]Eclipseを起動する

Eclipseは、Pleiadesを展開した/pleiadesフォルダー配下の/eclipseフォルダーからeclipse.exeをダブルクリックすることで、起動できます※。

※よく利用するものなので、右クリックし、表示されたコンテキストメニューから[タスクバーにピン止めする]を選択しておくと良いでしょう。これによって、Eclipseのアイコンがタスクバーに常駐しますので、すぐ起動できます。

▲[Eclipseランチャー]ダイアログ

まず、[Eclipseランチャー]ダイアログが表示され、ワークスペースの保存先を訊かれます。ワークスペースとは、プロジェクトを保存するための作業用フォルダーです。プロジェクトとは、開発するアプリをまとめる器のことです。 デフォルトでは/pleiadesフォルダー配下の/workspaceフォルダーとなっていますので、これで問題なければ、そのまま[OK]ボタンをクリックします。[2]プロジェクトを作成する

Eclipseが起動すると、以下のような画面が表示されます。

▲Eclipseの初期画面

まずは、アプリの器となるプロジェクトを作成しましょう。メニューバーから[ファイル]-[新規]-[Javaプロジェクト]を選択してください。

▲[新規Javaプロジェクト]ダイアログ

[新規Javaプロジェクト]ダイアログが表示されますので、[プロジェクト名]に適当な名前を入力してください。本稿では「mynavi」とします。また、[実行環境JREの使用]が選択されており、バージョンは「JavaSE-13」が選択されていることを確認しておきましょう。他は、すべてデフォルトのままで構いません。
[完了]ボタンをクリックすると、[新規 module-info.java]ダイアログが表示されるので、[モジュール名]が「mynavi」となっていることを確認して、[作成]ボタンをクリックします。

▲[新規 module-info.java]ダイアログ

Javaプロジェクトが作成されます。パッケージエクスプローラーというビューに、作成されたプロジェクトが表示されますので、確認しておきましょう。[3]クラスを作成する

Javaでは、プログラムをクラスという単位で作成します。クラスとは、アプリの中で特定の役割を担うかたまりとなるものですし、Javaアプリとは複数のクラスの集合と言っても良いでしょう。
クラスを作成するには、メニューバーから[ファイル]-[新規]-[クラス]を選択します。

▲[新規Javaクラス]ダイアログ

[新規Javaクラス]ダイアログが表示されますので、以下の表のように、必要な情報を入力してください。

[新規Javaクラス]ダイアログの設定値
項目設定値
パッケージcom.example.mynavi
名前Hello
public static void main(String[] args)チェック

▲[新規Javaクラス]ダイアログの設定値

パッケージとは、クラスを分類するための入れ物のようなものです。パッケージは「mynavi」のようにすることもできますが、一般的には、この例のように「com.example.mynavi」とドット区切りの階層構造で表すのが基本です。命名に際しては、他のライブラリとの重複を避けるために、ドメイン名を逆にしたもの(ここでは「com.example」)を頭に付与するようにしてください。
クラスの名前は、頭大文字のCamelCase形式(単語の区切りが大文字)で表すのが基本です。
「public static void main(String[] args)」は、mainというブロック(メソッド)を生成するかどうかを指定します。mainメソッドは、プログラムを起動したときに最初に呼び出されるコードを表します。
入力できたら、[完了]ボタンをクリックします。パッケージエクスプローラーから/src/com.example.mynaviフォルダー(*)配下にHello.javaができていることを確認してください。

▲新規のクラスを追加した(パッケージエクスプローラー)

※あくまでパッケージエクスプローラー上の表記です。物理的なフォルダーは、/src/com/example/mynaviフォルダーとなります。[4]コードを入力する

コードエディターに、自動生成されたクラスの外枠が表示されますので、以下のようにコードを追加してください。

Hello.java

// (1)パッケージ宣言
package com.example.mynavi;
 
// (2)クラス宣言
public class Hello {
  // (3)メソッド宣言
  public static void main(String[] args) {
    // (4)文
    System.out.println("こんにちは、世界");
  }
}

コードの大まかな流れについて説明していきます。

(1)パッケージ宣言

先ほども説明したクラスを分類する入れ物です。package命令で、ソースコードの先頭に記述します。

(2)クラス宣

クラスを宣言するには、class命令を利用します。

class命令

class 名前 {
…メンバーの定義…
}

{…}で囲まれた部分のことをブロックと呼びます。ブロックが示すものは、その時どきで異なりますが、class命令であればクラスの外枠を表します。 classブロックの中では、クラスに持たせるデータや機能を定義します。これらデータのことをフィールド、機能をメソッド、また、両方を総称してメンバーと言います(※)。

※正しくは、メンバーにはコンストラクター、初期化ブロックなどもあります。

なお、「class」の前の「public」はアクセス修飾子と呼ばれるもので、定義したクラスがどこからアクセスできるかを表す情報です。publicは、クラスがどこからでもアクセスできることを表します。

(3)メソッド宣言

ここでは、代表的なメンバーとしてメソッドを定義しています。メソッドの具体的な構文については、あとで「メソッド」項で説明しますので、ここではmainという名前のメソッドを定義していると理解してください。
一般的に、メソッドには自由な名前を付けられますが、mainというメソッドだけは特殊で、アプリの開始位置を表します。Javaはアプリを起動したときに、まずmainメソッドを探して、その配下のコードから実行するのです。このようなメソッドのことをエントリーポイントと言います。
以降の例でも、まずはmainメソッドの配下にコードを書いていきます。

(4)文

メソッドブロックの配下は、ひとつ以上のから構成されます。たとえば、この例であれば、「System.out.println(“こんにちは、世界”);」がひとつの文です。System.out.printlnは、指定された文字列(ここでは「こんにちは、世界」)をコンソールに出力しなさい、という意味です。 文の末尾は、必ずセミコロン(;)で終わらなければならない点に注意してください。つまり、セミコロンで区切れば、1行に複数の文を書くこともできますし、セミコロンを書かなければ複数の行に跨っていても、ひとつの文であると見なされます。

[5]コードを実行する

以上を理解できたら、アプリを実行してみましょう。パッケージエクスプローラーからHello.javaを右クリックし、表示されたコンテキストメニューから[実行]-[Javaアプリケーション]を選択してください。
ファイルを保存していない場合には、ファイルを保存するかどうかを聞かれますので、保存してください。ソースコードがコンパイル&実行された結果、[コンソール]ウィンドウに以下のように文字列が表示されれば、コードは正しく動作しています。

▲実行結果([コンソール]ウィンドウ)

以上が、基本的なJavaアプリ作成から編集、実行までの流れです。以降、サンプルを実際に試す場合にも、以上のような手順で進めてみてください。

ドキュメント

Javaのドキュメントは、オンラインで公開されています。入門記事へのリンクも合わせて示しますので、学習の参考にしてください。

Java Platform, Standard Edition & Java Development Kit バージョン13 API仕様
https://docs.oracle.com/javase/jp/13/docs/api/

JSR-000388 Java SE 13 – Final Release
https://jcp.org/aboutJava/communityprocess/final/jsr388/index.html

初心者におすすめのJava入門まとめ
https://www.atmarkit.co.jp/channel/javaentry/javaentry.htmlJavaとは