Java的安裝、配置和運行的基本過程及其原理!

1. JDK的安裝(Windows2000/xp)

    從java.sun.com上下載JDK後直接雙擊進行安裝。建議不使用默認安裝路徑c:/prgram files/...,因爲這個太長了,在後面配置PATH等環境變量要麻煩一點。我一般把它安裝到D:/JDK目錄下。

2. 配置

   其實Java的配置主要就是兩個環境變量(PATH,CLASSPATH)的設置,初學者可能因爲對於這兩個環境變量的原理不瞭解,導致初學時走了很多彎路,我在這裏儘可能的從原理上來解釋配置的過程。在介紹兩個環境變量(PATH,CLASSPATH)的設置之前,我們先看一下Java程序的原型過程和原理。

 (1)Java實際上是一種編譯和解釋相結合的一門語言,其源碼(*.java)首先被編譯成字節碼的二進制文件(*.class),我們可以在DOS使用下面的命令完成編譯(假設源文件名爲A.java):

          c:/>javac  A.java

  這個命令如果正確運行的話,會生成一個A.class文件,此時我們使用Java的解釋器來解釋執行這個字節碼文件,命令如下:

        c:/>Java A

    當然,如果我們沒有配置PATH變量之前,上述兩個命令一般是不能正確運行的,你的OS會提示:Javac不是內部命令,也不是外部命令...。這是因爲你的Javac.exe和Javax.exe是在d:/jdk/bin目錄下,而OS無法在你的當前目錄(c:根目錄)下找到這個命令。環境變量PATH就是爲了讓你能在任意路徑下找到你的Javac.exe和Java.exe,所以PATH應該設置到哪兒也就很簡單了——當然是Javac.exe和Java.exe所在的路徑(d:/jdk/bin)。

   在這個命令中c:/>Java A,如果說PATH是爲了你的OS能準確找到Java這個解釋工具的話,那麼CLASSPATH的作用就是引導OS能夠正確的加載你的字節碼文件——類A。說到這裏又要插到JVM的類加載原理了,JVM在首次使用到某個類時,需要將這個類從硬盤加載到內存。我們必須對剛纔所說的話作一下更正:那麼CLASSPATH的作用就是引導OS能夠正確的加載你的字節碼文件.將OS改爲JVM.

      實際上在JDK1.2以後JVM的類加載器(CLASSLOADER)分爲兩部分,一個叫做啓動加載器,負責加載Java的核心API(就是哪些以java.開頭的包),另外一個叫做系統加載器,負責加載非核心類(比如你自己寫的類)。以前 的一些書上的CLASSPATH的配置可能是這樣的CLASSPATH: d:/jdk/lib/dt.jar; d:/jdk/lib/tools.jar,實際上在Jdk1.2以後這些都不用配置了(至少我沒配置,System.out.println()能運行),我想可能是因爲這些包裏的類有啓動加載器加載,而啓動加載器加載類的根路徑不是有CLASSPATH指引,而是有註冊表中的Java_Home鍵(JDK安裝時寫入註冊表的)指引(呵呵,這裏是我猜的,沒找到官方文檔)。那麼我們還要配置我們的CLASSPATH嗎?一般是要的,不要忘了,你自己寫的類仍然是需要CLASSPATH來引導JVM加載。我以前學Java的時候會把寫的源文件放在一個文件夾下,比如d:/src,然後編譯後的class文件放到d:/classes下面。你可以用javac的-d命令參數,比如javac -d d:/classes A.java將類直接編譯到d:/classes 目錄下(實際上JBuilder,Jcreater裏工程樹形中的Output Path就是這個參數),如果你類裏面定義了包的話(比如 package a.b;),就會在d:/classes 生成相應的文件夾(文件夾a及其下面的子文件夾b).這個時候可以將CLASSPATH設置到我的類文件的保存路徑d:/classes ,這樣以後我在DOS下解釋執行的時候就不會出現著名的NoClassDefFoundError了。

 (2)關於包的使用

       剛纔我們說到了假設A.java裏有包的定義:package a.b;正確編譯後會在d:/classes下面生成文件夾和類:a/b/A.class,因爲我們的CLASSPATH只設置到d:/classes,而你的A.class並不存在於d:/classes,所以你運行java A荏苒會出錯,正確的寫法是java a.b.A,,即帶上包名和類名(有的書上說全限定名),只有這樣才能正確運行你的程序。我們不難總結:JVM靠CLASSPATH和類的全限定名二者結合來找到並加載一個類。

    這是我的第一個BLOG, 寫得很亂,希望寫得不是很爛!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章