◽️JDK (Java Development Kit)でコンパイラと実行環境のためのツール。
JDKの中にJREとコンパイラがある。
コンパイラはJVMが読めるバイトコード(.class)に翻訳する機能を持つ。
◽️JREは実行環境です。「Javaを動かすためのツールセット」
JVM本体に加えてプログラムが動く時に必要となる「標準ライブラリ(便利な部品集)」などがセットになっています。
あなたが書いたPGMはすでにコンパイラが機械語(.class)に変えているので、標準ライブラリとガッチャンコして動くように整備する。ここで「いつでも実行できる」状態にします。
◽️JVM 実行エンジン(末端)
Javaのコード(バイトコード)をそのパソコン(WindowsやMacなど)が理解できる言葉にリアルタイムで翻訳して実行します。これのおかげで、環境に寄らずJavaを動かすことが可能なわけです。
がっちゃんこして、整えたデータをOSごと(Windows/Mac)の「本当の機械語」にその場でリアルタイム翻訳しながら動かすのがJVM。