ホームページ > Java > &#&チュートリアル > Java実行プロセスの理解:コードから実行まで

Java実行プロセスの理解:コードから実行まで

Patricia Arquette
リリース: 2025-01-30 12:04:10
オリジナル
115 人が閲覧しました

Understanding the Java Execution Process: From Code to Execution

Javaは、プラットフォームの独立性と効率的な実行で広く知られています。この記事では、人間の読み取り可能なコードの作成から、さまざまなプラットフォームでの実行まで、Java実行プロセス全体をご覧ください。 JDK、JVM、およびJREの役割と、Javaプログラムのコンパイルと実行に伴う手順について説明します。

1.キーJavaコンポーネント

実行プロセスに飛び込む前に、Javaの3つのコアコンポーネントを理解することが不可欠です。

  • jdk(Java開発キット)

    JDKは本格的なソフトウェア開発キットで、Javaプログラムを書き、コンパイルし、実行できます。
      JVM(Java Virtual Machine)とJRE(Java Runtime Environment)、およびコンパイラ(Javac)などの開発に不可欠なツールが含まれています。
    • jdkは、開発者がコードを作成およびコンパイルするために使用されます。コードは後にJVMによって実行されます。
    • jvm(java仮想マシン)
  • JVMは、Java Bytecodeを実行するエンジンです。基礎となるハードウェアとオペレーティングシステムを抽象化することにより、Javaプラットフォームに独立しています。 JavaプログラムはByteCodeにコンパイルされ、JVMが解釈および実行するため、JVMを使用して同じJavaプログラムを任意のマシンで実行できます。

    • JRE(Javaランタイム環境) JREは、JVMを含むJavaプログラムを実行するために必要なライブラリとリソースを提供します。
  • 文字列や配列などのコアクラスが含まれています。これは、Javaプログラムに依存する可能性があります。
JREにはコンパイラなどの開発ツールが含まれておらず、Javaアプリケーションの実行に適していますが、開発には適していません。
  • 2。Java実行プロセス

    • ステップ1:コードを書きます
    • Javaコードを作成することから始めます。これは、通常.javaファイルに保存されます。このコードは人間が読みやすく、Java構文に従います
  • ステップ2:コードをコンパイル
    • コードの準備ができたら、Javacコンパイラを使用して、人間の読み取り可能な.javaコードをbytecode(.classファイルに保存)に変換します。>

      bytecodeはバイナリ形式であり、すべてのオペレーティングシステムで同じです。このバイトコードは、JVMを持つ任意のプラットフォームで実行でき、プラットフォームの独立性を確保できます。
    • ステップ3:jvm
    • でbytecodeを実行します

      • 3.1 bytecodeのロード
      • Javaプログラムを実行しようとすると、JVMはbytecode(つまり、.classファイル)をメモリにロードします。
      • クラスローダーは、ユーザーが提供するクラス名に基づいてクラスを見つけてロードする責任があります。
      • クラスが見つからない場合、classNotFoundExceptionがスローされます。
      • クラスが見つかった場合、JVMはそれをメモリにロードします。クラスの静的メソッド、変数、およびデータは、JVMメモリの特別な部分であるメソッド領域に保存されます。
      • 3.2 bytecodeの実行
      • クラスがロードされたら、JVMは実行を開始するためにMain()メソッド(プログラムのエントリポイント)を探します。 メイン()メソッドが見つかった場合、実行プロセスが開始されます。
      • 3。実行メカニズム
      • jvmがbytecodeを実行するために使用する2つの主要なアプローチがあります。インタープリターとジャストインタイム(JIT)コンパイラ。

    通訳(遅い)

      通訳アプローチでは、JVMはラインごとにバイトコードを読み取り、実行します。
    • メソッドが呼び出されるたびに、JVMはバイトコードを再インタープレートします。これは、同じメソッドが複数回再実行される可能性があるため、遅くなる可能性があります。

      • jit(just-in-time)コンパイラ(より速い)
      JITコンパイラは、プログラムが実行されているプラ​​ットフォームとマシンに固有のネイティブマシンコードにByteCodeをコンパイルします。
    • ホットスポットと呼ばれる手法を使用してパフォーマンスを最適化します。
    • ホットスポットは、コードの部分(メソッドなど)の頻繁に使用されます。これらはJITコンパイラによって識別され、毎回それらを解釈する代わりに、JITはそれらをネイティブマシンコードにコンパイルします。

      コンパイルされたマシンコードがキャッシュされているため、同じ方法が再度必要な場合、JVMはキャッシュされたマシンコードを使用して実行できます。

      ホットスポット
      • ホットスポットテクニックにより、JVMはクラス全体ではなく、頻繁に使用されるメソッドのみをコンパイルすることが保証されます。これにより、長期にわたるアプリケーションのパフォーマンスが大幅に改善されます。
      • jvmは、毎回bytecodeを解釈する代わりに、これらのホットスポットを実行するためにマシンコードを使用します。
      4。JVMメモリ領域

      JVMは、実行中にプログラムのさまざまな部分にメモリを割り当てます。いくつかの重要な領域には次のものがあります:
        • メソッド領域:クラス、方法、および静的変数に関する情報を保持します。
        • ヒープ領域:ランタイム中に作成されたオブジェクトを保存します。
        • スタック領域:ローカル変数とメソッド呼び出しを保存します。
        • プログラムカウンター(PC):実行中の現在の命令を指すレジスタ。
    • 5。実行フローの概要

      writeコード:
    • javaコードは.javaファイルで記述されています。
    • コンパイル:
    • コードは、javacコンパイラによってbytecode(.classファイル)にコンパイルされます。 ロードbytecode:
    • jvmは、クラスローダーを使用して、bytecodeをメモリにロードします。
    • エントリポイントを見つける:JVMは、実行を開始するためのMain()メソッドを探します。
    • インタープリターまたはJIT経由の実行:
    • interpreter:
    • bytecode line by Line(遅い)を実行します jitコンパイラ:
        ホットスポットをネイティブマシンコードにコンパイルして、実行するために(より速く)。
      • ByteCode、JVM、およびJITコンパイラの組み合わせにより、Javaはプラットフォームに依存して効率的であることが保証されます。実行フローは、インタープリットを使用して、パフォーマンスの最適化にはJITコンパイラを使用して、Javaプログラムがさまざまなプラットフォームで効率的に実行できるようにします。
      • 要約: JVMは、Javaコードがポータブルで効率的であることを保証する上で重要な役割を果たします。最初にバイトコードをロードし、次に通訳(遅い)またはJITコンパイラ(より速い)のいずれかを介して実行します。 JITとホットスポットを使用することにより、JVMは異なるプラットフォームで同じバイトコードを実行する機能を維持しながら、パフォーマンスを最適化します。

    以上がJava実行プロセスの理解:コードから実行までの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:dev.to
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート