Javaの種類 (JVM, JRE, JDK, JavaSE, JavaEE の違い)

Programming

Javaとはプラットフォームに依存せず、様々な環境、用途で動作させることが出来るプログラミング言語である。
また、これはオブジェクト指向の言語であり、大規模開発に適している。
そのJavaには関連ソフトウェアが複数ある。本ナレッジではその種類と用途に応じた使い分けについて記載する。

Sponsored Links

Javaの処理ステップ

Javaの関連ソフトウェアは実施可能な処理に応じて複数種類が存在する。そのため、まずはその処理についてステップ毎に動作を説明する。

JavaはPythonのようなインタプリタ方式の言語ではない。

しかし、純粋なコンパイラ方式の言語でもなく、コンパイラとインタプリタ双方を利用する言語である。以下にソースコードからプログラム実行して実行結果を得るまでのステップを記載する。

  1. ソースコード作成
    • アウトプット: ソースコード
  2. Javaコンパイラ (javacコマンド) によりソースコードをコンパイル
    • アウトプット: バイトコード
  3. Javaインタプリタ (Javaコマンド) によりバイトコードを実行
    • アウトプット: 実行結果

JVM, JRE, JDK の違い

JVM、JRE、JDKは前述の処理ステップの異なる一部を実施可能なソフトウェアである。
Javaアプリケーションを開発したい場合と実行のみしたい場合によって必要な処理が違い、必要なソフトウェアも異なる。それぞれのソフトウェアについて説明する。

  • JVM (Java Virtual Machine)
    • Javaインタプリタが含まれており、前述の処理のステップ3が可能。
    • Javaインタプリタの他、ガベージコレクションの機能なども含まれた、Javaバイトコードを実行することが可能なスタック型の仮想マシン。
  • JRE (Java Runtime Environment)
    • JVMにさらに各種API群を組み合わせたソフトウェア。そのため、前述の処理のステップ3が可能。
    • Javaアプリケーションを動かすのに必要なソフトウェアをまとめたものである。実行環境が必要な場合、このJREを利用する。
  • JDK (Java Development Kit)
    • コンパイラおよびインタプリタが含まれており、前述の処理のステップ2,3が可能なソフトウェア。
    • JREに加えてコンパイラ等が含まれており、Javaを用いてアプリケーションを開発するため必要なものをまとめた開発キットおよび開発環境である。
    • JDKはOracle Corporationが開発、提供しているもので、Oracle JDK とも呼ばれる。
      • 2019年4月より個人での利用や開発での利用などには無償で使用可能だが、商用利用など個人利用以外の用途では商用ライセンス Java SE Subscription の購入が必要。
    • Oracle Corporationが開発、提供しているものとして、Open JDKもある。
      • これは、Oracle JDKと違いオープンソース実装となっている。
      • Oracle JDK と Open JDKの差異は上記のラインセンス形態の他に下記がある。
        • 主要なソース自体はほぼ同一であり、大きな差異はない。
        • Oracle JDKはOpen JDKにさらに一部の機能やライブラリを追加したもののため、多少、Oracle JDKにしかない機能等がある。
        • 大きな違いはサポート面にある。Open JDKは基本的に次バージョンがリリースされるまでがサポート期間であるのに対し、Oracle JDKは長期サポートが可能。

Java SE, Java EE, Java ME の違い

Java SE、Java EE、Java MEは全てJava プラットフォームのエディションである。JavaプラットフォームとはJava アプリケーションを開発および実行を可能とする機能、API、JavaVMをまとめたものである。エディションそれぞれの違いはどんな用途のJavaアプリケーションの開発に適したものであるかが相違点である。実行環境であるJREと、開発環境であるJDKはエディション毎に異なる。それぞれの詳細について説明する。

  • Java SE (Java Platform, Standard Edition)
    • 一般的なPC向けのエディションである。
    • 主にデスクトップアプリケーションとWEBアプリを開発または実行可能とする。
    • 特に言及のないJRE、JDKのエディションはJava SEと考えて良い。
  • Java EE (Java Platform, Enterprise Edition)
    • サーバ向けのエディションである。
    • Java SE にWEBサーバや業務用システムを開発する為に必要な機能を追加したものであり、大規模開発も可能なものである。
    • 現在は “Jakarta EE” の名称でリリースされている。
  • Java ME (Java Platform, Micro Edition)
    • 組み込みシステム、マイクロコントローラ向けのエディションである。

※ Java とついているプログラミング言語として ”JavaScript” もあるが、これは全くの別物である。”JavaScript” については別ナレッジで記載する。

Sponsored Links