JVM、JDK、JRE、OpenJDKの違いは何ですか? 質問する

JVM、JDK、JRE、OpenJDKの違いは何ですか? 質問する

JVM、JDK、JRE、OpenJDK の違いは何ですか?

ベストアンサー1

ジャバ仮想マシン

Java仮想マシン(JVM) は、Java バイトコードを実行する仮想マシンです。JVM は Java ソースコードを理解しないため、 JVM が理解できるバイトコードを含むファイル*.javaを取得するには、ファイルをコンパイルする必要があります。また、これは Java を「ポータブル言語」(一度書けばどこでも実行可能) にするための要素でもあります。実際、さまざまなシステム (Windows、Linux、macOS、*.classWikipediaのリストを見る) 、同じバイトコードですべて同じ結果が得られるようにすることが目的です。

JDK と JRE

JDKとJREの違いを説明するには、Oracle ドキュメント図を参照してください:

Java ランタイム環境 (JRE)

Java Runtime Environment (JRE) は、Java プログラミング言語で記述されたアプレットやアプリケーションを実行するためのライブラリ、Java 仮想マシン、およびその他のコンポーネントを提供します。さらに、JRE には、アプレットを一般的なブラウザで実行できるようにする Java Plug-in と、ネットワーク経由でスタンドアロン アプリケーションを展開する Java Web Start という 2 つの主要な展開テクノロジが含まれています。また、JRE は、エンタープライズ ソフトウェアの開発と展開のための Java 2 Platform, Enterprise Edition (J2EE) のテクノロジの基盤でもあります。JRE には、アプレットやアプリケーションを開発するためのコンパイラやデバッガなどのツールやユーティリティは含まれていません。

Java 開発キット (JDK)

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

JDK を提供しているのは Oracle だけではないことに注意します。

オープンJDK

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

違いはここに述べられているブログ:

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

A: 非常に近いです。Oracle JDK リリースのビルド プロセスは、OpenJDK 7 をベースに構築され、デプロイメント コードなどのいくつかの部分が追加されます。デプロイメント コードには、Oracle の Java プラグインと Java WebStart の実装、グラフィックス ラスタライザーなどのクローズド ソースのサード パーティ コンポーネント、Rhino などのオープン ソースのサード パーティ コンポーネント、追加のドキュメントやサード パーティ フォントなどのいくつかの要素が含まれます。今後は、JRockit Mission Control (Oracle JDK ではまだ利用できません) などの商用機能と見なされるものを除いて、Oracle JDK のすべての部分をオープン ソース化し、煩わしいサード パーティ コンポーネントをオープン ソースの代替品に置き換えて、コード ベース間の同等性を高める予定です。

JDK 11 のアップデート

Donald Smith 氏の記事では、Oracle JDK と Oracle の 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 では削除されました。

おすすめ記事