どーもー、現在某IT系の会社でjavaエンジニアとして働ている者です。(当ブログの管理人です)
さっそくですが、javaには、様々な関連用語が存在します。
なので、例えば、これからjavaのプログラミングを学ぼうと思っている方が、それに必要なソフトウェアをダウンロードしたいと思っても、
「色々あるけど、何をダウンロードすれば良いの?」
となってしまう方は非常に多いでしょう。(私も初心者の頃はそうでした)
実際、オラクル社の公式ダウンロードページを見ても、(以下)
・Oracle公式サイト:ソフトウェアのダウンロード:Java
(オラクル社(oracle)は、javaを管理・提供している会社です。)
この通り、「Java」のところに多くの項目が羅列されています。
「JRE」やら「JDK」やら、「Java SE」やら「Java EE」やら、初心者の方が見たら、「さっぱり分からん。。」ってなりますよね。
今後、javaプログラミングを学ぼうを思ってる方も、まず最初に躓(つまづ)く部分かと思います。
というわけで、今回はjavaに関連するキーワードを一通り、解説していきたいと思います。
また実際に、java(SE)をダウンロードする際の注意点だったり、おすすめのバージョンについてもまとめています。
以下、目次。
- Java SE(Java Platform Standard Edition)とは?その特徴や、「EE」・「ME」との違いも。
- JVM・JRE・JDK それぞれの特徴と、Java SEとの関係性について
- Java SEのダウンロード時の注意点(oracleライセンスの有償化問題など)
- おすすめの、javaSEバージョンについて(ver8、11、17)
※javaの基本については、以下の記事もぜひ参考にしてください。
・Javaとは?プログラミング言語の特徴や歴史、人気な3つの理由をわかりやすく解説!
Java SE(Java Platform Standard Edition)とは?その特徴や、「EE」・「ME」との違いも。
まずは、javaの基本となるキーワード。
一般的に、「java」という言葉は、この「java SE」のことを指して使われていることが多いです。
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が、何度も裁判で争っている事は業界では有名な話です。
以上です。
Java SEと、JVM・JRE・JDK ~それぞれの特徴と関係性について
続いて、javaSEと同様に知っておいた方が良い関連用語を順に解説しています。
どの用語も、javaに関する学習やプログラミングをする際には、必ず出てくる重要な言葉となります。
Java SEの関連用語:「JVM(java virtual machine:Java仮想マシン)」について
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は、Javaのプログラムを動作させるためのソフトウェアで、上記の「JVM」や「javaSE」を含む、実行に必要なものを全て揃えたソフトウェアとなります。
「Java実行環境」とか、「Javaランタイム」と呼ばれています。
具体的には、以下のような構成となります。
JRE = JVM + JavaSE(標準API(クラス)群)
ちなみに、よく間違われる注意点の一つに、このJREをダウンロード&インストールすれば、Javaプログラムを実行させることは可能ですが、開発(プログラミング)することはできません。。
なので、Javaのプログラミングをしたい場合には、「JRE」ではなく、次の「JDK」をダウンロード&インストールする必要があります。
また、「JRE」は対応する「Java SE」のバージョンに合わせて、バージョン番号が付けられています。
※ちなみに、java11以降については、JRE単体での配布がされていないので、java11以降の実行がしたい場合には、次に解説する「JDK」をダウンロード・インストールする必要があります。
参考:AOE日記:Java11ではPublic JREが本当になくなりました
Java SEと、JDK(java development kit:Java開発キット)について
JDKは、Javaの開発(プログラミング)に必要なものが全てそろったソフトウェアとなります。
上図の通り、JDKには、「JRE(実行環境)」も含まれています(なので当然、JVMやjavaSEも含みます)
JREに加えて、コンパイラやデバッガなど、開発に必要なものが追加されている形ですね。
上述で記載している通り、現状では、この「JDK」のことを指して、「Java」と呼んでいるケースがほとんどとなります(以下)
Java = Java SE = JDK
Javaでプログラミングをする際は、このJDKが必須になります。
また、JREと同様に、JDKも、Java SEのバージョンに合わせて番号が付けられます。
以上、javaに関連するキーワードの解説でした。
Java SEのダウンロード時の注意点(oracleライセンスの有償化問題など)
上述で何度か触れていますが、「java」という言葉は、以下の意味で使われていることが多いです。
Java = Java SE = JDK
実際、以下オラクル社のjavaSEのダウンロードページをみてください。
上記のように、javaSEのダウンロードリンクになっていますが、実質ダウンロードされるのは「JDK」が対象となります
またJDKは、オラクルが提供する「Oracle JDK」だけじゃなく、複数の種類が存在します。
Amazonやマイクロソフトが提供する「JDK」もあるんですね。
そして、一つ重大な違いがありまして、「商用利用するのにお金が掛かるかどうか・・」
商用ではなく、単なる勉強など私用で利用する分には、公式(オラクル)の「Oracle JDK」で問題ないのですが、
「Oracle JDK」で商用利用したい場合だと、javaのバージョンによっては、お金が掛かってしまいます。
なので、商用利用したい場合には、注意してください。詳しくは以下の記事にて詳細にまとめています。
→ 【javaの商用利用の有償化問題】OracleJDKとOpenJDKのライセンスの特徴と、OSS版のおすすめまとめ
Java SEのおすすめバージョンについて(ver8、11、17)
最後に、javaSE(jdk)をダウンロードする際に、どのバージョンがおすすめなのか・・について解説していきます。
javaSEには、LTSの対象となっているバージョンがありまして、
(ここで言うサポートとは、セキュリティ的に脆弱性等が発覚した場合に、その対応がされた新しいjava(同じメジャー・バージョン)のダウンロードが利用可能となります)
現状(2022/5時点)では、javaの8、11、17が、LTSの対象となっています。
というわけで、おすすめのバージョンは、サポート期間が長い、LTS対象のバージョンになります。
さらにその中でも、現状では最新の「17」を利用するのが良いでしょう。
ダウンロード・インストールする際は、以下も参考にしてください。
→ java(jdk)のダウンロード&インストール方法を初心者向けに解説 ~Windowsの環境構築
以上です。