【初心者でもわかる】Javaのコンパイルとは?とその方法

  • このエントリーをはてなブックマークに追加
  • Pocket

コンパイルとは、プログラムの翻訳作業のことだ。

Javaプログラムはプログラムを書いてすぐに実行をすることはできない。そのプログラムを機械がわかるように翻訳してはじめて、コンピュータが実行をしてくれる。

このページでは「コンパイルとは」のもう少し詳しい説明と、Javaのコンパイル方法についてまとめてご紹介しよう。

コンパイルとは?

コンパイルとコンパイラ

コンパイルとは、プログラム言語をコンピュータが理解できる言語に変換することだ。そのための翻訳ソフトウェアをコンパイラという。

ほとんどのコンパイラは、コンピュータが直接実行できるコンピュータ特有の言語に合わせ翻訳する。そして、それを直接実行する。

Javaだけ少し特殊

コンパイルが必要なプログラミング言語はたくさんあるが、その中でもJavaは特殊だ。

Javaは「どんな環境でも動く!」、Windowsだろうと、Macだろうと、Linuxだろうと他の何かだろうとひとつのプログラムで動くという信念で作られている。

そのため、特定のコンピュータが理解出来る機械語に翻訳するのではなくて、どのコンピュータでも使える中間言語というものを作成する。

下記のイメージだ。

javaのコンパイル

実行するときは、それぞれのコンピュータにインストールされたJavaの仮装マシンが機械語に翻訳して実行してくれる。

プログラムを実行するために2段の翻訳機があるようなものだ。日本語から中国語、ドイツ語に翻訳するのではなくて、必ず英語に翻訳してから他の言語に翻訳するイメージになる。

Javaのコンパイル方法

では、実際にJavaプログラムをコンパイルしてみよう。

ここでは、WindowsのDOS窓からコマンドによりJavaのコードをコンパイルすることを、前提として説明を行う。コンパイルするための環境のインストール方法は下記のURLを参考にできる。

Javaインストール:https://eng-entrance.com/category/java/java-install

Javaファイルを置くフォルダの作成

まずはJavaファイルを置くフォルダを作成しよう。作成場所はどこでもいいが、わかりやすいのでCドライブの直下などがいいだろう。

下記のように「JavaSample」というフォルダを作ってみる。

javasample

Javaのプログラムファイルを保存する

続いてテキストエディタを使用して、以下のプログラムを打ち込んでソースファイルを作成する。

テキストエディタは何を使っても構わない。Windows標準のメモ帳でも大丈夫だ。

memo

このファイルを「HelloWorld.java」という名前をつけて先ほどのフォルダに保存する。

コマンドプロンプトを開く

ここからが少々難しい。コマンドプロンプトというものを開く。

メニューを開いてアクセサリを選択する。

アクセサリ

その中のコマンドプロンプトを選択する。

コマンドプロンプト

するとコマンドプロンプトが開く。

cmd

これがコマンドプロンプトと呼ばれる、コンピュータをコマンドで直接操作する画面だ。例えばファイルのコピーをしたり、フォルダを作成したりなどの作業を一通りこの画面で実施することができる。

Javaのコンパイル作業はここで行っていくことになる。はじめからコマンド操作のすべてを理解するのは難しいと思うので、まずはJavaコンパイルに必要なところだけ見ておこう。

Javaのコンパイル作業

まず、以下のcdコマンドをコマンドプロンプトに入力し、ファイルを保存したフォルダC:\JavaSampleに移動する。

cdとはChange directoryの略で、そのフォルダに移動しますよ、という意味だ。CドライブのJavaSampleフォルダに移動するという意味になる。

cd

移動したフォルダに保存したJavaのファイルがあるかをdirコマンドで確かめよう。

dir01

以下のコマンドを打ち込み、先ほどのソースファイルをコンパイルする。コンパイルのためのコマンドはjavacである。コマンドの入力の仕方は簡単だ。

javac  Javaのファイル名

実際に、JavaのファイルHelloWorld.javaをコンパイルするためのJavacコマンドを入力する。ソースファイルに誤りが無ければ、次のようになるはずだ。

javac

コンパイルの結果をdirコマンドで見てみよう。

dir

コンパイルに成功すると先ほどのフォルダに「HelloWorld.class」が作成されている。これでコンパイルは成功だ。

実行の仕方は次ページで紹介をしているので続きはそちらから確認しよう。

コンパイルエラー

先ほどは正常にコンパイルできた例を紹介したが、記述内容に誤りがあると、コンパイルを実行した段階でエラーが表示される。初心者にありがちなコンパイルエラーと対処方法を紹介する。

セミコロン「;」が不足

まず、コンパイルエラーの見方から説明しよう。

わざとエラーのあるプログラムをコンパイルしてみた。エラーを見つけると、コンパイラはエラー情報を表示する。

error01

そのエラー情報からエラーの原因を見つけることができる。次の図はその方法を示している。

エラーの説明

エラーの場所が、ファイル名→ファイルの先頭からの行数→エラーのカラム位置というようにエラーの場所がすぐに分かるようになっている。

エラーの理由も表示される。セミコロン「;」が不足しているために発生しているエラーだ。

Javaの記述ルールは、1つの命令ごとにセミコロン「;」をつける決まりだ。

ダブルクオーテーション「”」が不足

これは少々分かりにくいが、「Hello World」の文字列の終わりのダブルクオーテーション「”」が不足していると、こんなエラーが起きる。

コンパイル後にエラーが表示された画面を示す。

error02

2つ目のエラーに「エラー: ';'がありません」とあるが、これは最初のエラー(「”」で閉じられていないエラー)の為に、文字列の終わりが判断できず、結果として命令文の終わりが見つけられないことから起きているエラーだ。

全角空白文字

これも初心者は意外とハマりやすいエラーだ。このエラーは、本来「半角空白」文字を入れるべきところに、「全角空白」文字を入れてしまったことから発生している。

コンパイル後にエラーが表示された画面を示す。

error03

初心者が書籍やWebで紹介されているソースコードを、そのまま打ち込んでいると意外と起こりやすい。見た目でも違いがわからないので、何故エラーなのかで頭を抱えてしまうことも珍しくない。

このエラーを回避するには、全角空白を視覚的に表現してくれるエディタを使うとよいだろう。

メモ帳で開いた例:

memo

視覚的に表現してくれるエディタの例(サクラエディタ):

sakura

このエディタで表示すると、3行目の「public」の後ろに全角の空白が入っていることがわかる。

ファイル名とクラス名が異なる

このエラーは、ソースファイルに記述されているクラス名が「HelloWorld」であるのに対し、ファイル名を「Hello.java」としたために発生している。

error04

Javaでは、一つのファイルに一つのクラスを記述し、ファイル名は「クラス名.java」とする決まりだ。

閉じ括弧「}」

このエラーが一番やっかいなエラーだ。

コンパイルし後にエラーが表示された画面を示す。

error05

この例は短いソースコードなので、とじ括弧「}」が不足していることがすぐわかるが、数十行のプログラムで、if(){}やfor(){}のような段落のとじ括弧が不足していると、非常にわかりづらい。

開始括弧{一つに対し、とじ括弧}一つが対応するが、二段三段と入れ子になっていると、別のとじ括弧と対応してしまい、結果として後のほうでとじ括弧が足りないという事態になる。そのため、エラーとして表示されている行番号の付近にとじ括弧が不足しているとは限らないからである。

まとめ

このページでは「コンパイルとは」と、Javaのコンパイル方法についてお伝えした。

コマンドプロンプトを使ったことがないと難しいと思うかもしれないが、気合を入れる必要はない。すぐに慣れるはずだ。

javac  Javaのファイル名

覚えておこう。

このファイルをどう実行していくのかなどは次の項目を確認していってほしい。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. lahcene fatima より:

    プログラミングを学ぶにはレッスンが必要です

  2. こばやん より:

    環境変数を設定し、コマンドプロンプトでJavaが正常にインストールされていることを確認し、JavaのファイルHelloWorld.javaをコンパイルするためのJavacコマンドを入力するとコマンドプロンプトには、「'javac'は、内部コマンドまたは外部コマンド操作可能なプログラムまたはパッチファイルとして認識されません。」と表示されて先に進めません。構文が間違っているのでしょうか?
    御教授のほど宜しくお願いします。

    1. リカレントテクノロジー より:

      いつもご愛読有り難うございます。
      環境変数がうまく設定できていない可能性がございます。
      下記URLの記事を参考に再度設定を確認してみて下さい。
      https://eng-entrance.com/java-install-env

      引き続きご愛読の程よろしくお願いいたします。

  3. 匿名 より:

    記載された順に沿ってコマンドを打ち込みコンパイルしたつもりなのですが、エラーメッセージとして、

    指定されたパスが見つかりません

    と表示されています。
    これは、どこに誤りがあると考えられるのでしょうか。初歩的な質問ですいません。

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。
      カレントディレクトリ(今いる場所)からみて、javacの後に記載したJavaのファイル名が見当たらないため、
      「指定されたパスが見つかりません」とエラーが発生します。
      カレントディレクトリの位置をJavaファイルのある場所まで移動して、確かめてみてください。

      引き続きご愛読のほどよろしくお願い致します。

リカレントテクノロジー へ返信する コメントをキャンセル

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する