先來介紹三個概念:
JVM----JAVA virtual machine
java虛擬機:對字節碼提供相同的接口,對操作系統提供不同的接口,以適應各個OS
JRE----JAVA runtime environment
java運行時環境
JDK----java SE Development kit
java 標準版開發包
這是學習java最基礎的三個概念,他們的關系如下
| JDK(開發必備) | -|-----JAVA 類庫 | ||
| |-----JAVA編譯器 | |||
| |-----JRE(運行Java必裝) | -|-----JVM | ||
| |-----類加載器 | -| | ||
| |-----字節碼校驗器 | |---運行java程序的其它環境支持 | ||
| |-----基礎類庫 | _| | ||
如圖,平常跑跑java 程序 安裝對應的JRE即可,如果需要開發 則需要jkd,單純的jvm是沒意義的(官方也沒有對應的下載)
java從代碼到運行:
java源文件(.java 文件)----->java編譯器(使用javac編譯)----->字節碼文件(.class文件)---|
特定平臺的機器碼(OS可以運行的)<--java虛擬機運行(使用java解釋執行)<---|
java編譯器生成的是與各個平臺無關的字節碼,這些字節碼不面向任何的平臺,他們只面向JVM,與此同時不同平臺的JVM都是不同的,但是他們都提供了相同的接口來處理字節碼,于此同時產生不同的接口對應不同的平臺(linux/win)JVM可以說就是一個轉換器。
另外jar包:
我們還會遇到.jar包。 jar (JavaArchiveFile 譯為java 存檔文件)。直白點說就是一個壓縮.class的zip包,但是由于他里邊包含一個文件
META-INF/MANIFEST.MF(生成jar包時就有),使得里邊的.class文件之間具有一定的結構。我們的程序就可以直接引用這些jar包(這里有點像C#中的dll文件),或者直接運行這個jar包
此處要注意
(1).java文件的名字是隨意起的,但是倘若java 文件中有public 類,則.java文件的名字必須與這個類名保持一致,所以最多只能有一個public class。
(2)1、命名時大小寫是敏感的(同時請記住,所有的關鍵字都是小寫)。
2、默認的路徑(jdk默認的路徑)是 PRogram files 中間有空格,最好選擇無空格的路徑(以及不要有中文字符,以免莫名其妙的錯誤)
環境變量:
為什么要設置環境變量呢?
在我們裝好jdk后,如果不設置:在我們敲入java 或者javac命令時會提示:java、javac不是內部或外部命令,也不是可以運行的程序或批處理文件。這是因為:雖然我們已經在計算機上安裝了JDK,而且JDK的路徑下野有java和javac 這兩個命令,但是計算機并不知道去哪里找這兩個命令(換句話說計算機并不知道自己有這兩個功能),所以我們需要設置一個指引(路徑),告訴OS可以去這里看看。
Path:java編譯運行工具的目錄
ClassPath:java調用需要工具類所在的地址
JAVA_Home java安裝目錄的公有名字(就是JDK的安裝目錄)
java的內存回收機制(GC)
這個與C#的大同小異,這里就不多加贅述。只簡單提下
(1)不及時回收內存--->可以用內存的數量空間就會變小--->回收的頻率就會變高--->性能下降
(2)java始終都無法強制回收內存,只能建議jvm回收。
新聞熱點
疑難解答