Javaプログラムのコンパイルと実行

最終更新日: 2019年8月25日 14時30分

目次

講義の目的

Javaプログラムのコンパイルができる

Javaプログラムの実行ができる

1. コンパイル

Javaのソースコードをコンパイルするには javac コマンドを使います。javac コマンドは以下の形式で利用します。

javac ファイル名.java

javac コマンドは、Javaのソースコード(.javaファイル)をコンパイルし、クラスファイル(.classファイル)を作成します。
oracleの公式のドキュメントでは、「Javaクラスとインタフェースの定義を読み取り、それらをバイトコードとクラスファイルにコンパイルする」と説明されています。

実際にソースコードをコンパイルする手順を確認します。

まずは、Javaのソースコードを配置するフォルダを作成します。introductory-1という名称でフォルダを作成します。

フォルダの中にHelloWorld.javaというJavaのソースコードを作成します。

HelloWorld.javaファイルをエディタで開いて以下のソースコードを記述します。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

ソースコードの内容は下で説明するので、今はコードの内容は説明しないで先に進めます。

このHelloWorld.javaファイルをコンパイルします。

ソースコードをコンパイルするためには先ほど説明したコンパイルコマンドを入力する必要があります。なのでターミナルを使います。macの場合

アプリケーション → ユーティリティ

の順でフォルダを開くとターミナルアイコンがあります。

ターミナルアイコンをクリックすると、ターミナルが起動します。

windowsの場合コマンドプロンプトを開きます。スタートメニューの検索で「cmd.exe」と入力するとコマンドプロンプトが開きます。

ターミナルを開いたらHelloWorld.javaファイルを置いたフォルダの位置にターミナルで移動します。ファイルの位置がわからない場合は、ターミナルにフォルダをドラッグするとフォルダのパスが表示されます。

フォルダのパスがわかったら、cd コマンドでフォルダの移動ができるので、ファイルを置いたフォルダへ移動します。

$ cd /Users/marsa/workspace/basic_java/introductory-1/

ソースファイルをコンパイルします。javac コマンドを実行します。

$ javac HelloWorld.java

コンパイルに成功するとフォルダにクラスファイルが作成されます。

これでコンパイルは終了です。

2. プログラム実行

続いてプログラムを実行します。

Javaのプログラムを実行するには、javaコマンドを使います。javaコマンドは以下の形式になります。

java クラス名

上記の講義「コンパイル」で作成したクラスファイル(HelloWorld.class)があるので、javaコマンドを実行します。

$ java HelloWorld
Hello World!

javaプログラムが実行され、Hello World! がコマンドラインに出力されました。

では、今使ったクラスファイル(HelloWorld.class)を削除しても、このプログラムは実行できるでしょうか?

Javaの資格試験などで出題されるので、少し考えてみてください。

わかりましたでしょうか。

答えは「実行できまない」です。

確認のため、classファイルを消して上記のコマンドを実行してみます。

$ java HelloWorld
エラー: メイン・クラスHelloWorldを検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: HelloWorld

このことから、javaの実行にはクラスファイルが必要だということがわかります。

3. mainメソッド

上記までの講義で、コンパイルとプログラムの実行方法について学びました。

この講義では、java の mainメソッド について学びます。

javaコマンドを実行すると、以下の流れでjavaが起動します。。

  • 1. Java Runtime Environment 起動

  • 2. 指定したクラスをロード

  • 3. 指定したクラスの main メソッドを呼び出す

  • 4. Java アプリケーションを起動

重要な内容なので、それぞれを具体的に内容を見ていきましょう。

Java Runtime Environment 起動

Java Runtime Environment (JRE) はコンピュータでJavaアプリケーションを動かせるようにするソフトウェア群です。Java言語で開発されたソフトを実行するために絶対必要です。

Java Runtime EnvironmentはJavaプログラミングで必要なJDK (Java Development Kit) にも含まれています。

多くのパソコンは買った状態でJava Runtime Environment (JRE) がインストールされています。そのため、ほとんどのパソコンでユーザーが意識せずともJavaプログラムを実行することができます。

指定したクラスをロード

Java Runtime Environmentを起動すると、クラスがロードされます。

この講義では、$ java HelloWorld を実行したので、HelloWorld.classをロードします。

指定したクラスの main メソッドを呼び出す

クラスをロードしたらmainメソッドを呼び出してjavaアプリケーションを起動します。mainメソッドの宣言は、次のように記述する必要があります。

public static void main(String args[])

このメソッドは定型なので、暗記してください。引数のargsはコマンド実行時に指定したオプションを受け取ります。

どんな巨大なwebアプリケーションでも、このメソッドから全てが始まります。

javaでプログラミングする場合、フレームワークと呼ばれる既存の仕組みを使ってアプリケーションを開発することになります。ゼロベースで作成するのでは、時間がかかりすぎるからです。そのためなのか、この基本となるjavaの知識を知らない人をプロでも見かけます。

知らなくても簡単なプログラミングならできますが、こういった基礎知識を習得しておくと、プログラミング能力を停滞することなく向上させていくことができます。

また、javaのプログラミングに慣れてきたら、spring, android, micronaut などのフレームワークのコードを読んで、mainメソッドがどのように利用されているかを確認すると良いでしょう。

まとめ

この講義では、javaのコンパイル、実行、mainメソッドの仕組みについて学習しました。

大切な基本なので、javaを使ったプログラミングを仕事にしたいと思っている人は確実に理解してください。

演習

この講義に関連する演習問題を用意しました。理解度を確認してください。

演習