Javaの動的ロード


1.Java言語をよく使うメリット


ソースによると、Java言語のメリットは主に次のとおりです.
  • オペレーティングシステム
  • とは独立
  • オブジェクト向け言語
  • 自動メモリ管理
  • オープンソース
  • マルチスレッド
  • の実装が容易である.
  • ダイナミックロード
  • をサポート
    本稿では、その動的ロードについてまとめます.

    2.クラスローダ


    動的ロードを理解するには、まずJVMの構造およびクラス・ロード・プログラムを理解し、スキップする必要があります.

    ソース:Wikipedia-Java仮想マシン
    前述のように、JVMはクラスローダを介してJavaコンパイラによって生成されたバイトコード(.class)をロードする.
  • クラスローダは、バイトコードから実際のオブジェクトを作成します.上記の図に示すように、インスタンスをメモリにアップロードするのがクラスローダ
  • である.

    3.動的ロード


    参照先:
    Jabacanのブログ-クラスローダ1、動的クラスローダ、クラスローダ
    suji 95のブログ-JVM動的クラスロード

    1ロード時の動的ロード

    public class Main {
    	public static void main(String[] args) {
        	System.out.println("hello world");
        }
    }
    Mainクラスを上で実行すると、クラス・ローダは次の操作(コンパイル後の時点)を行います.
    検索
  • オブジェクトクラス(オブジェクトクラスはすべてのクラスが継承するため)
  • Main.classファイル
  • を読み込む
  • Main.classファイルをロードするために必要なjava.lang.String, java.lang.システムクラス
  • にロード
    こちらjavalang.String, java.lang.systemは、Mainクラスのロード時にロード時間に動的にロードされます.

    2運転時動的ロード


    前にインタフェースの多形性について書いた文章の内容を書きます.
    interface AnimalIntegerface {
    	void sound();
    }
    //
    public listenAnimalSound(AnimalInterface i) {
    	i.sound(); 
    }
  • javaのインタフェースの多様性は、プログラマが部分的なプログラミング
  • を宣言し、実施することを可能にする.
    上記の
  • では、listenAnimalSound()で変数として入力されるインタフェース(実際には、AnimalInterfaceを実装するクラスのみが変数として入力できる)は、メソッドが実行されるまでどのクラスが含まれるか分からない.
  • 、つまりロード時間
  • にロードできない.
  • メソッドの実行時に動的に実行時にロードされます!
  • 3.長所と短所


    長所

  • コンパイル時にすべてのクラスの情報を読み込む必要はなく(実際には読み込めない)、実行時までにメモリの浪費を回避できます.

    短所

  • ランタイムエラーランタイムがわかるまで(以前はキャプチャできなかった)
  • 動的ロードは、プログラムのパフォーマンスを低下させる可能性があります.