JVMとHotSpotの違いは?


147

HotSpotとは具体的には何であり、JVMおよびOpenJDKとどのように関連していますか?ライブラリですか?正確には何をしますか?

また、OpenJDKとHotSpotの違いは何ですか?

回答:


148

Java仮想マシンとは何かの定義は、Java仮想マシン仕様に記載されています。

JVMは定義上、仮想マシン、つまり実際のマシンの動作をシミュレートするソフトウェアマシンです。実際のマシンと同様に、命令セット、仮想コンピュータアーキテクチャ、実行モデルがあります。実際のマシンがマシンコードを実行できるのとほぼ同じように、この仮想命令セットで記述されたコードを実行できます。

HotSpotは、JVMコンセプトの実装です。もともとはSunによって開発され、現在はOracleが所有しています。JRockitIBM J9など、JVM仕様の実装は他にも多数あります。

Java仮想マシン実装のリストを参照してください

OpenJDKのは、下のオープンソースのHotSpotの実装(およびJDK例えば、コンパイラ、APIは、ツール、などの多くの他の部分)のプロジェクトが開発されています。


25

OpenJDK(Open Java Development Kit)は、Java Platform、Standard Edition(Java SE)の無料でオープンソースの実装です。openjdkは、Sun Microsystemsによって開始されたプロジェクトであり、現在、多くの企業やコミュニティがJava開発キットを構築するために注意を払っています。絶対にオープンソースです。あたりとして公式ドキュメント

OpenJDKは、Java Platform、Standard Edition(Java SE)仕様のオープンソース実装です。2007年5月、Sunは、GNU General Public Licenseバージョン2(GPLv2)の下で、Java SE用の完全にビルド可能なJava Development Kit(JDK)バージョンをOpenJDKコミュニティにフリーソフトウェアとしてリリースしました。Sunは、OpenJDKコミュニティ向けの暫定統治委員会を発表しました。Sunは、OpenJDKベースの実装がJava SE 6技術互換性キット(JCK)を使用してJava SE 6仕様との互換性を確立できることも発表しました。

OpenJDKのプロジェクトは -コンポーネントの数で構成されたHotSpot(仮想マシン)、Javaのクラスライブラリとjavac Javaのcompiler.Forよりその上、その訪問サイトを

Sun / Oracleが提供する現在のJVMは、「ジャストインタイム」最適化のためにコード(コードがより集中的に使用される場所)でホットスポットを探すため、HotSpotと呼ばれています。ウィキペディア「JavaのHotSpotのパフォーマンスエンジン」としてリリースホットスポット、デスクトップおよびサーバ、維持およびオラクル社が配布用のJava仮想マシンです。


OpenJDKもコードを実行するためにHotSpotを使用していると聞きましたか?本当?
ジャスティン

@TheNewIdiot、それであなたはHotSpotがOpenJDKの一部だと言っているのですか?または、上記の回答が示唆するように、独自のHotSpotもありますか?
パチェリエ14

@NINC、それでHotspotはOracleJDKとOpenJDKの両方の一部ですか?ホットスポット= JRockit = OracleJDK = OpenJDK?
パセリエ2017

12

注:AdoptOpenJDKは、2020年後半にEclipse Foundationに移行した後、名前をAdoptiumに変更しました。


JVMとHotSpotの違いは?

Java仮想マシン(JVM)は、物理的なハードウェアとして構築されていない架空のコンピュータです。JVMは、バイトコードと呼ばれる中間表現としてストレージに書き込まれた架空の命令セットにコンパイルされたプログラムを実行します。

実行時に、バイトコードは、仮想命令セットからホストマシンのCPUの実際の命令セットに変換される必要があります。これは、インタプリタによってオンザフライで実行できます。または、ジャストインタイム(JIT)コンパイルと呼ばれるプロセスで、バイトコードを完全にコンパイルしてキャッシュし、インタープリターよりも高速に実行できます。

何十年もの間、JVMの多くの実装がありました。ほとんどが落ちてしまった。

HotSpotはJITテクノロジーの1つの実装であり、インタープリターを実行することから始まり、アプリの実際のパフォーマンスを監視します。次に、アプリの一部が選択され、ネイティブコードとして完全にコンパイルされてキャッシュされるため、実行速度が大幅に向上します。HotSpotは Sunで商用製品として開発されました。Sunを買収した後、オラクルは競合製品である JRockitの重要な部分を組み合わせることにより、HotSpotをさらに進化させました。HotSpotが OpenJDKを介してオープンソースになりましたプロジェクト無料で利用できます。

IBMによって開発され、現在はEclipse Foundationを通じてオープンソース化されており、無料で利用できるOpenJ9のこのような別の実装。OpenJDK上に構築された一部のJVMディストリビューションは、Java SEクラスライブラリなどのOpenJDKの残りの部分を使用しながら、HotSpotをOpenJ9に置き換えます。たとえば、AdoptOpenJDKで入手可能なビルド済みのディストリビューションでは、一部のハードウェアでHotSpotまたはOpenJ9を選択できます。

HotSpotとJRockitのマージの履歴、およびAdoptOpenJDKで利用可能なOpenJ9を示す図。

HotSpotとJRockitのマージの履歴、およびAdoptOpenJDKで利用可能なOpenJ9を示す図

HotSpotとは具体的には何であり、JVMおよびOpenJDKとどのように関連していますか?ライブラリですか?正確には何をしますか?

  • HotSpotは、ホストCPUで実行されるJavaバイトコードを解釈またはコンパイルするJVMの一部の実装です。
  • OpenJ9は代替手段です。

OpenJ9は一般に、最初は起動がはるかに速く、メモリ使用量ははるかに少ないことで知られていますが、HotSpotは長時間実行するアプリ全体で効率的に実行できます。どちらも定評があり、使い古されており、OpenJDKのディストリビューションで利用できます。

OpenJDK、Javaプラットフォームを定義する Java仕様 JSR、および JEPを完全に実装するオープンソースプロジェクトです。今日私が知っているすべてのJVM実装は、OpenJDKコードベースに完全にまたはほとんど基づいており、HotSpotまたはOpenJ9テクノロジーを使用しています。

OpenJDKは、JVMの他に、java.langjava.utiljava.time、およびその他のパッケージなど、Java SE仕様で必要なすべてのクラスのソースコードの実装も提供します。

また、OpenJDKとHotSpotの違いは何ですか?

HotSpotのソースコードは、OpenJDKプロジェクトの一部として格納、維持、さらに開発されています。OpenJDKの一部のディストリビューションではHotSpotを置き換える一方で、代替のOpenJ9Eclipse Foundationで収容、保守、さらに開発されています。

Javaテクノロジの一部のディストリビューションは、HotSpotを同梱することを選択しています。一部のディストリビューションでは、HotSpotであるOpenJDKコードベースの部分を代替のOpenJ9で置き換えることを選択しています。

以下は、Javaプラットフォームのディストリビューションのベンダーを選択するのに役立つフローチャート図です。

Java 11実装のベンダーを選択する際のガイドとなるフローチャート

Javaのベンダーを選択する動機


8

HotSpotは、前述のように、Java仮想マシン(JVM)コンセプトのクロスプラットフォーム実装であり、GNU General Public Licenseに基づいてOpenJDK(Java Developer Kit)とともに配布されます。HotSpotは主にC ++で記述され、もともとはSun Microsystemsのもとで開発されました。現在、www.java.netのOpenJDKプロジェクトで開発されています。HotSpot JVMはJava 1.2のアドオンとして利用可能でしたが、後にJava 1.3のデフォルトのSun JVMとして使用されました。JVMは現在バージョン7、ビルドb147であり、その背後にアクティブな開発コミュニティがあります。

詳細については、https//www.java.net/にアクセスしてください。

ハッピーコーディング!


7

JVMは抽象的なマシン(仕様)です。HotSpot、OpenJDK、JRockitなどは、JVMの実装です。

フリーでオープンソースの実装

  • HotSpot、主要なリファレンスJava VM実装

  • OpenJDK — Open Java Development Kitは、リンクの例外を除いて、GNU General Public License(GNU GPL)の下でライセンスされる無料のオープンソース実装です。

独自の実装

  • Oracle、Linux、Windows、およびSolaris用に買収されたJRockit(元はAppeal Virtual Machinesから)

その他の実装の
リンクは、HotSpotとJRocketの違いを説明しています


-25

HotSpotはC ++ハッキングの高度な形式であり、それを使用するには、最も単純なものでさえコンパイルするためにそれを構築する必要があります。コンパイラーを調整したり、ゼロから作成したりしない限り。HotSpotは基本的に、ソースコードをC ++コードに変換し、それをネイティブコードにコンパイルするための方法で、用語jitがコンパイルされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.