1. 程式人生 > >基礎知識總結之 jdk部分

基礎知識總結之 jdk部分

比較 java_home 二進制 一模一樣 出現 path 解釋 字節碼 編譯

第一次安裝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部分