■ Java クラスローダ

・クラスローダは、クラスファイルをJVMに読み込んで、クラスクラスのオブジェクトを生成する

・クラスローダにはSecureClassLoader、URLClassLoaderなどがある
  詳細はJavaAPI参照

・クラスローダもクラスなので、実行時にnewすることができる
  したがってクラスローダには、生成された順番による階層が存在する
  注、これはクラスの継承関係ではない

・クラスクラスのオブジェクトは自分を生成したクラスローダを知っている

・まだクラスクラスのオブジェクトが生成されていないクラスのオブジェクトがnewされるときの動作は次の通り
       file:クラスローダの動作.pdf

  ・newを実行するオブジェクト(new xxx()と記述してあるクラス)は、自分のクラスクラスのオブジェクトにnewを依頼する
  ・当該クラスクラスのオブジェクトは、自分を生成したクラスローダにオブジェクトのnewを依頼する
  ・クラスローダは、クラスローダの生成の階層の上位に位置するクラスローダにオブジェクトのnewを依頼する
  ・このようにして最上位のクラスローダに依頼が届く
  ・最上位のクラスローダは、自分がローディングする担当する範囲に依頼されたクラスのクラスファイルがあれば、ローディングを行いオブジェクトをnewする
  ・自分の担当範囲でなければ、下位のクラスローダに依頼する
  ・クラスファイルが見つからない場合は、最初のクラスローダまで戻ってくる
  ・最初のクラスローダの担当範囲にクラスファイルがなければClassNotFountExceptioinが発生する

・JavaコマンドでJVMを起動した場合、次のクラスローダが生成されている
  ・Java標準ライブラリのクラス用
  ・jre/lib/extのjarファイルのクラス用
  ・クラスパスにあるファイルのクラス用


イメージ 1


//---------------------------------------------------
//・目次 Javaエトセトラ
//  http://blogs.yahoo.co.jp/artery2020/40576157.html
//・目次 - Java入門
//  http://blogs.yahoo.co.jp/artery2020/39975776.html
//・目次 - ビジネスパーソンの常識と非常識
//  http://blogs.yahoo.co.jp/artery2020/39728331.html
//・目次 - 論理・発想・思考についての考察と鍛え方
//  http://blogs.yahoo.co.jp/artery2020/39657784.html
//---------------------------------------------------