JavaのJREとJVMとJDKとJava SEの違いです。
目次
説明 | JREとJVMとは |
JDK (Java Development Kit)とは | |
Java SEとは | |
Java EEとは |
JREとJVMとは
JREとは
JREとは、Java Runtime Environmentの略でJavaの実行環境です。
Javaランタイムとも呼ばれます。
Javaベースのソフトウェアを動かすときやJava実行環境が必要なサイトを利用する時などに必要です。
JREは、以下のサイトで入手できます。
https://www.java.com/ja/
このページの「あなたとJAVA,今すぐダウンロード」は、インパクトがあるのでネット上の定番ネタにもなっています。
JVMとは
Java Virtual Machineの略でJavaプログラムを動かすのに必要なJava仮想マシンです。
Java VMとも呼ばれます。
上図のようにJREの中にJVMがあるイメージです(JRE = JVM + ライブラリ)。
OSの違いを吸収
JVMは、クラスファイルのバイトコードをCPUが実行するマシン語に変換します。
WindowsやLinuxなどのOS毎の違いを吸収してくれるのでプログラムを作成する側がOSの違いを意識しなくてよくなります。
※本来であれば、OSごとにプログラムを作成する必要があります。
管理するメモリ
JVMのメモリ管理は、ヒープ(Heap)とスタック(Stack)を管理します。
ヒープはインスタンス生成時に使用されます。
ガベージコレクション(GC)
JVMは、自動的にヒープ(Heap)にある不要なインスタンスを解放します。
ガベージ(Garbage)はゴミ箱という意味です。
何らかの原因でインスタンスが解放されず空き容量が減る不具合が起こる場合があります。
この現象をメモリリーク(memory leak)と呼びます。
対応するプログラミング言語
JVMは、Java以外のScalaやKotlinといったプログラミング言語も動かすことができます。
JVMの使用例
Eclipseの設定ファイルのeclipse.iniで、起動オプションの-vmを指定してJVMの場所を指定します。
-vm
C:/Program Files/Java/jdk1.8.0_211/bin/javaw.exe
以下は、Oracleの用語の違いについて書かれているリンクです。
https://www.java.com/ja/download/faq/techinfo.xml
JDK (Java Development Kit)とは
JDKは、JREとJavaプログラムを開発するためのライブラリが入っています。
具体的な開発のライブラリ
JDKをインストールしたフォルダのbin配下(C:\Program Files\Java\jdk-9.0.1\bin)に
開発向けのexeファイルとして、コンパイルするためのjavac.exeやJava文書を生成するjavadoc.exeなどがあります。
JDKは、以下のOracleのサイトで入手できます。
https://www.oracle.com/technetwork/java/javase/downloads/index.html
以下は、OracleのJava概念図のリンクです。
リンク先の図の左側を見るとJDKはJREを内包していることがわかります。
https://docs.oracle.com/javase/jp/7/
Java SEとは
Java SEは、Java Platform, Standard Editionの略です。
Javaの標準的な機能のAPIの集合体です。
OracleのJava SEのダウンロードボタンをクリックするとJDKがダウンロードされます。
JavaSE (JDK)は、以下のOracleのサイトで入手できます。
https://www.oracle.com/technetwork/java/javase/downloads/index.html
呼び方の歴史
最初は、1.Xでしたがバージョン5から5になりました。
バージョンの2から5までは J2SEと呼ばれていました。
バージョン6からJavaSEと呼ばれています。
Java SE10 |
Java SE9 |
Java SE8 |
Java SE7 |
Java SE6 |
J2SE 5.0 |
J2SE 1.4 |
J2SE 1.3 |
J2SE 1.2 |
JDK 1.1 |
JDK 1.0 |
Java EEとは
Java EEというのもあります。Java Platform, Enterprise Editionの略です。
Java SEに加えてサーバー向けの機能がついています。
Oracleのサイトでは、JDKではなくSDKとなっています。
JavaEE (SDK)は、以下のOracleのサイトで入手できます。
http://www.oracle.com/technetwork/java/javaee/downloads/index.html
関連の記事