こんにちは!Java学習、順調に進んでいますか?前回は「Hello, World!」を動かしてみて、「動いたー!」って感動した人もいるんじゃないかな?
でも、「Hello, World!」のプログラムを動かすとき、EclipseとかIntelliJ IDEAの「実行ボタン」をポチッと押しただけだったよね?実はその裏側で、Javaのプログラムが動くまでにいくつかのステップがあるんです。今回は、そのプログラムが動くまでの基本的な流れ、特にコンパイルと実行について、フランクに分かりやすく解説していくね!
プログラマーの書いたコードは、そのままじゃコンピュータは読めない!?
私たちが書いたJavaのコードって、public class HelloWorld { ... }みたいな英語っぽい文字の羅列だよね。これをソースコードって言います。
でも、残念ながらコンピュータは、私たちが書いたこのソースコードをそのまま理解できるわけじゃないんです。コンピュータが理解できるのは、0と1の羅列、つまり機械語と呼ばれる特殊な言葉だけ。
じゃあ、どうやってこのギャップを埋めるんだろう?そこで登場するのが、コンパイルと実行という2つのステップなんだ!
ステップ1:コンパイル(翻訳する作業)
ソースコードを機械語に変換する作業をコンパイルって呼びます。例えるなら、私たちが書いた日本語の文章を、コンピュータが理解できる外国語に翻訳する作業みたいなものだね。
この翻訳をしてくれるのが、コンパイラという特別なプログラムです。Javaの場合、Javaコンパイラ (javac) っていうツールがこの役割を担ってくれるんだ。
例えば、HelloWorld.javaというソースコードがあったとしよう。
Java
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
これをコンパイルすると、HelloWorld.classというファイルが作られます。この.classファイルは、バイトコードと呼ばれていて、まだ完全に機械語ではないんだけど、Javaの仮想マシン (JVM) が理解できる形になっています。
もし、ソースコードに文法的な間違い(例えば、セミコロンが抜けてるとか、typoがあるとか)があると、コンパイラは「ん?ここおかしいよ!」ってエラーを出して教えてくれるんだ。だから、コンパイルが成功しないと、次のステップには進めないってわけ。
ステップ2:実行(動かす作業)
コンパイルが成功して.classファイル(バイトコード)ができたら、いよいよプログラムを実行する番!
このバイトコードを実行してくれるのが、Javaの仮想マシン (JVM: Java Virtual Machine) です。JVMは、Javaのプログラムを動かすための土台となるソフトウェアだと思ってくれればOK。
JVMが.classファイルを読み込んで、そこに書かれているバイトコードをコンピュータが理解できる機械語にその場で変換しながら、プログラムを動かしてくれるんだ。
「Hello, World!」の例で言うと、JVMがHelloWorld.classを読み込んで、「System.out.println(“Hello, World!”);」という命令を解釈して、画面に「Hello, World!」と表示してくれるってことだね。
まとめ:プログラムが動くまでの流れ
- ソースコードを書く: 私たちがJavaの文法でプログラムを書く。
- コンパイルする: Javaコンパイラ (javac) がソースコードをバイトコード (
.classファイル) に翻訳する。 - 実行する: Java仮想マシン (JVM) がバイトコードを読み込み、プログラムを動かす。
普段、EclipseやIntelliJ IDEAを使っていると、このコンパイルと実行の作業を自動でやってくれるから、あまり意識しないかもしれないね。でも、この裏側の仕組みを知っておくと、エラーが出た時なんかに「あ、これはコンパイルエラーかな?」とか「実行環境がおかしいのかな?」って見当をつけやすくなるから、ぜひ覚えておいてほしいな!
次回からは、この基本的な流れを踏まえて、プログラムのパーツとなる「変数」について深掘りしていくよ。お楽しみに!


コメント