基礎知識總結之 jdk部分
第一次安裝jdk 按照操作走完 會出現 C:\Program Files\Java\jdk1.8.0_91 和 C:\Program Files\Java\jre1.8.0_91 兩個目錄 (平級目錄) 這裏jre和jdk中的jre目錄一模一樣,為什麽會出現這種呢?
簡單說下:jdk是面向java開發者的 是java開發的sdk,jdk目錄下的bin目錄最主要的是javac 編譯來使用,lib中有dt.jar,tools.jar主要是編譯過程中運行環境使用,jdk下的jre目錄,主要作用是運行編譯好的class文件來使用的,其中,jre下的lib中的rt.jar是所有基礎類庫,就是java文件中import後面的class基礎類,bin目錄下主要的是java,也就是JVM,java虛擬機用來運行class來使用,運行class的時候就會調用引用的基礎類庫.
C:\Program Files\Java\jre1.8.0_91是面向用戶的,主要作用和jdk中jre作用一樣。在eclipse中只需要選擇jre 就可以運行java程序,因為eclispe有自己的java編譯器,和classpath的配置。
編譯好的class文件是字節碼文件,字節碼文件是二進制的類庫文件,經過JVM的解釋運行,成為機器碼文件和OS交互運行。
在eclispe中開發,不需要配置path classpath ,只需要制定jre,整個編譯 由eclipse自己的編譯器來實現(JAVA文件稱class文件).
不考慮eclispe的java開發如下:
配置path : ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 目的是可以在任意地方使用javac java 比較簡單,不然要輸入整個javac java指令路徑.
配置classpath: ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 指定classpath類加載路徑為 jdk下面的lib路徑,tools.jar是編譯時候來使用的.
註意:JVM的默認class load路徑是jre下面的rt.jar (默認就可以加載所有的基礎類庫,不需要設置).
編譯 java文件:
1》該java文件沒有引用其他外部類的時候: javac xxx.java 默認是在當前目錄查找 java文件,當前目錄沒有則報錯,也可以采用全路徑來指定java文件。編譯的時候會自動使用classpath下的tools.jar 以及jre/lib/rt.jar來 編譯java文件。註意:java文件在classpath下 ,當前目錄不在classpath,也會報錯.
2>java文件引用其他外部類: 也會在當前目錄查找java文件,沒有則報錯,也可以采用全路徑來指定java文件。首先會編譯外部類,註意:
2.1》如果外部java文件或者該文件對應的class文件存在於classpath中,則成功編譯。
2.2》如果外部java文件不在classpath或者java文件的同級目錄下。使用 javac -classpath 外部java文件或者class的目錄 xxx.java來編譯。
運行class文件: 先查找當前目錄 在查找classpath。 java xxx 其中xxx.class在當前目錄或者classpath中都成功,如果引用類存在 保證引用class存在於classpath中成功,或者使用 java -classpath .;外部類目錄 xxx即可。
基礎知識總結之 jdk部分