LoginSignup
18
13

More than 1 year has passed since last update.

【初心者】Java?JDK?JRE?JVM 違いを理解したい

Posted at

はじめに

僕は Javaと聞いて Oracle? 組み込み?脆弱性対応?などのキーワードが浮かびます。
JDK・JRE・JVM の区別もついてないですが、Java を触る必要があるため、これを機に理解したいと思います。

Javaを第三者に一言で説明したい

  • Javaとは、サン・マイクロシステムズ社が開発したプログラム言語

ざっくりまとめると

スライド1.JPG

スライド2.JPG

用語

  • Java SE
    • Java Platform, Standard Edition の略。Java で使用される API をまとめたもの
      • Javaで提供される API は非常に多く、Java SE はその中でも基本となる API をまとめたもの
      • ex: java.lang.String クラスなどが含まれる(らしい)
      • デスクトップアプリケーションなどを開発する場合は Java SE だけでも事足りるケースが多い
  • Java EE
    • Java Platform, Enterprise Edition の略。大規模なシステムで開発する場合に必要となる API が含まれる
    • Java EE は Java SE の拡張機能という位置づけ。Java EE 使用時は Java SE と合わせて使用する
    • Java EE は 2017 年に oracle から Eclipse Foundation に移管済
    • 名称は Java EE から Jakarta EE になる
  • Java ME
    • Java Platform, Micro Editon の略。組み込み機器やモバイルデバイスで動作するアプリケーション開発用の API が含まれる
  • JVM
    • Java Virtual Machine の略。Java で作成したアプリケーションを Windows/Mac OS などで動かすために必要となるアプリケーション
    • Java 仮想マシンなどと呼ばれる
    • Java で作成したプログラムをコンパイルすると中間コードと呼ばれる Java クラスファイルを出力する
    • Java クラスファイルはどの OS 上でコンパイルしても同じものを生成する
    • Java クラスファイルは単独で実行できず、実行環境の OS 上にインストールしている JVM で実行される
    • Java クラスファイルが OS 共通でも問題無く実行できるのは、JVM が Java クラスファイルを対象の OS で動作するように変換して実行するため
  • JRE
    • Java Runtime Environment の略。Java プログラムを実行するためのセット
    • Java 実行環境・Java ランタイムと呼ばれる
    • JRE は JVM と API のセット
    • JRE は対応する Java SE バージョンに合わせて、バージョン番号を付与する(ex: JRE8, JRE13)
  • JDK
    • Java Development Kit の略。Java のプログラム開発や実行を行うためのプログラムのセット
    • Java 開発環境と呼ばれる
    • JRE(JVM+API) + Java プログラムをコンパイルするためのプログラムやデバック用プログラムを含む
    • JDK をインストすれば、Java でアプリケーション作成や実行まで一通りできる
    • JDK も対応する Java SE バージョンに合わせて、バージョン番号を付与する(ex: JDK 8, JDK 13)

Oracle JDK 有償化

  • Oracle JDK は2019年4月から有償化
  • 無償利用は個人での開発・テスト・デモ目的のみ
  • 無償版は OpenJDK プロジェクトとして開発/リリースされている(Oracle JDK(分かり辛い名前...,Oracle OpenJDKなど)

結局どれインストすればいいのか

  • サポートポリシー気にするなら Oracle JDK(有償)
  • 検証したいだけなら OpenJDK ベースのどれか(ex: Oracle OpenJDK / 無償)

実機確認

java -version で確認

# java -version
java version "1.8.0_321" // Java SE8 を意味している
Java(TM) SE Runtime Environment (build 1.8.0_321-b07) 
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

最新バージョン確認

参考

18
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13