JDK(Java開発キット)、JRE(Javaランタイム環境)、JVM(Java仮想マシン)の違いは何ですか?
JDK、JRE、およびJVMの違いは、人気のある面接の質問の一つです。JDKとJREとJVMの違いについて説明を求められることもあります。
JDK、JRE、およびJVMの違いについて
JDK、JRE、そしてJVMはJavaプログラミング言語の基本的な概念です。私たちはプログラミングでこれらの概念を使用しませんが、Java開発者としてはそれらについて知っている必要があります。
1. Java開発キット
Java開発キット(JDK)は、Java環境の中心コンポーネントであり、Javaプログラムをコンパイル、デバッグ、実行するために必要なすべてのツール、実行ファイル、バイナリを提供します。JDKはプラットフォーム固有のソフトウェアであるため、Windows、Mac、Unixシステム用に別々のインストーラーがあります。JDKはJREの上位集合と言えます。なぜなら、Javaコンパイラ、デバッガー、およびコアクラスを含んでいるからです。
2.JVMを日本語で自然に言い換えてください。:
Java仮想マシン
JVMはJavaプログラミング言語の中核です。Javaプログラムを実行する際、JVMはバイトコードをマシン固有のコードに変換する責任があります。JVMはプラットフォームに依存しており、メモリ管理、ガベージコレクション、セキュリティなどのJavaの基本機能を提供します。JVMはカスタマイズ可能であり、Javaオプションを使用してカスタマイズすることができます。たとえば、JVMに最小および最大メモリを割り当てることができます。JVMは仮想と呼ばれています。なぜなら、そのインタフェースは基礎となるオペレーティングシステムやマシンハードウェアに依存しないからです。このハードウェアとオペレーティングシステムからの独立性により、Javaプログラムは一度書けばどこでも実行できます。
3. JRE
3.JRE (Java実行環境)
JREはJVMの実装です。Javaプログラムを実行するためのプラットフォームを提供します。JREにはJVM、Javaバイナリ、および他のクラスが含まれており、どのプログラムも正常に実行するためのものです。JREにはJavaコンパイラ、デバッガ、JShellなどの開発ツールは含まれていません。Javaプログラムを実行するだけであれば、JREのみをインストールすることができます。Javaのソースコードの開発やコンパイルは不要なため、JDKは必要ありません。JDK、JVM、およびJREに基本的な理解ができたので、それらの違いを見てみましょう。
JDKとJREとJVMの違い
JDK、JRE、およびJVMの重要な違いについて見てみましょう。
-
- JDKは開発用途に使われ、JREはJavaプログラムの実行に用いられます。
-
- JDKとJREの両方にはJVMが含まれており、Javaプログラムを実行することができます。
- JVMはJavaプログラミング言語の心臓であり、プラットフォームの独立性を提供します。
即座コンパイラ(JIT)
時々、教科書ではJVM、JDK、およびJREと一緒にJITも見つけることがあります。JITは、バイトコードをマシン固有の言語に変換するプロセスを最適化するJVMの一部です。JITは似たようなバイトコードを同時にコンパイルし、バイトコードからマシン固有の言語へのコンパイルにかかる全体的な時間を短縮します。