ホーム プログラミング言語 java java-basic Javaプログラムの実行プロセス(実行フロー)解析

Javaプログラムの実行プロセス(実行フロー)解析


 
 
すべてが既知であり、その理由を知る必要があるため、このセクションではJavaプログラムの実行プロセスについて詳しく学習します。

 

「メモ帳を使用した Java プログラムの作成と実行」セクションの事例から、 Java プログラムの操作は、作成、コンパイル、実行という 3 つのステップを経る必要があることがわかります。

  1. 書き込み: Java 開発環境でのプログラム コードの入力を指し、最終的に .java という接尾辞が付いた Java ソース ファイルを形成します。
  2. コンパイル: Java コンパイラーを使用してソース ファイルのトラブルシューティングを行うプロセスを指します。コンパイル後、C 言語で生成される実行可能ファイルとは異なり、拡張子 .class が付いたバイトコード ファイルが生成されます。
  3. 実行中: Java インタプリタを使用してバイトコード ファイルをマシン コードに変換し、実行して結果を表示することを指します。

Java プログラムの実行プロセスを図 1 に示します。

図 1 Java プログラムの実行プロセス (source: google image)
図 1 Java プログラムの実行プロセス (source: google image)
 

バイトコード ファイルは、特定のマシン環境やオペレーティング システム環境とは関係のない中間コードです。これはバイナリ ファイルであり、Java ソース ファイルが Java コンパイラによってコンパイルされた後に生成されるオブジェクト コード ファイルです。プログラマもコンピュータもバイトコード ファイルを直接理解することができないため、専用の Java インタプリタによって解釈して実行する必要があるため、Java はコンパイルに基づいて解釈して実行する言語です。

Java インタプリタは、特定のハードウェア環境および実行用のオペレーティング システム プラットフォームの下で、バイトコード ファイルをマシン コードに変換する役割を果たします。したがって、Java プログラムは既存のオペレーティング システム プラットフォーム上で直接実行できませんが、Java 仮想マシンと呼ばれるソフトウェア プラットフォーム上で実行する必要があります。

Java 仮想マシン (JVM) は、Java プログラムが実行されるソフトウェア環境であり、Java インタープリタは Java 仮想マシンの一部です。 Java プログラムを実行する場合、最初に JVM が起動され、次に JVM が Java バイトコード プログラムの解釈と実行を担当します。Java バイトコード プログラムは JVM 上でのみ実行できます。このように、JVM を使用することで、Java バイトコード プログラムを特定のハードウェア プラットフォームやオペレーティング システム環境から分離することができ、特定のプラットフォーム用の JVM が別のコンピュータにインストールされている限り、現在の特定のハードウェア プラットフォームやオペレーティング システム環境に関係なく Java プログラムを実行できます。環境: ハードウェア プラットフォームとオペレーティング システム環境、およびバイトコード ファイルが生成されるプラットフォームを考慮する必要はありません。

JVM は、さまざまなソフトウェア プラットフォームとハードウェア プラットフォーム間の具体的な違いを隠し、実際のバイナリ コード レベルのクロスプラットフォーム移植を実現します。 JVM は Java プラットフォーム アーキテクチャの基盤であり、Java のクロスプラットフォーム特性は、JVM で Java プログラムを実行することによって実現されます。 Java のこの動作メカニズムは、図 2 で説明できます。

 

図 2 JVM 動作モード (source: google image)
図 2 JVM 動作モード (source: google image)

Java言語の「一度書いたらどこでも実行できる」方式は、ほとんどの高級プログラミング言語が異なるシステムに対して異なるマシンコードをコンパイルして生成する必要があるという問題、つまりハードウェア環境とオペレーティングプラットフォームの異種混合の問題を効果的に解決します。 、プログラムの開発、保守、管理のオーバーヘッドが大幅に削減されました。

ヒント: Java プログラムは JVM を通じてクロスプラットフォーム機能を実現できますが、JVM はクロスプラットフォームではありません。つまり、オペレーティング システムが異なれば JVM は異なり、Windows プラットフォームの JVM は Linux プラットフォームでは使用できず、その逆も同様です。

 

「 Javaプログラムの実行プロセス(実行フロー)解析」についてわかりやすく解説!絶対に観るべきベスト2動画

【Java超入門コース】05.プログラム実行方法 |プログラムを書いて動かしてみよう【プログラミング初心者向け入門講座】
static変数、staticメソッドの使いどころやメモリ内の動き【Java入門講座】3-7 static