18

JVM 実装の違いはどこですか (ライセンスを除く)? すべての JVM は Generic 処理のために Type Erasure を実装していますか?

次の違いはどこにありますか。

  • JRockit
  • IBM JVM
  • SUN JVM
  • JDKを開く
  • ブラックダウン
  • カフェ

..... それらの 1 つに Tail-Call-Optimization を適用しますか?

4

8 に答える 8

18

JVM の実装は、JIT コンパイル、最適化、ガベージ コレクション、サポートされているプラ​​ットフォーム、サポートされている Java のバージョンなどを実装する方法が異なる場合があります。Java バイトコードを正しく実行するには、すべての実装が一連の機能と動作を満たしている必要があります。

ご指摘のとおり、主な違いはライセンスにある傾向があります。その他の非技術的な違いは、無料/有料のサポート オプション、他のテクノロジ (通常は J2EE サーバー) との統合、およびソース コードへのアクセスにある傾向があります。

注: J2EE サーバーは JVM 上で実行されますが、一部のサーバーには、JVM のパフォーマンスを監視、分析、調整するためのツールが統合されています。

技術的な違いに関する限り、それらは何年にもわたってそれほど重要ではありません。むかしむかし、IBM と JRockit の JVM は、リファレンスの Sun 実装よりもはるかに優れたパフォーマンスを発揮していました。これは、実行時の最適化の種類、ガベージ コレクションの違い、およびネイティブ コードの違い (およびさまざまなクラスが使用するネイティブ コードの量) の大きな違いによるものです。これらのパフォーマンスの違いは、もはやそれほど重要ではありません。

一部の JVM には、診断および監視ツールが含まれているか、それらと統合されています。JRockit には、JVM パフォーマンスを監視するための一連のツールが含まれています。Sun は、同じことを行うために重複する機能を備えたさまざまな JMX ベースのツールを提供しています。むかし、IBM Websphere には、J2EE アプリケーション サーバー全体用の同様のツール セットが含まれていました (まだ含まれているかどうかはわかりませんが、今でもそうであると思います)...

一部のオープン ソース JVM は、ゼロから再開発されているため、パフォーマンスが少し遅くなる傾向があります。そのため、彼らはもう少し追いつく必要があります。約 2 年前に最後に確認したところ、Blackdown は Sun JVM よりも大幅に遅かった (1.5 倍から 2 倍?)。また、サポートされている Java のバージョンよりも少し遅れていました。

于 2009-04-14T14:24:44.870 に答える
12

型消去はコンパイラ関数であり、JVM に依存しません。

于 2009-04-14T12:48:45.913 に答える
1

JVM は、クラスとバイトコードバリファイアをロードし、コードを実行する仮想マシンのようなものです。Applocaion Programming Interface はパッケージのコレクションです。パッケージはクラスのコレクションです。Java プログラムは、JVM がインストールされ動作する場所で実行されます。

于 2010-05-14T10:53:05.367 に答える
1

JIT コンパイルは、一部の JVM にない機能の 1 つです。

于 2009-04-14T12:50:17.907 に答える
1

型の消去などは、古い JVM との下位互換性を保つためにコンパイラによって行われます。ほとんどの JVM は必要なすべての機能をサポートする必要がありますが、一部の JVM は他の機能よりも最適化されている場合があります。Sun JVM がおそらく最速だと思います。

于 2009-04-14T12:51:53.533 に答える
1

JVM が Java であると主張する場合、多くのストック機能を提供して、TCK を渡す必要があります。

違いは、ガベージ コレクション、Sun JVM の jconsole/visualvm、プリコンパイルなど、コア以外の場所にあります。


明確化: TCK は、正式に Java に準拠するために仮想マシンが合格する必要があるテスト スイートです。

于 2009-04-14T13:14:10.033 に答える