久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JDK,、JRE,、JVM之間的關系

 iversion 2007-05-16
JDK、JRE,、JVM之間的關系
如果安裝了JDK,,會發(fā)同你的電腦有兩套JRE,
一套位于 <JDK安裝目錄>\jre
另外一套位于 C:\Program Files\Java\j2re1.4.1_01 目錄下
后面這套比前面那套少了Server端的Java虛擬機,,不過直接將前面那套的Server端Java虛擬機復制過來就行了,。而且在安裝JDK可以選擇是否安裝這個位于 C:\Program Files\Java 目錄下的JRE。
如果你只安裝JRE,,而不是JDK,,那么只會在 C:\Program Files\Java 目錄下安裝唯一的一套JRE,。

JRE的地位就象一臺PC機一樣,,我們寫好的Win32應用程序需要操作系統(tǒng)幫我們運行,同樣的,,我們編寫的Java程序也必須要JRE才能運行,。所以當你裝完JDK后,,如果分別在硬盤上的兩個不同地方安裝了兩套JRE,那么你可以想象你的電腦有兩臺虛擬的Java PC機,,都具有運行Java程序的功能,。所以我們可以說,只要你的電腦安裝了JRE,,就可以正確運行Java應用程序,。

1、為什么Sun要讓JDK安裝兩套相同的JRE,?
這是因為JDK里面有很多用Java所編寫的開發(fā)工具(如javac.exe,、jar.exe等),而且都放置在 <JDK安裝目錄>\lib\tools.jar 里,。從下面例子可以看出,,先將tools.jar改名為tools1.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),,而制作的目的是為了讓開發(fā)者免于輸入太長的指命。而且可以發(fā)現(xiàn)<JDK安裝目錄>\lib目錄下的程序都很小,,不大于29K,,從這里我們可以得出一個結論。就是JDK里的工具幾乎是用Java所編寫,,所以也是Java應用程序,,因此要使用JDK所附的工具來開發(fā)Java程序,也必須要自行附一套JRE才行,,所以位于C:\Program Files\Java目錄下的那套JRE就是用來運行一般Java程序用的,。

2、如果一臺電腦安裝兩套以上的JRE,,誰來決定呢,?
這個重大任務就落在java.exe身上。Java.exe的工作就是找到合適的JRE來運行Java程序,。
java.exe依照底下的順序來查找JRE:
自己的目錄下有沒有JRE,;
父目錄有沒有JRE;
查詢注冊表:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]

所以java.exe的運行結果與你的電腦里面哪個JRE被執(zhí)行有很大的關系,。

3,、介紹JVM
JRE目錄下的Bin目錄有兩個目錄:server與client。這就是真正的jvm.dll所在,。
jvm.dll無法單獨工作,,當jvm.dll啟動后,,會使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來載入輔助用的動態(tài)鏈接庫),而這些輔助用的動態(tài)鏈接庫(.dll)都必須位于jvm.dll所在目錄的父目錄之中,。
因此想使用哪個JVM,,只需要設置PATH,指向JRE所在目錄底下的jvm.dll,。


2,、如果一臺電腦安裝兩套以上的JRE,誰來決定呢,?
這個重大任務就落在java.exe身上,。Java.exe的工作就是找到合適的JRE來運行Java程序。
java.exe依照底下的順序來查找JRE:
自己的目錄下有沒有JRE,;
父目錄有沒有JRE,;
查詢注冊表:
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment]
所以java.exe的運行結果與你的電腦里面哪個JRE被執(zhí)行有很大的關系。



1) Not exactly, java executable is part of one JRE on your path. Unless you put java (.exe?? There is no java.exe on unix) somewhere else.

2) Another problem is if you put two imcompatable JREs on your machine, it might cause your ObjectInputStream corrupted.

3) For developer‘s machine, j2sdk without another JRE is the best choice.
Add one more:

Even j2sdk (JDK is the old name) is free, but it is illegal to distribute j2sdk with your product. Therefore if your product required j2sdk to run. Then you must require your client to download it from Sun and install it before instalation of your product. What a headache! Sad

On the opposite, you can distribute JRE with your application freely.

javac is Sun‘s version of java compiler, not a wrapper. Like any other executables, it uses other libraries such as some dll on windows, some shared libraies on Unix. It also uses some jar files came with it. That is just how it is, and how it works.

It is quite normal, Isn‘t it?

javachina wrote:
1) Not exactly, java executable is part of one JRE on your path. Unless you put java (.exe?? There is no java.exe on unix) somewhere else.

2) Another problem is if you put two imcompatable JREs on your machine, it might cause your ObjectInputStream corrupted.

3) For developer‘s machine, j2sdk without another JRE is the best choice.



java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main

 

javachina wrote:
1) Not exactly, java executable is part of one JRE on your path. Unless you put java (.exe?? There is no java.exe on unix) somewhere else.

2) Another problem is if you put two imcompatable JREs on your machine, it might cause your ObjectInputStream corrupted.

3) For developer‘s machine, j2sdk without another JRE is the best choice.



java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=360157

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多