私は勉強します-第1週の課題


勉強したい-9ページ
画像-drawを作成します。io

第1週の課題:JVMとは何か、javaコードをどのように実行するか。


JVMとは


JVMはJava仮想マシンの略で、Javaプログラムは完全なマシン言語ではなくバイトコードなので、バイトコードを解釈して実行する仮想オペレーティングシステムが必要です.これはJVMで、各オペレーティングシステムを単独で開発するJavaプログラムと比較して、Javaプログラムを複数のオペレーティングシステム上で同じ結果を実行するために、オペレーティングシステムとJavaプログラムを中継するJVMを一緒に配置するように設計されています.そのため,開発者はオペレーティングシステムに関係のないJavaプログラムを開発することができる.
	이미지1. 자바 프로그램 실행 단계

コンパイル方法


コンパイルとは、ある言語のコードを別の言語に変換するプロセスであり、Javaでは、「画像1」に示すように、コンパイラの役割はソースファイル(.java)をバイトコード(.class)に変換することである.
                   <Hello.java>
                   public class Hello {
                       public static void main(String[] args) {
                           System.out.println("Hello World!");
                       }
                   }
JAvaコードhello.Javaをコンパイルおよび実行する方法は、次のとおりです.

実行方法


	이미지2. Bash shell에서 자바 코드 컴파일 및 실횅
	
	이미지3. 윈도우의 명령 프롬프트에서 자바 코드 컴파일 및 실행
                    
イメージ2.3から見る『javac hello』Java」でコンパイルするとjavaです.クラスバイトコードを生成し、「java hello」として「hello world!」と実行します.出力が確認できるのは.

バイトコードとは


バイトコードとは、人間(プログラマー)が作成したソースコードを仮想マシンが理解できる中間コードにコンパイルすることである.△ウィキペディアでは、これはバイナリ表現だと説明しています.
イメージ2 3のハローclassはバイトコードと呼ぶことができる.

JITコンパイラは何ですか。どのように動作していますか。


JITはJust In Timeの略で、JITコンパイラは実行時(実際に実行)にキャッシュしてマシン言語のコードに変換するため、再利用時に再コンパイルする必要がなく、JVM内部の最適化によりJITコンパイラの性能を向上させる.
	이미지4. 컴파일 타임과 런타임에 동작하는 자바 프로그램 동작 과정
                

JVMコンポーネント

  • Class Loader
    Javaファイルをjavacにコンパイルするとバイトコードが生成され、コンパイル時ではなく実行時にメモリにアップロードして実行される部分がClass Loaderになります.クラスローダの実行順序は下図のように、大きく分けてLoad->Link->Initializeの3つのステップに分けられ、リンクのプロセスを3つのステップ(Verify->Prepare->Resolution)に細分化し、合計5つのステップに分けられます.
  • 			이미지5. 클래스 로더 세부 실행 단계

  • Execution Engine
    Execution Engineはclass loaderによって配備されたクラスを解析して実行し、割り込みとJITで実行します.

  • Runtime Data Area
    Runtime Data Areaは、JVMがプログラムを実行するためにオペレーティングシステムから割り当てられたメモリ領域である.
    以下に示すように、5つの領域に分けられます.
  • Method Area
  • Heap
  • JVM Stacks
  • PC Registers
  • Native Method Stacks

  • Garbage Collector
    Garbage CollectorはGCと略称し、割り当てられたメモリ領域で使用できない領域を動的に検出して解除する機能です.このため,Javaプログラムを開発する際,開発者は動的に割り当てられたメモリの解放をGC処理に任せることができ,開発に集中できる.
  • 			이미지6. JVM 구조
                
           

    JDKとJREの違い

  • JDK
    JDKはJava開発キットの略で、JDKには開発プログラムに必要なJVM、ライブラリAPI、コンパイラなどの開発ツールが含まれています.
  • JRE
    JREはJavaランタイム環境の略で、JREにはプログラムを実行するために必要なJVMとライブラリAPIが含まれています.
  • Javaプログラムを開発せず、開発したプログラムのみを実行したい場合は、JREのみをインストールしてもかまいません.
    			이미지7. JDK & JRE 포함 관계
    	

    References


    これがジャワ(神龍ロールケーキ、単色メディア)
    バイトコード-ツリーウィキ
    バイトコード-ウィキペディア
    JITコンパイル-ウィキペディア
    JVMコンポーネント
    JVMコンポーネント2