1. ホーム
  2. java

[解決済み] JVMはコンパイラなのかインタープリタなのか?

2023-05-03 12:12:37

質問

JVMはコンパイラなのかインタープリタなのか?

もしインタープリタであるなら、JVMの中に存在するJITコンパイラはどうなのでしょうか?

もしどちらでもないのなら、JVMとはいったい何なのでしょうか? (バイトコードを機械固有のコードに変換するなどのjVMの基本的な定義は必要ありません)。

どのように解決するのですか?

まず、次の用語について理解しましょう。

Javac はJavaコンパイラで、あなたのJavaコードを バイトコード

JVM は Java Virtual Machine -- バイトコードを実行/解釈/変換して ネイティブなマシンコード

JIT は Just In Time Compiler -- 与えられたバイトコードの命令列を ランタイム で機械語にコンパイルし、ネイティブに実行する。主な目的は、パフォーマンスの最適化を行うことである。

では、あなたの疑問に対する答えを見つけましょう。

1) JVM: is it a compiler or an interpreter? -- Ans: インタープリタ

2) what about JIT compiler that exist inside the JVM? -- Ans: この返信を完全に読んだのであれば、おそらくもうお分かりでしょう。

3) what exactly is the JVM? -- Ans:

  • JVM は、RAM 上に存在する仮想プラットフォームです。
  • その構成要素である クラスローダー .class ファイルをRAMにロードします。
  • バイトコードベリファイア コンポーネントは、あなたのコードにアクセス制限違反があるかどうかをチェックします。(これはjavaが安全である主要な理由の1つです。)
  • 次に 実行エンジン コンポーネントはバイトコードを実行可能なマシンコードに変換します。

これがあなたの助けになることを願って...