定番プログラミング言語Javaは安定の実力でAndroidでも使われている

今回は、常にプログラミング言語ランキングの上位に君臨する定番言語のJavaについて紹介します。Javaはサン・マイクロシステムズが開発し、1995年に公開されました。現在は、サン・マイクロシステムズを買収したオラクルが開発を継続しています。発表当時から人気がありましたが、公開から20年以上経った現在でも、数多くの業務システムで利用されています。特に、世界のスマートフォンOSのシェア7割を超えるAndroid OSでは、当初からJavaが開発言語として採用されています。

  • Webサイト『java.com』-大物らしく全く媚びていないWebサイトがJavaらしい)

    Webサイト『java.com』-大物らしく全く媚びていないWebサイトがJavaらしい)

Javaはよく考えられた生産性高い言語

Javaがこれほど人気になったのには理由があります。なぜ、Javaはこれほど広まっているのでしょうか。主な理由を三点挙げてみましょう。


・(1) 強力で簡潔なオブジェクト指向
・(2) 移植性を高める中間コードの採用
・(3) 優秀な統合開発環境の存在

まず、一つ目の点ですが、Javaには、強力なオブジェクト指向が備わっています。これは、Javaの大きな魅力です。オブジェクト指向は、大規模開発で役立ちます。オブジェクト指向とは、オブジェクト(モノ)を中心に設計を行うプログラミング手法です。関数や変数をグループごとにまとめて管理する『クラス』や、以前作ったクラスを安全に再利用するための仕組み『継承』、オブジェクトの振る舞いを規定する『インターフェイス』など、さまざまな機能が用意されています。

二つ目の点ですが、Javaは移植性を高める中間コードを採用しています。これは、Javaが多くの端末で動作する理由でもあります。そしてJavaはコンパイラ言語です。Javaのプログラムは、中間コード(Javaバイトコード)にコンパイル(変換)されます。その中間コードは、各プラットフォームに依存することのない中間形式です。Javaの仮想マシン上で中間コードが実行されます。そのため、Javaは開発環境と実行環境を切り分けることができます。つまり、いろいろなプラットフォームに対して、フル機能のJavaを用意する必要はなく、携帯端末などメモリなど資源の限られた端末には、中間コードを実行する仮想マシンを用意するだけでよいのです。移植が簡単で、多くの環境で動かすことができます。この中間言語の仕組みは、利点が多く、Java以後、C#など他のプログラミング言語でも積極的に採用されています。

最後、三つ目の点ですが、Javaには優秀な開発ツールが多く用意されています。特に、統合開発環境(IDE)と言って、プログラムの開発、実行、デバッグ、リファクタリングなど、プログラムを完成させるまでに必要となる機能を一つにまとめた開発環境が用意されています。Javaのデータは強い静的型付きであり、データの整合性を用意に検査できるため、統合開発環境を使うと、さまざまな支援機能を利用できます。これにより、快適に開発が行えます。代表的な統合開発環境には、Eclipse、NetBeans、IntelliJ IDEAなどがあります。

  • 統合開発環境IntelliJ IDEAの画面

    統合開発環境IntelliJ IDEAの画面

IntelliJを使ってJavaプログラムを作ってみよう

それでは、実際にJavaのプログラムを作ってみましょう。ちなみに、Windows、macOSを問わず、多くの読者の皆さんのPC内には、既にJavaがインストールされているでしょう。とは言え、それは、Javaの実行環境(JRE)のみである可能性が高いことでしょう。先ほど紹介したように、Javaは開発ツール(JDK)と、Java実行環境(JRE)に分かれているのです。

そこで、最初に、Javaの開発ツール(JDK)をインストールしましょう。JDKのダウンロードページを開いて、[DOWNLOAD]ボタンをクリックしましょう。そして、表示されたページの「Accept License Agreement」をクリックし、自分が利用しているOSのインストーラーをダウンロードしましょう。

  • ダウンロードページを開いて、ライセンスに同意し、該当OSをダウンロードしよう

    ダウンロードページを開いて、ライセンスに同意し、該当OSをダウンロードしよう

ダウンロードしたら、インストーラーをダブルクリックして起動し、何度か画面右下の[次]ボタンを押すと、インストールが完了します。

  • インストーラーを起動してインストールしていきましょう

    インストーラーを起動してインストールしていきましょう

次に、Javaの開発ツールを含んだ統合開発環境のIntelliJ IDEAを使ってみましょう。Windows/macOS/Linuxに対応しています。こちらのWebサイトからダウンロードしましょう。

IntelliJ IDEAには、有償版のUltimateと、無償版のCommunityが用意されています。今回は、ちょっと試すだけなので、Community版をダウンロードしてみましょう。ただし、原稿執筆時点の最新版でインストーラーのファイルサイズが512MBほどもあるため、それほど気軽というサイズではないものの、インストール自体は簡単です。

  • IntelliJ IDEAのWebサイト

    IntelliJ IDEAのWebサイト

インストールしたら、IntelliJを起動しましょう。初回起動時には、プライバシーポリシーが表示されるので、ライセンスを読んだら[Accept(同意する)]のボタンをクリックしましょう。

続いて「Set UI theme(見た目の選択)」など親切な選択画面が出ますが、適当に選びつつ画面右下のボタン[Next(次へ)]をクリックするか、画面左下のデフォルト設定[Skip Remaining and Set Defaults]をクリックします。

そして、以下のようなダイアログが表示されたら、[New Project(新規プロジェクト)]をクリックしましょう。

  • New Projectを選ぼう

    New Projectを選ぼう

画面左側から[Java]を選択して、画面右下の[Next]をクリックしましょう。

  • Javaを選択

    Javaを選択

ところで、Windowsでは、JDKのインストールパスを指定しなくてはなりません。以下の画面が出たら、画面右側上部のProject SDKの項目で、[New]のボタンをクリックしましょう。続けて、「C:\Program Files¥Java¥jdk-***」(***はバージョン番号)を選択しましょう。

  • JDKのパスを指定します

    JDKのパスを指定します

次に、[Create project from template(テンプレートからプロジェクトを作成]にチェックして、[Next]ボタンをクリックしよう。

  • Command Line Appのテンプレートを元にプロジェクトを作成しよう

    Command Line Appのテンプレートを元にプロジェクトを作成しよう

その後、[Next]と[Finish]のボタンを押すと、以下のようなJavaの開発画面が表示されます。

  • Javaを選択

    Javaを選択

そこで、以下のプログラムを書き込んで、実行ボタンを押してみましょう。

// パッケージ名の指定 --- (*1)
package com.company;

// 必要なライブラリの宣言 --- (*2)
import javax.swing.*;

// メインクラスの定義 --- (*3)
public class Main {
    // メインメソッドの定義 --- (*4)
    public static void main(String[] args) {
        // メッセージを表示する --- (*5)
        JOptionPane.showMessageDialog(null, "Hello, World!");
    }
}

すると、以下のようにダイアログが表示され、メッセージが表示されます。

  • Hello, Worldのプログラムを実行したところ

    Hello, Worldのプログラムを実行したところ

初めてJavaのプログラムを見る方は、間違いなく「長い」と思うことでしょう。Javaでは、ただメッセージボックスを表示するだけのプログラムでも、これだけのコードを書かなくてはいけません。

とは言え、今回、テンプレートを元にプログラムを書いたのですが、大半の部分が、最初から書き込まれており、実際に記述したのは、(*2)のライブラリの宣言と、(*5)のメッセージを表示する部分のコードだけです。

詳しく見てみましょう。(*1)の部分ですが、Javaのクラスは、必ず何らかのパッケージに属することになっています。ここでは、パッケージ名を指定します。(*2)の部分では、メッセージボックスを表示するのに必要なライブラリを宣言します。(*3)の部分では、クラス名を指定して、クラスの宣言を行います。(*4)では、Javaのクラスを最初に実行するmain()メソッドを定義します。(*5)の部分で、メッセージボックスを表示します。

ちなみに、統合開発環境の素晴らしいところですが、プログラムの最初の数文字を打ち込むと選択肢が表示されるので、そこから候補を選ぶだけでプログラムを記述できます。そのため、実際には、それほどの労力は必要ありません。逆に言うと統合開発環境を用いないでJavaのプログラムを書くのは、現実的ではありません。

FizzBuzz問題を解いてみよう

最後に、いつものように、FizzBuzz問題を解いてみましょう。FizzBuzz問題とは、基本的に1から100までの数字を出力するプログラムですが、3の倍数なら「Fizz」、5の倍数なら「Buzz」、3の倍数かつ5の倍数なら「FizzBuzz」と出力します。

先ほどと同じ手順で、以下のプログラムを記述し、実行してみましょう。

package com.company;
public class Main {

    // FizzBuzzを解くクラスを宣言 --- (*1)
    static class FizzBuzz {
        private String getNumber(int i) {
            if (i % 3 == 0 && i % 5 == 0) {
                return "FizzBuzz";
            } else if (i % 5 == 0) {
                return "Buzz";
            } else if (i % 3 == 0) {
                return "Fizz";
            }
            return String.valueOf(i);
        }
        public String run(int from, int to) {
            String result = "";
            for (int i = from; i <= to; i++) {
                result += this.getNumber(i) + "\n";
            }
            return result;
        }
    }

    // メインメソッドの定義
    public static void main(String[] args) {
        // FizzBuzzオブジェクトを生成 --- (*2)
        FizzBuzz fb = new Main.FizzBuzz();
        String result = fb.run(1, 100); // 実行 --- (*3)
        // 結果を出力 --- (*4)
        System.out.print(result);
    }
}

プログラムを実行すると、以下のように画面の下部にログ画面が表示され、そこにFizzBuzzの実行結果が表示されます。

  • FizzBuzzのプログラムを実行したところ

    FizzBuzzのプログラムを実行したところ

このJavaのプログラムでは、敢えてJavaの特徴であるオブジェクト指向を利用しています。オブジェクト指向では、最初(*1)の部分のようにクラス定義を行います。クラス定義とは言わば設計図です。そして、(*2)の部分で、クラスをインスタンス化します。インスタンス化というのは、設計図を元にして実体を作り出すことを言います。その後、プログラム(*3)の部分でFizzBuzzの計算を行って、(*4)の部分で結果を出力します。

まとめ

今回は、プログラミング言語Javaについて紹介しました。Javaは発表から20年を経て、既に安定期に入っています。とは言え、堅牢な業務システムで使われている一方、Androidなど最新のモバイル機器の開発でも使われています。2017年の統計では、Androidのアクティブユーザーは20億人に上るそうですが、その20億人の生活を、Javaで開発したアプリが支えています。この安定感から、Javaは今後も広く使われていくでしょう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。