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

コンパイルとプログラムの実行【ゼロから始めるJavaの基礎~その3~】

コンパイルって何?

無事に環境構築は終わりましたでしょうか?ここからは実際にプログラムを動かして行きましょう!と言いたいところですが、その前に『コンパイル』という言葉についてご紹介をしておきたいと思います。

横文字が苦手な方は既に嫌な顔をされているかもしれませんね(笑) でも大丈夫です。きちんと覚えておく必要は無いので、お堅い話が苦手な方は「へ〜、こういう考え方なんだ〜」くらいの軽い感じで流し読みしてもらって構いません。

それでは本題に入っていきましょう!

私達人間が理解できるプログラミング言語をコンピューター上で実行するためには、コンピューターが理解できる機械語に変換してあげなければいけません。この、変換をすることを「コンパイルする」と表現します。

以前こちらの記事で、「Javaには汎用性があり特定のOSに依存しませんよ」というお話をしました。
改めての確認にはなってしまいますが、C言語など、コンパイラ言語と呼ばれるプログラミング言語は、プログラミング言語から直接機械語へのコンパイルが行われるのですが、この場合だと特定のOS(WindowsやMacなど)に合わせてプログラミングをする必要があります。

極端な話ですが、ほとんど同じ機能を持ったアプリケーションを製造する際に、Windows用とMac用2つのプログラムを書かなければならないということですね。

Javaにおけるコンパイルとは

こういった不便さを排除するためにJavaではコンパイルが2段階に分けて行われます。

はい、すでによく分かりませんね(笑)
どういうことかを簡単に説明しますと、まず皆さんが書いたJavaのコードはバイトコードという人間語とバイナリコード(※バイナリコードはこちらの記事でご紹介しました)の中間にあたる言語に翻訳されます。この段階で作成されるのが拡張子が『.class』のクラスファイルと呼ばれるファイルです。
そして、クラスファイルが実行されたタイミングで各OSにインストールされたJVMによって、各OSに対応するように機械語への翻訳が行われます。

少々お堅い話になってしまいましたね。Javaのプログラムが実行されるまでの流れをとっても雑にまとめておきます。

  1. プログラムを書く
  2. クラスファイルの生成を行う(コンパイル1回目)
  3. クラスファイルを実行する(コンパイル2回目)
  4. プログラムが動く

簡単にまとめすぎて各所から怒られそうな気がしますが…。ざっくりまとめるとこんな感じになります(笑)

コンパイルについて少し理解をして頂くことが出来ましたでしょうか!?よく分からないという方もいらっしゃると思いますので、とりあえず次回はプログラムを作って実行するところまでをやってみたいと思います。

その中で「そもそもプログラムってどうやって書くの?」、「専用のツールが必要なの?」、「コンパイルってどうやって実行するの?」などの疑問も解消できるようにしておきますね。

最後までお読み頂きありがとうございました。