[解決済み] JVM、JDK、JRE、OpenJDKの違いは何ですか?
質問
とはどのような違いがあるのでしょうか? 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 で削除された。
関連
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Oracle JDKとOpenJDKの違いについて
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
プロローグでのコンテンツは禁止されています
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] Oracle JDKとOpenJDKの違いについて
-
[解決済み】Java SE/EE/MEの違い?