JVM (Java Virtual Machine)


n/a.ターゲット


Javaソースファイル(.java)をJVMとして実行する手順について説明します.

目次

  • JVM
  • とは
  • コンパイル方法
  • を実行する方法
  • バイトコード
  • とは
  • JITコンパイラとは、
  • JVMコンポーネント
  • JDKとJREの差
  • 1.JVMとは?

  • Javaプログラムを実行できる仮想マシン.
  • WORA(1回の書き込み、1回の実行):Javaバージョンの前に、Windows、Linux、Macなどの特定のオペレーティングシステムに対してプログラミングを行う必要がある不便さ.JVMでは、オペレーティングシステムを考慮せずにJavaプログラムを実行できます.

  • ソース:https://www.infoworld.com/article/3272244/what-is-the-jvm-introducing-the-java-virtual-machine.html

    2.コンパイル方法

  • Java JDKをインストールするパスで、binを表示するとjavacというコンパイラが表示されます.
  • C:プログラムファイルJavajdk-11bin(マイPCパス)

  • 編集として、以下の簡単なjavaソースコードを作成します.
    javac Hello.java
    ターミナルでこんにちはJavaがパスに移動した後に入力した場合:
    ただし、javacコマンドをすぐに使用するには、jdk binパスを環境変数に登録する必要があります.
    コンパイルが完了したら、Hello.classという名前のファイルが生成されたことを確認できます.

    3.実行方法

    java Hello

    次の操作が実行されます.

    4.バイトコードは何ですか。

  • バイトコードは、JVMが実行できるバイナリコードである.
  • ビットからHelloへJavaファイルをコンパイルするとき、Hello.classという名前のファイル生成が表示されました.このファイルはバイトコードで書かれたclassファイルです.
  • このバイトコードファイルは、オペレーティングシステムの影響を受けることなく、各オペレーティングシステムにJVMをインストールできます.
  • JITコンパイラは何ですか。どうやって操作しますか。

  • JITコンパイラとは、javaバイトコードを実行時に直ちに機械言語に変換するコンパイラのこと.
  • JITコンパイラは、実行時にバイトコードをネイティブ言語として一度コンパイルして使用します.
  • コンパイル後にキャッシュを行い、その後変更された部分のみコンパイルし、残りの部分は直接キャッシュから取得して実行します.
  • これらの特徴により、Interpreter方式よりも高速になります.
  • 6.JVMコンポーネント



    ソース:https://www.geeksforgeeks.org/jvm-works-jvm-architecture/
  • Class Loader : *.classファイルを作成し、オペレーティングシステムから割り当てられたメモリ領域にJVMをロードします.
  • JVM Memory
  • メソッド領域:すべてのクラス情報と静的変数を含む.
  • Heap:newキーワード生成のオブジェクト、配列を格納する領域は、gcのオブジェクトとなる.
  • Stack:領域変数、パラメータなどの演算のための一時値を格納する領域.メソッドを呼び出すと、単一のスタックが生成されます.
  • PC登録者:ねじが生成されるたびに生成される領域.各スレッドのPCを格納します.
  • Native Method Stacks:Java以外の言語で作成されたネイティブメソッドをサポートするスタック
  • 7.JDKとJREの違いは?

  • JDK:Java開発ツールとしてJDKをインストールする場合、JREも一緒にインストールします.
  • JRE:Java実行環境を使用してJava言語で作成されたプログラムを実行するために必要です.
  • リファレンス

  • ジャワの晶石(南宮星)
  • https://www.infoworld.com/article/3272244/what-is-the-jvm-introducing-the-java-virtual-machine.html
  • https://www.geeksforgeeks.org/jvm-works-jvm-architecture/