【回転】JDK,JRE,JVMの関係

1929 ワード

JDKがインストールされている場合は、あなたのパソコンとJREが2セット、C:Program FilesJavaj 2 re 1セットが送信されます.4.1_01ディレクトリの下で、後ろのこのセットは前のセットよりサーバー側のJava仮想機が少ないが、前のセットのサーバー側のJava仮想機を直接コピーすればいい.また、インストールJDKでは、C:Program FilesJavaディレクトリの下にあるJREをインストールするかどうかを選択できます.JDKではなくJREのみをインストールする場合は、C:Program FilesJavaディレクトリの下に唯一のJREがインストールされます. 
JREの地位はPC機のように、私たちが書いたWin 32アプリケーションはオペレーティングシステムで実行する必要があります.同じように、私たちが書いたJavaプログラムもJREで実行しなければなりません.JDKをインストールした後、ハードディスク上の2つの異なる場所にJREを2セットインストールした場合、あなたのパソコンには仮想Java PCが2台あり、Javaプログラムを実行する機能があることを想像することができます.だから、あなたのパソコンがJREをインストールすれば、Javaアプリケーションを正しく実行できると言えます.
     
1、なぜSunはJDKに同じJREを2セット取り付けるのですか?
これはJDKにJavaで作成された開発ツール(javac.exe、jar.exeなど)が多く、libtools.jarに配置されているためです.次の例から、tools.jarをtools 1.jarに名前を変更し、javac.exeを実行すると、次の結果が表示されます.
 Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main 

javacを入力してexeと入力
 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main

結果は同じで、同じ結果が得られます.ここからjavacを証明することができます.exeはただの包装器です(Wrapper)は、開発者があまりにも長い指示を入力しないようにすることを目的としています.また、libディレクトリの下のプログラムはすべて小さく、29 K以下であることがわかります.ここから、JDKの中のツールはほとんどJavaで書かれているので、Javaアプリケーションでもあるので、JDKに添付されたツールを使ってJavaプログラムを開発するには、自分でセットを付けなければならないという結論が得られますJREのみなので、C:Program FilesJavaディレクトリの下にあるJREは、一般的なJavaプログラムを実行するために使用されます. 
     
2、もし1台のパソコンに2セット以上のJREをインストールしたら、誰が決めますか?
この重大な任務はjavaにある.exeに.Java.exeの仕事はJavaプログラムを実行するために適切なJREを見つけることです.Java.exeは以下の順序でJREを検索します:自分のディレクトリの下にJREがありますか;親ディレクトリにJREがありますか.クエリーレジストリ:[HKEY_LOCAL_MACHINESOFTWAREJavaSoftJava Runtime Environment]だからjava.exeの実行結果は、あなたのパソコンでどのJREが実行されるかと大きく関係しています. 
   
3、JVM JREディレクトリを紹介するBinディレクトリには、serverとclientの2つのディレクトリがあります.
これが本当のjvmです.dllがあります.jvm.dllはjvmで単独で作業できません.dllが起動すると、Win 32 APIのLoadLibrary()とGetProcAddress()を使用してアシスト用のダイナミックリンクライブラリをロードするexplicitメソッドが使用されますが、これらのアシスト用のダイナミックリンクライブラリ(.dll)はjvm.dllが存在するディレクトリの親ディレクトリに存在する必要があります.