【Java】JVM学習(1)

JVMは仕様です

Javaプログラムの実行処理

Java プログラムは、まず javac によって .class ファイルにコンパイルされ、次に JVM がそれをメソッド領域にロードし、実行エンジンがこれらのバイトコードを実行します。実行すると、オペレーティング システム関連の機能に変換されます。JVM は .class ファイルの変換として存在し、バイトコードを入力して、オペレーティング システム関数を呼び出します。

プロセスは次のとおりです: Java ファイル -> コンパイラー -> バイトコード -> JVM -> マシンコード。

JVM の正式名称は Java Virtual Machine で、おなじみの Java 仮想マシンです。拡張子 .class が付いたファイルを認識し、その命令を解析し、最終的にオペレーティング システム上の関数を呼び出して必要な操作を完了します。

JVM、JRE、JDK の関係

JVM はクラスを機械が認識できるコードに変換する単なるトランスレーターですが、JVM はそれ自体でコードを生成するわけではなく、全員がコードを書く必要があり、同時に多くの依存クラス ライブラリが必要になることに注意してください。 JRE が必要になります。

JRE とは何ですか? JVM が含まれていることに加えて、多くのクラス ライブラリ (つまり、jar パッケージと呼ばれるもので、ファイルの読み取りや操作、ネットワークへの接続、 (I/O の使用など) これらは、JRE によって提供される基本的なクラス ライブラリです。JVM 標準と実装された多数の基本クラス ライブラリは、Java ランタイム環境を構成します。これは、私たちがしばしば JRE (Java ランタイム環境) と呼ぶものです。

しかしプログラマーにとって、JRE だけでは十分ではありません。書き終わったら、コードをコンパイルし、デバッグし、パッケージ化し、場合によってはコードを逆コンパイルする必要があります。そこで、JDK を使用します。JDK には、javac (コンパイル コード)、Java、jar (パッケージ コード)、javap (decompile <disassembly>) などの非常に便利なガジェットも用意されているためです。これがJDKです。

ここに画像の説明を挿入

クロスプラットフォームからクロス言語へ

クロスプラットフォーム: 作成したクラスは、異なるオペレーティング システム (Linux、Windows、MacOS、その他のプラットフォーム) で実行されても、その効果は同じです。これが JVM のクロスプラットフォームの性質です。

クロスプラットフォームを実現するために、異なるオペレーティング システムには対応するバージョンの JDK があります。

ここに画像の説明を挿入

クロスランゲージ (言語に依存しない)

JVM はバイトコードのみを認識するため、JVM は実際には言語から切り離されています。つまり、直接的な関係はありません。JVM は Java ファイルを変換しませんが、クラス ファイルを認識します。これは一般にバイトコードと呼ばれます。Groovy、Kotlin、Scala などの言語もあり、実際にはバイトコードにコンパイルされているため、JVM 上でも実行できます。これが JVM のクロスランゲージ機能です。Java的跨语言性一定程度上奠定了非常强大的java语言生态圈

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_43358469/article/details/131390423