1. ホーム
  2. java

[解決済み] Javaプログラムは、JREのインスタンスに過ぎないのですか?

2023-06-08 08:20:06

質問

を実行すると .exe コンソール アプリケーションを Windows で実行する場合 (C++ で書かれたものなど)、Windows はコンソール ウィンドウを作成します。

つまり、本質的に、プログラムは Windows 自身以外の何かの上で実行されるわけではありません。

を呼び出すと java Main.class cmd.exe コンソールは、本当に独立したプログラムなのでしょうか?どちらかというと java が実行中のプログラムであり Main.class は与えられた単なる引数である。

これらのことは、すべてのJavaプログラムは単にコンソールの java [argument] プログラムなのでしょうか?別の言い方をすれば、すべての Java プログラムは、特定のクラス ファイルを読み込んでいる JRE プログラム/インスタンスに過ぎないのでしょうか?

どのように解決するのですか?

もっと簡単に言うと、答えは はい です (ただし、本当に JRE ではなく JVM を意味しています)。 OSが実行しているプログラムはJVM(Java仮想マシン)であり、Javaアプリケーションはそのプログラムによって読み込まれるデータです。JVMはMicrosoft Wordのようなもので、JavaプログラムはWordのドキュメントのようなものです。

この質問は、よく説明されているように、コンパイル言語とインタプリタ言語の本質的な違いに当たっています。 ここで .

JVM と JRE が何であるかを説明するためにさらに例えを使うなら、JVM は Microsoft Word プログラムそのものであり、JRE は MS Word プログラムに加えて、それが行うことをサポートするために一緒にインストールされるテンプレート、サンプルドキュメント、フォントなどの他のすべてのもののようなものです。