: Javaで「バイトコード」と呼ばれるそれはあなたのオリジナルの説明には何かということですが、「実行可能な機械語(バイナリ)を作成します」
だから、Javaの実行方法への答えbytecode is: 通常のx86コードを実行する場合は、それを処理するためにCPUを構築するのと同じ方法で、Javaバイトコードを処理できるプロセッサを構築します。
Javasバイナリマシン言語は、x86やpowerpcなどの他のcpusのバイナリ命令フォーマットと実際には違いはありません。そして、javaバイトコードを直接実行できるcpusが存在します。 (これは通常のIntel/AmdのCPUになります)。
他の例:通常のIntel CPU上でpowerpcコードをどのように実行しますか?実行時にpowerpcバイナリコードをx86コードに変換するソフトウェアをビルドします。 Javaの場合はそれほど違いはありません。したがって、x86のCPU上でJavaコードを実行するには、javaバイナリコード(別名バイトコード)をx86バイナリコードに変換するプログラムが必要です。これがjvm *の動作です。また、Java命令を一度に1つずつ解釈するか、一度に大量の命令を変換することによって(コールされたジット)、これを行います。 jvmがどのように変換を処理するかは、使用するjvm実装とその設定に依存します(さまざまな方法で翻訳を実装するjava jvmsの複数の独立した実装があります)。
しかし、Javaを少し違うものにするものがあります。 x86のような他のバイナリ命令フォーマットとは異なり、javaは実際にはCPU上で直接実行するように設計された新しいものでした。バイナリ形式は、x86やpowerpcなどの「通常の」CPU用のバイナリコードに簡単に変換できるように設計されています。
*実際には、jvmはjavaバイナリコードをプロセッサ依存コードに変換するだけです。また、Javaプログラムのメモリー割り振りを処理し、Javaプログラムとユーザー操作システム間の通信を処理します。これは、ユーザー操作システムとプラットフォームの詳細から独立したJavaプログラムを作成するために行われます。
http://en.wikipedia.org/wiki/Java_bytecode – galchen
JVMは、バイトコードを解釈して実行し、および/またはプロセッサハードウェアによる直接実行のためにバイトコードを機械語にコンパイルします。 –
異なる言語... Javaは仮想マシンで実行されますが、C++で開発されたネイティブアプリケーションはバイナリにコンパイルされ、実際のマシンで実行されます。 – 0909EM