JDK、JRE、JVMの関係


http://www.cjsdn.net/post/view?bid=1&id=9965&sty=1&tpg=1&age=0
 
JDKをインストールすれば、あなたのパソコンとJREのセットが二つあります.セットは<JDKインストールディレクトリ>>>jreのもう一つのセットはCにあります.01ディレクトリの下のこのセットは前のセットより少ないです.Server端のJava仮想マシンですが、前のセットのServer端Java仮想マシンをそのままコピーすればいいです.また、JDKをインストールすると、これはC:\Program Files\Javaディレクトリの下にあるJREをインストールするかどうかを選択できます.JDKではなくJREのみをインストールすれば、C:\Program Files\Javaディレクトリの下に唯一のJREをインストールします.JREの位置はPCマシンと同じです.Win 32アプリを作成するにはオペレーティングシステムが必要です.同じように、私達が作成したJavaプログラムもJREで実行しなければなりません.JDKをインストールした後、それぞれのハードディスクにJREを2セットずつインストールすれば、仮想Java PCが2台あり、Javaプログラムを実行する機能があると想像できます.ですから、あなたのパソコンにJREがインストールされていれば、Javaアプリを正しく実行することができます.1、なぜSunはJDKに同じJREを2セット設置するのですか?これはJDKの中にJavaで作成された開発ツール(javac.exe、jar.exeなど)がたくさんあります.しかも、すべて<JDKインストールディレクトリ><lib>tools.jarに置いています.以下の例からわかるように、まずtools.jarをtools 1.jarと改名し、javac.exeを実行した結果、Exception in in thread「main」java.lang.NoClass DefFoundErr:com/sun/tools/javac/Mainという意味です.javac.exeと入力します.
java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main
同じです.同じ結果が得られます.ここからjavac.exeは一つの包装器であることを証明できます.開発者があまりにも長い入力を避けるために作ったのです.そして、「JDKインストールディレクトリ」「libディレクトリ」のプログラムは全部小さくて、29 K以上ではないことが分かります.ここから結論を出すことができます.JDKではほとんどJavaで作成されていますので、Javaアプリケーションでもあります.JDKに添付されているツールを使ってJavaプログラムを開発するには、自分でJREを添付しなければならないので、C:\Program Files\Javaディレクトリの下にあるJREは通常のJavaプログラムを実行するためのものです.2、もし1台のパソコンに2セット以上のJREをインストールしたら、誰が決めますか?この重大な任務はjava.exeにある.Java.exeの仕事は適切なJREを見つけてJavaプログラムを実行することです.Java.exeは以下の順序でJREを調べます.自分のディレクトリにJREがありますか?父カタログにはJREがありますか?レジストリの照会:[HKEYuLOCALuMACHINE]SOFTWARE\JavaSoft\Java Runtime Evironment]ですので、java.exeの運転結果はあなたのコンピュータの中でどのJREが実行されているかと大きく関係しています.3、JVMJREディレクトリを紹介するBinディレクトリは二つのディレクトリがあります.serverとclient.これは本当のjvm.dllのところです.jvm.dllは単独で仕事ができません.jvm.dllが起動すると、explicitの方法(Win 32 APIの中のLoadLibrary()とGetProcAddres()は補助用の動的リンクライブラリにロードされます.これらの補助用の動的リンクライブラリ(.dll)はすべてjvm.dllディレクトリの親ディレクトリの中にあります.どのJVMを使いたいのかは、PATHを設置し、JREのあるディレクトリの下にあるjvm.dllを指すだけです.jdkは、javaの開発ツールです.jre、javaのために運行環境を提供します.