(一)JDK簡介
JDK Java SE Development kit(JDK) java開發工具包
JDK全稱Java SE Development kit(JDK),即java標準版開發包,是Oracle提供的一套用於開發java應用程序的開發包,它提供編譯,運行java程序所需要的各種工具和資源,包括java編譯器,java運行時環境,以及常用的java類庫等。
JRE Java Runtime Environment(JRE) Java運行環境
Java運行環境,它的全稱Java Runtime Environment(JRE) ,因此也被稱爲JRE,它是運行java的必需條件。
JVM Java Virtual Machine
Java虛擬機,JRE包含JVM。JVM是運行java程序的核心虛擬機,還需要其他的類加載器,字節碼校驗器,以及大量的基礎類庫。JRM除了包含JVM之外,還包含運行java程序的其它環境支持。
(二) JDK下載
java JDK11
JDK下載首頁
https://www.oracle.com/technetwork/java/javase/downloads/index.html
官網下載頁面
Oracle 把java分爲javaSE 、java EE 和java ME三部分,而且分別爲java SE 和javaEE 提供了JDK和java EE SDK(Soft Development kit) 兩個開發包。當然我們看這裏還有:
java ME sdk
java 嵌入式設備開發工具
java 智能卡開發工具
java 電視開發工具
JDK 8 下載頁面:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(三)安裝JDK 配置環境變量
1 配置系統變量和用戶變量
點擊計算機——>屬性—>高級系統設置-——>高級-->環境變量:
設置Path和java_home
2 用戶變量和系統變量的區別
系統環境變量。對全部用戶起作用,而用戶環境變量僅僅對當前用戶起作用。爲了減少自己所做的修改對其它人的影響,故設置了系用戶變量避免影響其它人。對於現在的配置而言,設置用戶變量和系統變量的效果大致相同,只是系統變量的路徑排在用戶變量的路徑之前。如果系統變量path裏面包含java命令,用戶變量Path裏面也包含java命令,則他會優先執行系統變量path路徑裏面包含的java命令。
(四)測試java javac
java
java -version
javac
javac –version
爲什麼會有java和javac呢,java語言比較特殊,由java語言編寫的程序需要經過編譯步驟,但是這個編譯步驟並不會生產特定平臺的機器碼,而是生產一種與平臺無關的字節碼(也就是.class文件)。當然這種字節碼不是可執行的,必須使用java解釋器來執行。因此可以認爲java語言即使編譯型也是解釋型語言。java執行的過程必須經過先編輯,後解釋的兩個步驟。
java語言裏負責解釋執行字節碼文件的是java虛擬機,即JVM。JVM是運行java字節碼文件的虛擬計算機。所有平臺的JVM向編譯器提供相同的接口,而編譯器只需要面向虛擬機,生產虛擬機能理解的代碼,然後由虛擬機來解釋。我們僅僅需要在不同的操作系統中安裝不同的JVM,就可以將編寫一次代碼生產的class文件,在不同的操作系統中進行執行了。這是java程序的跨平臺型。
(五)JDK目錄
bin:該目錄下存放JDK的各種工具命令,常用的java,javac的命令就放在該路徑下。jlink以及jar也在這個目錄下。
conf:該路徑下存放了jdk的相關配置文件。
include:存放了一些平臺特定的頭文件。
jmods:該目錄下存放了JDK的各種模塊。
legal:該目錄下包括可JDK各模塊的授權文檔。
lib:該路徑下存放的是JDK工具的一些補充jar包。比如src.zip文件保存了java的源代碼。
README和COPYRIGHT等文檔上說明。
模塊化系統是java9的重大更新,隨之java語言的功能越來越強大,java語言也越來越龐大,很多時候,一個基於java的軟件並不會用到java的全部功能,因此該軟件也不會加載java的全部功能,而模塊化系統則允許發佈java軟件系統時根據需要僅僅加載必要的模塊。
爲此,java專門引入了一種新的jmod格式,他近似於jar格式,單jmod格式更加強大,它可以包含本地代碼和配置文件。該目錄包含了jdk的各種模塊的JMOD文件,比如使用WinRAR打開java.base.jmod文件。
java.base.jmod是JDK的最基礎模塊,該模塊包含了java的lang,util,math等模塊,這些都是java的最基礎的功能,是其它所有模塊的基礎。