Java本を読んでいるときに、私はこのフレーズに出くわしました:
異なるJVMは、まったく異なる方法でスレッドを実行できます。
基になるJVM実装によってコードの動作が異なることは完全に理解できますが、問題が生じます。
そもそもなぜJVMの複数の異なる実装があるのですか?
開発者として、Oracleが提供する公式のJVM実装に不満を感じて、別のJVMを構築することにしたのはなぜですか。
開発者として、Oracleが提供する公式のJVM実装に不満を感じて、別の実装を構築することにしたのはなぜですか?
どれ? Oracleには、少なくとも3つの異なる公式のJVM実装があります。
JVM実装を開発する理由はいくつかあります。
JVMは抽象概念です。これは、Java言語が「どこでも」仕様互換のランタイムエンジンの存在に依存することにより、プラットフォームに依存しないようにするために特別に設計されたソフトウェアレイヤーです。
しかし... 1つのサイズですべてに対応できるわけではありません。 Javaパワー不足の(しかし安価な)Androidスタイルの携帯電話などの非常に小さな環境に「くさび」で入れようとしている場合は、非常に多くの「コードを焼く」必要があるかもしれません。オフィシャルオラクル™が必要と判断したよりも、まだ存在しなかったJVM実装を開発する必要があるかもしれません。
したがって、JVMが多数存在するのはそのためです。 Theyはアーキテクチャおよび状況に固有であるため、Javaは必須ではありません。