はい、混乱する可能性があります。
あなたはそれを求めていませんでしたが、私はここから始めます。JVM は Java 仮想マシンです。これは、コンパイルされた Java コード (.class ファイル、およびパッケージ化された一連の .class ファイルを含む単なる .zip ファイルである .jar ファイル) を読み取って実行できるプログラムです。多くの JVM があります。たとえば、Windows 用の JVM、Linux 用の JVM、OSX 用の JVM などが必要ですが、代わりの JVM や組み込みデバイス用の JVM なども多数あります (多くの人は、JVM は 1 つだけであることに同意しません。これは仕様ですが、通常、システム管理者はサーバー上で実行されている実際のバイナリを示すために「JVM」と言います)。
次のことも求めていません。JRE は Java ランタイム環境です。これには、Java アプリケーションを実行するために必要なすべてのものが含まれています。つまり、JVM 自体、標準ライブラリ、およびその他の多数のファイルです。標準ライブラリには、Java アプリケーションの開発時に使用する便利な機能が多数含まれているため、それ自体が非常に重要です。これには、java.* パッケージのすべてのものと、com.sun、com.oracle パッケージのいくつかのプライベートなものが含まれています。
Java のさまざまなバージョン (1.0、1.1 などから 1.7 まで、Java 7 とも呼ばれます) には通常、JVM と標準ライブラリの両方に対する改善が含まれているため、通常、この 2 つを一緒に実行する必要があり、. JRE。
コンピュータで Java プログラムを実行している場合は、JRE がインストールされています。
JDK は Java 開発キットです。これには、JRE だけでなく、 Java アプリケーションを開発するための他の多くの便利なものが含まれています。これには明らかにコンパイラ (何らかの正当な理由で JRE にも含まれていますが、今はこの事実を無視できます)、.jar ファイルを作成するための JAR ユーティリティ、クラス ファイルを「逆コンパイル」するための多くのツール、.jar ファイルの検査、それらを再パッケージ化するなど。
また、通常、標準ライブラリのドキュメントと標準ライブラリのすべてのソースも含まれています。これは、開発者が読んで調べるのに役立つためです。Java アプリケーションを本格的に開発したい場合は、JDK が必要です。
JavaSE、JavaEE、JavaMEなどについて話すとき、それらはいわゆる「エディション」です。基本的に、Java エコシステムは巨大であるため、Sun はさまざまなエディションで Java を提供することにしました。
- JavaSE: 標準版です。通常、クライアント側のソフトウェアや通常のアプリケーションなどに適しています。
- JavaME: はモバイル版で、古い携帯電話の小さなゲームで使用されていましたが、基本的には非常に低容量のプロセッサに適した Java の「小さい」バージョンです。
- JavaEE: は「エンタープライズ版」です。サーバーサイドの開発に使用されるため、サーバーサイドで使用される多くのライブラリが含まれています。
番号付けに関しては、彼らはそれをかなり台無しにしました。実際、Java 1.4 の後、彼らは Java 自体の開発にコミュニティーを巻き込むために JCP を作成し、Java 1.5 から正式に「Java 5」と名付けられましたが、業界ではほとんどが 1.5 と呼んでいます。また、Java 1.2 は Java 2 でしたが、当時 Sun で働いていなかった私の知り合いは全員、それを 1.2 と呼んでいました。