1. ホーム
  2. java

[解決済み] JVM、JDK、JRE、OpenJDKの違いは何ですか?

2022-03-15 07:50:53

質問

とはどのような違いがあるのでしょうか? JVM , JDK , JRE & OpenJDK ?

Javaでプログラミングをしていて、これらのフレーズに遭遇したのですが、それぞれの違いは何ですか?

どのように解決するのですか?

JVM

Java仮想マシン (JVM)は、Javaバイトコードを実行する仮想マシンです。JVMは、Javaのソースコードを理解しません。 *.java を取得するために *.class ファイルには、JVMが理解するバイトコードが含まれています。また、Javaを"portable language"にするためのエンティティでもあります( 一度書けば、どこでも実行できる ). 実際、さまざまなシステム(Windows、Linux、macOS.など)に対応したJVMの実装が存在する。 ウィキペディアの一覧を見る その目的は、同じバイトコードで同じ結果を得ることです。

JDKとJRE

JDKとJREの違いを説明するために、一番良いのは オラクルのドキュメント と図解を参考にしてください。

<ブロッククオート

Javaランタイム環境(JRE)

Java Runtime Environment(JRE)は、Javaプログラミング言語で書かれたアプレットやアプリケーションを実行するためのライブラリ、Java Virtual Machine、その他のコンポーネントを提供します。さらに、JREには2つの重要な展開技術が含まれています。Java Plug-inは、一般的なブラウザでアプレットを実行できるようにし、Java Web Startは、ネットワーク上でスタンドアロンのアプリケーションを展開します。また、企業向けソフトウェアの開発と配備のためのJava 2 Platform, Enterprise Edition (J2EE) の技術の基礎にもなっています。JREには、アプレットやアプリケーションを開発するためのコンパイラやデバッガなどのツールやユーティリティは含まれていない。

Java Development Kit (JDK)

JDKはJREのスーパーセットで、JREに含まれるすべてのものに加え、アプレットやアプリケーションの開発に必要なコンパイラやデバッガなどのツールも含まれています。

なお、JDKを提供しているのはOracleだけではありません。

OpenJDK

OpenJDK は、JDKのオープンソース実装であり、Oracle JDKのベースとなるものです。Oracle JDKとOpenJDKの間には、ほとんど違いはありません。

違いはこのように記載されています。 ブログ :

Q: OpenJDKのリポジトリにあるソースコードと、Oracle JDKのビルドに使用するコードとの違いは何ですか?

A: 非常に近いです。Oracle JDKリリースのビルドプロセスでは、OracleのJava PluginやJava WebStartの実装を含むデプロイメントコード、グラフィックスラスターライザなどのクローズドソースのサードパーティコンポーネント、Rhinoなどのオープンソースのサードパーティコンポーネント、追加のドキュメントやサードパーティのフォントなどいくつかの断片を追加するだけで、OpenJDK 7上に構築しています。今後、JRockit Mission Control(Oracle JDKではまだ利用できません)のような商用機能を除いて、Oracle JDKのすべての部分をオープンソース化し、邪魔なサードパーティ製コンポーネントをオープンソースに置き換えて、コードベース間の同等性をより高めることを意図しています。

JDK 11へのアップデート

ドナルド・スミスが、オラクルのJDKとオラクルのOpenJDKの違いを曖昧にするために書いた記事です。 https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Alan Evangelista さんのコメントにあるように、Java Web Start は Oracle によって Java SE 9 で非推奨になり、Java SE 11 で削除された。