Java SEの特徴と、EE・MEとの違い

Java SEとは?EE、MEとの違いや、JDK、JRE、JVMについて初心者向けに解説します


どーもー、現在某IT系の会社でjavaエンジニアとして働ている者です。(当ブログの管理人です)

さっそくですが、javaには、様々な関連用語が存在します。

なので、例えば、これからjavaのプログラミングを学ぼうと思っている方が、それに必要なソフトウェアをダウンロードしたいと思っても、

「色々あるけど、何をダウンロードすれば良いの?」

となってしまう方は非常に多いでしょう。(私も初心者の頃はそうでした)

実際、オラクル社の公式ダウンロードページを見ても、(以下)

オラクルのjavaSE等のダウンロードページ-1

Oracle公式サイト:ソフトウェアのダウンロード:Java

(オラクル社(oracle)は、javaを管理・提供している会社です。)

この通り、「Java」のところに多くの項目が羅列されています。

「JRE」やら「JDK」やら、「Java SE」やら「Java EE」やら、初心者の方が見たら、「さっぱり分からん。。」ってなりますよね。

今後、javaプログラミングを学ぼうを思ってる方も、まず最初に躓(つまづ)く部分かと思います。

というわけで、今回はjavaに関連するキーワードを一通り、解説していきたいと思います。

また実際に、java(SE)をダウンロードする際の注意点だったり、おすすめのバージョンについてもまとめています。

以下、目次。

  1. Java SE(Java Platform Standard Edition)とは?その特徴や、「EE」・「ME」との違いも。
  2. JVM・JRE・JDK それぞれの特徴と、Java SEとの関係性について
  3. Java SEのダウンロード時の注意点(oracleライセンスの有償化問題など)
  4. おすすめの、javaSEバージョンについて(ver8、11、17)

※javaの基本については、以下の記事もぜひ参考にしてください。

Javaとは?プログラミング言語の特徴や歴史、人気な3つの理由をわかりやすく解説!

Java SE(Java Platform Standard Edition)とは?その特徴や、「EE」・「ME」との違いも。

Java SE(Java Platform Standard Edition)について-1

まずは、javaの基本となるキーワード。

一般的に、「java」という言葉は、この「java SE」のことを指して使われていることが多いです。

※厳密には、後述する「JDK」も含めています。以下のようなイメージですね。

Java = Java SE = JDK

では、具体的にどのような意味・特徴を持っているのか。

「Java SE」とは、Javaでプログラミング(開発)する時や動作させる際に、必要となる機能やデータがまとめられたものを意味します。

それは、Javaでプログラミングする際には、必ず必要となるものです。

※必要となる機能やデータがまとめられたもの・・・「クラス」や「API(Application Programming Interface)」とも呼ばれます。(java.lang.String クラスなど、標準的なクラスが揃えられています)

また、Java SEは定期的にバージョンアップをしています。

バージョン表記は、以下のように分かりやすく記載されています。

Java SE 8

Java SE 13

※ちなみに、古いバージョン(5.0まで)では「javaSE」ではなく、「J2SE(Java 2 Standard Edition)」と呼ばれていました。

(SE含め、後述の、EEやMEなど、利用用途ごとに分岐するようになったのが、javaのver2だったので、「J2SE」となっています。)


一方で、javaSEによく似た言葉で、「javaEE」や「javaME」というワードもよく出てきます。

それぞれ、違った意味をもっているので、以下にまとめてみました。

  • 「java EE(Enterprise Edition)」

    こちらは、企業向けの大規模なWebアプリケーションを開発する際に、必要となる機能やデータがまとめられたもので、前述の「Java SE」を拡張したものとなります。

    (javaSEの機能は、すべて含まれるイメージです)

    ちなみにEEも、「javaSE」と同様に、古いバージョン(4まで)では「J2EE(Java 2 Platform, Enterprise Edition)」と呼ばれ、ver5以降は、「Java EE」という名称に変わりました。

    さらに、2018年2月に、Java EEは、「Jakarta EE」へ名称が変更されています。

    もともと、Java EEは「Oracle」が管理していましたが、「Eclipse Foundation」に移管されたことによって、名前が変更になったのです。

    (Javaという言葉はOracleの登録商標なので、移管後は使えなくなったために。。)

    ※「Jakarta EE」へ変更前の、最新バージョン:「Java EE 8(2017年リリース)」までは、SEとバージョンは紐づいていたようですが(SEのリリースから、1~3年後に後追いリリースしている)

    変更後のバージョンについては、特に紐づいていないようです。

    ちなみに、2019年に「Jakarta EE 8」。2020年に「Jakarta EE 9」のメジャーバージョンがリリースされているようです。

    ※ちなみに当方の感覚ですが、現在では「Java EE」をダウンロードしてプログラミングをしていくことは、あまり無い。という認識ではあります(会社など、何かしらの指定が無い限りは。)

  • 「java ME(Micro Edition)」

    こちらは、家電などの組み込み機器であったり、モバイルデバイスで動作するアプリケーションを開発する際に、必要となる機能やデータがまとめられたものとなります。

    Googleが開発したAndroidについても、初期のころは「java ME」が採用されていました。

    ただしその後、ライセンス絡みで、OracleとGoogleが、何度も裁判で争っている事は業界では有名な話です。

    参考:CNET Japan:「Java」をめぐるオラクル対グーグルの戦い

以上です。

Java SEと、JVM・JRE・JDK ~それぞれの特徴と関係性について

続いて、javaSEと同様に知っておいた方が良い関連用語を順に解説しています。

どの用語も、javaに関する学習やプログラミングをする際には、必ず出てくる重要な言葉となります。

Java SEの関連用語:「JVM(java virtual machine:Java仮想マシン)」について

jvm(java virtual machine)について

JVMとは、Javaのプログラムを実行するための実行マシン(ソフトウェア)となります

Javaの重要な特徴の一つに、どのコンピューター(OS)上でも、同じプログラム、かつ同じコンパイラで、同じように動作させることが可能。

といった特徴がありますが、これを実現しているのが、「JVM」となります。

JVMが、コンパイルされたプログラム(どのOSでも共通の内容)を、各OSごとに問題なく動作させるよう調整(各OSごとの機械語に翻訳する)して実行しているためです。

※「コンパイラ」や「機械語」については、以下の記事にて分かりやすく解説しているので、参考にしてください。

→ コンパイラ言語とは?インタプリタ言語との違いや、それぞれの特徴と言語一覧まとめ

ただし、JVM単体ではJavaプログラムを実行させることはできないため、(厳密には、実行はできるが、Java SEの標準クラス群が無いためにエラーとなる。)

JVMを単体でダウンロードすることはありません。必ず、後述している「JRE」or「JDK」をダウンロードすることになります。(詳細は後述にて)

JRE(java runtime environment:Java実行環境)と「Java SE」について

JREの構成:javaseとjvm-1

続いて、JREは、Javaのプログラムを動作させるためのソフトウェアで、上記の「JVM」や「javaSE」を含む、実行に必要なものを全て揃えたソフトウェアとなります。

「Java実行環境」とか、「Javaランタイム」と呼ばれています。

具体的には、以下のような構成となります。

JRE = JVM + JavaSE(標準API(クラス)群)

ちなみに、よく間違われる注意点の一つに、このJREをダウンロード&インストールすれば、Javaプログラムを実行させることは可能ですが、開発(プログラミング)することはできません。。

なので、Javaのプログラミングをしたい場合には、「JRE」ではなく、次の「JDK」をダウンロード&インストールする必要があります。

また、「JRE」は対応する「Java SE」のバージョンに合わせて、バージョン番号が付けられています。

「JRE 7」や「JRE 8」など

※ちなみに、java11以降については、JRE単体での配布がされていないので、java11以降の実行がしたい場合には、次に解説する「JDK」をダウンロード・インストールする必要があります。

参考:AOE日記:Java11ではPublic JREが本当になくなりました

Java SEと、JDK(java development kit:Java開発キット)について

jdkやjavaSE等の構成-1

JDKは、Javaの開発(プログラミング)に必要なものが全てそろったソフトウェアとなります。

上図の通り、JDKには、「JRE(実行環境)」も含まれています(なので当然、JVMやjavaSEも含みます)

JREに加えて、コンパイラやデバッガなど、開発に必要なものが追加されている形ですね。

上述で記載している通り、現状では、この「JDK」のことを指して、「Java」と呼んでいるケースがほとんどとなります(以下)

Java = Java SE = JDK

Javaでプログラミングをする際は、このJDKが必須になります。

また、JREと同様に、JDKも、Java SEのバージョンに合わせて番号が付けられます。

「JDK 8」や「JDK 11」など

以上、javaに関連するキーワードの解説でした。

Java SEのダウンロード時の注意点(oracleライセンスの有償化問題など)

上述で何度か触れていますが、「java」という言葉は、以下の意味で使われていることが多いです。

Java = Java SE = JDK

実際、以下オラクル社のjavaSEのダウンロードページをみてください。

オラクル公式HP:javaSE(jdk)のダウンロード-1

参考:オラクル公式HP:Java SEの概要

上記のように、javaSEのダウンロードリンクになっていますが、実質ダウンロードされるのは「JDK」が対象となります

(javaSEを単体でダウンロードすることはありませんので、覚えておいてください)

またJDKは、オラクルが提供する「Oracle JDK」だけじゃなく、複数の種類が存在します。

Amazonやマイクロソフトが提供する「JDK」もあるんですね。

そして、一つ重大な違いがありまして、「商用利用するのにお金が掛かるかどうか・・」

商用ではなく、単なる勉強など私用で利用する分には、公式(オラクル)の「Oracle JDK」で問題ないのですが、

「Oracle JDK」で商用利用したい場合だと、javaのバージョンによっては、お金が掛かってしまいます。

なので、商用利用したい場合には、注意してください。詳しくは以下の記事にて詳細にまとめています。

【javaの商用利用の有償化問題】OracleJDKとOpenJDKのライセンスの特徴と、OSS版のおすすめまとめ

Java SEのおすすめバージョンについて(ver8、11、17)

最後に、javaSE(jdk)をダウンロードする際に、どのバージョンがおすすめなのか・・について解説していきます。

javaSEには、LTSの対象となっているバージョンがありまして、

※LTSとは、「Long Term Support」の略で、長期でサポートをしてくれるバージョンとなります。

(ここで言うサポートとは、セキュリティ的に脆弱性等が発覚した場合に、その対応がされた新しいjava(同じメジャー・バージョン)のダウンロードが利用可能となります)

現状(2022/5時点)では、javaの8、11、17が、LTSの対象となっています。

というわけで、おすすめのバージョンは、サポート期間が長い、LTS対象のバージョンになります。

さらにその中でも、現状では最新の「17」を利用するのが良いでしょう。

ダウンロード・インストールする際は、以下も参考にしてください。

→ java(jdk)のダウンロード&インストール方法を初心者向けに解説 ~Windowsの環境構築

以上です。


コメントを残す

メールアドレスが公開されることはありません。