11

重複の可能性:
Java はコンパイルされたプログラミング言語ですか、それとも解釈されたプログラミング言語ですか?

Java がコンパイル言語とインタープリター言語の両方であるのはなぜですか?

最初に、javac (コンパイル) を使用して Java プログラムをコンパイルし、java (解釈) を使用してプログラムを実行します。その利点は何ですか?

また、JIT の役割はどこに現れますか?

4

3 に答える 3

6

Java コンパイラは通常、ソース コードを中間言語にコンパイルします。これは一般的に「バイト コード」と表現されます。それ自体はネイティブ ハードウェアのマシン コードではありませんが、ある意味では、Java 仮想マシンの「マシン」コードです。

この分離の利点は、(理論的には) 多くの異なるプラットフォームに VM を実装できることですが、それらのすべてが同じコンパイル済み Java バイト コードを実行できるようになります。

ジャストインタイム コンパイラは仮想 VM の一部であり、必要に応じて実際にバイト コードのビットを実際のネイティブ マシン コードに動的に変換します。これは、純粋に VM で Java プログラムを実行すると、同等のネイティブ コードよりもはるかに遅いという観察から生まれました。JIT コンパイルにより、ネイティブにコンパイルされたコードと比較した場合、Java VM はパフォーマンスの点で競争力のあるものになりました。

于 2012-09-05T18:13:24.863 に答える
6

一度コンパイルすればどこでも実行できることが理由の 1 つです。

JVM は OS 固有です。そのため、JVM はコンパイルされた .class (バイト コード) ファイルを解釈し、マシン固有の命令セットに変換します。

于 2012-09-05T18:11:24.403 に答える
2
  1. Javaはバイトコードに「コンパイル」されます
  2. プログラムの実行時にバイトコードが「解釈」される
  3. JIT コンパイラーとバイト コードをネイティブ マシン コードに「プリコンパイル」し、実行時間を最適化

Java JIT の詳細については、次の記事を参照してください。

于 2012-09-05T18:12:49.733 に答える