JDK、JRE、およびJVMの違い

JDK、JRE、およびJVMの違いは人気のあるインタビューの質問の1つです。JDKとJRE、JVMの違いを説明するように求められることもあります。

JDK、JRE、およびJVMの違い

JDK、JRE、およびJVMはJavaプログラミング言語の中核的な概念です。これらの概念はプログラミングで直接使用しませんが、Java開発者としてはこれらについて知っているべきです。

1. JDK

Java Development Kit(JDK)はJava環境の中核コンポーネントであり、Javaプログラムをコンパイル、デバッグ、実行するために必要なすべてのツール、実行可能ファイル、およびバイナリを提供します。JDKはプラットフォーム固有のソフトウェアであり、そのためWindows、Mac、およびUnixシステム用に別々のインストーラが用意されています。JDKはJREを含み、Javaコンパイラ、デバッガー、およびコアクラスを備えているため、JREのスーパーセットと言えます。

2. JVM

JVMはJavaプログラミング言語の中核です。Javaプログラムを実行するとき、JVMはバイトコードをマシン固有のコードに変換する責任があります。JVMはまた、プラットフォーム依存であり、メモリ管理、ガベージコレクション、セキュリティなどのコアJava機能を提供します。JVMはカスタマイズ可能であり、Javaオプションを使用してカスタマイズできます。たとえば、JVMに最小および最大メモリを割り当てることができます。JVMは仮想と呼ばれますが、これは基礎となるオペレーティングシステムやマシンハードウェアに依存しないインターフェースを提供するためです。このハードウェアとオペレーティングシステムからの独立性により、Javaプログラムは一度書いてどこでも実行できます。

3. JRE

JREはJVMの実装です。Javaプログラムを実行するプラットフォームを提供します。JREにはJVM、Javaバイナリ、および他のクラスが含まれ、どのプログラムでも正常に実行できます。JREにはJavaコンパイラ、デバッガー、JShellなどの開発ツールは含まれていません。Javaプログラムを実行するだけであれば、JREだけをインストールすれば十分です。Javaのソースコードの開発やコンパイルが必要ないため、JDKは必要ありません。これで、JDK、JVM、およびJREの基本的な理解ができたので、それらの違いを見てみましょう。

JDK vs JRE vs JVM

JDK、JRE、およびJVMの重要な違いのいくつかを見てみましょう。

  1. JDKは開発目的に、一方JREはJavaプログラムを実行するためです。
  2. JDKとJREの両方にはJVMが含まれているので、Javaプログラムを実行できます。
  3. JVMはJavaプログラミング言語の中心であり、プラットフォームの独立性を提供します。

Just-in-time Compiler (JIT)

時々、教科書でJITがJVM、JDK、およびJREと一緒に見つかることがあります。 JITは、バイトコードをマシン固有の言語に変換するプロセスを最適化するJVMの一部であり、類似のバイトコードを同時にコンパイルし、バイトコードをマシン固有の言語に変換するための全体的な時間を短縮します。

Source:
https://www.digitalocean.com/community/tutorials/difference-jdk-vs-jre-vs-jvm