JVM は言語に依存しません。ただし、その言語は JVM バイトコードです。仮想マシンの組み立てを検討すると、JVM が何を実行するかがよくわかります。JVM バイトコードは、Java プログラムの実行を容易にするために選択されましたが、「完全な」アセンブリと同様に、他の多くの用途に使用できます。重要なのは、コンパイル プロセスで何が行われているかです。
その他の言語障壁には、JVM がスタック ベースのマシンであるという設計が含まれます。これは、明示的なアドレスがバイトコード レイヤーの JVM にとって無意味であることを意味します。「ロード」または「ストア」操作はありません。しかし、それでも JVM でアドレス指定を行う言語を実装したいという人々を止めるものではありません。アドレッシングをしたい人にとっては、それが難しくなるだけです。
JVM でアドレス指定を行うには、基本的にシミュレーターを作成します。「オブジェクトハンドルへのアドレス」ルックアップテーブルを含むオブジェクトがあります。これにより、アドレス指定のない仮想マシンでシミュレーションを介して基本的なアドレス指定を行うことができます。それは常に美しいとは限らず、シミュレーションの品質は通常、シミュレートされた言語が許可するユース ケースにのみ拡張されます。
はい、物理メモリアドレスへの(JVM内部の)Javaヒープ参照へのAddress(オブジェクト)からMap(Javaヒープ参照へのオブジェクトの)を行うと、パフォーマンスが少し低下します。しかし、プラットフォームにとらわれないようにするためには、これを行う必要があります。メモリに直接アクセスできる場合、最終的には、仮想マシンのコーディングではなく、さまざまなハードウェア プラットフォームのコーディングに追われることになります。少なくとも、最近よりもはるかに早く、プラットフォーム固有のコードにプッシュされるでしょう。