Javaインタープリターをハードウェアに実装する場合、Javaバイトコードのアーキテクチャーの中立性をどのように実現できますか... JavaはJIT(ジャストインタイムインタープリター)を使用しますか?そして、これらすべてがオペレーティングシステムとJava仮想マシン(JVM)の仮想マシンの概念にどのように関連しているか
4 に答える
Javaシステムにはすでにいくつかのハードウェア実装(つまり、バイトコードを実行できるCPU)がありますが、それらは主流にはなりませんでした。これは、CPUがどんどん速くなっているのと同じくらい、またはそれ以上にソフトウェア実装のパフォーマンスが向上しているためと考えられます。
より徹底的に調査するとわかるように、JVM実装の詳細はそれほど重要ではありませんが(かなり異なります)、すべてJVMの機械語(Javaバイトコード)を実行します。Javaの世界にとどまり、「ネイティブ」なものにリンクしない場合は、選択した実装に問題がないはずです。
この会社は、Javaプログラム用に調整されたサーバーシステムを提供することで生計を立てています。興味があるかもしれません:http ://www.azulsystems.com/
はい、いくつかのハードウェアJava実装があります。ただし、より汎用的なシリコンで実行されるソフトウェアよりも常に優れたパフォーマンスを発揮するとは限りません。
Mark Lamは、このテーマに関するいくつかの興味深いブログエントリを書いています。
はい、できます。これは仕様段階でスタックしている(または放棄されている)ように見えますが、picoJavaではJavaバイトコードのネイティブ実行が可能です。picoJavaには、FPGAで使用可能なポートがあります。ARMプロセッサ用のJazelleもあります。
ハードウェアがバイトコードを直接実行することを考えると、すべての最適化もハードウェアで実行する必要があります。プロセッサはバイトコードを直接実行するため、JITは必要ありません。結局のところ、ハードウェアの実装には、Java仮想マシン仕様で定義されているJVMモデルの実装が含まれます。実行できる最適化は、ハードウェア最適化のライン上にあります-命令パイプライン、キャッシュの使用など。
ハードウェア実装で実行されているバイトコードはソフトウェア実装でも引き続き機能するため、ハードウェアの中立性は失われません。これは、Javaをハードウェアに依存しないようにするバイトコード標準です。
- ハードウェアにJVMを実装すると、マネージコードを実行する利点が無視されます。その場合、他のネイティブコードとはどのように異なりますか。そして、はい、プラットフォームの中立性も妨げられています。とにかく、そのような実装があります。aJileシリーズのプロセッサとARMのJazelleをチェックしてください。ただし、これらは組み込みプラットフォームを対象としています。
- SunのコンパイラであるHotSpotはJITを使用します。私は個人的に他の人を使ったことがありませんが、それは非常に使われている技術であるはずです。
- JVMは、1つの特定のプラットフォーム(Javaバイトコード)のみを対象とする、限られたリソースのVMと考えることができます。