1. 程式人生 > >菜鳥筆記 -- Chapter 3.4 環境變量

菜鳥筆記 -- Chapter 3.4 環境變量

基本 developer 發的 面向對象 和數 中間 公司收購 kit 動態

3.4 Java環境的搭建

工欲善其事必先利其器。在學習Java語言之前,必須了解並搭建好它所需要的開發環境。要編譯和執行Java程序,JDKJava Developers Kits)是必備的。下面將具體認識下JDKJRE,並進行介紹下載安裝JDK和配置環境變量的方法。

3.4.1 Java的跨平臺

Java的跨平臺是指:通過Java語言編寫的應用程序在不同的系統平臺上都可以運行。在這裏我們要對平臺進行一下解讀,在菜鳥筆記 Chapter 1 計算機從0講起中我們知道了OS的出現是為所有的開發提供了一系列的開發接口,所有現在的驅動和高級開發語言都是通過OS提供的接口來實現開發的,而無需再考慮CPU的指令集,所以這裏的平臺指的就是OS,Java編寫的程序可以在不同的OS上運行,我們日常工作中往往是在Windows上開發的,但是部署卻是在Linux上,這就是跨平臺的最好解釋。

原理是:Java編寫的源代碼經過一次編譯後生成符合JVM規範的中間碼,編譯後的字節碼采用一種針對JVM優化過的機器碼形式保存。這個中間碼不管編譯多少次都是一樣的,在需要運行的Java應用程序的平臺上,JVM會將中間碼解釋為能夠被計算機識別的機器碼,所以編譯只進行一次,而解釋卻是在程序每次運行時都需要進行的。如下圖1.6所示。

技術分享圖片

技術分享圖片

1.6 Java的跨平臺性的原理

因為有了JVM,所以同一個Java程序在三個不同的操作系統中都可以執行。這樣就實現了Java程序的跨平臺性。也稱為Java具有良好的可移植性。

Java語言是跨平臺的,而JVM不是跨平臺的。

3.4.2 JDK

jdk Java 語言的軟件開發工具包是提供給Java開發人員使用的,其中包含了java的開發工具,也包括了JRE。所以安裝了JDK,就不用在單獨安裝JRE了。JDK包含的基本組件包括:

  • javac – 編譯器,將源程序轉成字節碼
  • jar – 打包工具,將相關的類文件打包成一個文件
  • javadoc – 文檔生成器,從源碼註釋中提取文檔
  • jdb – debugger,查錯工具
  • java – 運行編譯後的java程序(.class後綴的)
  • appletviewer:小程序瀏覽器,一種執行HTML文件上的Java小程序的
    Java瀏覽器。
  • Javah:產生可以調用Java過程的C過程,或建立能被Java程序調用的C過程的頭文件。
  • JavapJava反匯編器,顯示編譯類文件中的可訪問功能和數據,同時顯示字節代碼含義。
  • Jconsole: Java進行系統調試和監控的工具

為什麽JDK中包含一個JRE呢?

其一,開發完的程序,總需要運行一下看看效果。

其二,也是最重要的,JDK中的開發工具其實都是java語言編寫的應用程序,為了方便使用才打包成exe文件,如果沒有JRE,那麽這些工具是運行不了的。

3.4.3 JRE

JREJava Runtime EnvironmentJava運行環境),運行JAVA程序所必須的環境的集合,包含JVM標準實現及Java核心類庫。如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可。

簡單而言:使用JDK開發完成的java程序,交給JRE去運行。

3.4.4 JDK下載

JavaJDK又稱Java SE(以前稱J2SE),是Sun公司的產品,由於Sun公司已經被Oracle公司收購,因此JDK可以在Oracle公司的官方網站http://www.oracle.com/index.html下載。

Java 6 出版之後,J2SEJ2EEJ2ME正式更名,將名字中的2去掉,分別更改為Java SEJava EEJava ME

下面以JDK 最新版本為例介紹下載安裝JDK的方法,具體步驟如下:

n 打開IE瀏覽器,輸入網址“http://www.oracle.com/index.html”,瀏覽Oracle官網,將光標移動當Downloads菜單項上,將顯示下載列表下拉菜單,單擊Java for Developers 超鏈接,如圖1.7所示。

技術分享圖片

1.7 Oracle主頁

n 將跳轉到JDK的下載頁面,在該頁面中單擊最新版本JDK的超鏈接,即如圖1.8所示的Download按鈕。

技術分享圖片

1.8 JDK的下載頁

n 在進入的新頁面中,需要先選中同意協議中的單選按鈕,這時將顯示如圖1.9所示的頁面,否則單擊要下載的鏈接時不能進行下載。

技術分享圖片

1.9 JDK最新版本的下載頁面

下載時要選擇適合自己操作系統平臺的的安裝文件,如Windows系統平臺是無法安裝Linux系統平臺的安裝文件的。如果我們需要一些舊版本的JDK則可以在進入JDK的下載鏈接頁面後選擇舊版本下載,單擊進入歷史頁面,我們以JDK 7 為例如圖1.10所示。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

圖1.10 歷史版本的JDK下載

3.4.5 Windows系統的JDK環境

3.4.5.1 JDK的安裝

我們以下載的JDK 7為例進行安裝介紹,步驟如下:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

JavaFX是由甲骨文宣布推出的,是一款為企業業務應用提供的先進Java用戶界面(UI)平臺,它能幫助開發人員無縫的實現與本地java功能及Web技術動態能力的混合與匹配。

3.4.5.2 配置JDK

在安裝完JDK後需要對環境變量進行配置,具體步驟如下所示。

3.4.5.2.1 path環境變量配置的作用
  • 程序的執行需要使用外部指令javac,但是javac指令僅僅能在JDK安裝目錄下的bin目錄下時候,因此程序只能寫入bin目錄
  • 程序開發過程中,不能將源代碼寫入JDK的安裝目錄,因此需要將源程序保存到任意位置的指定目錄(英文目錄),所以需要使javac指令在任意目錄下可以運行
3.4.5.2.2 path環境變量配置方式
  • 通過配置path環境變量,將javac指令所在目錄也就是JDK安裝目錄下的bin目錄配置到path變量下,即可使javac指令在任意目錄下運行
  • win7,win8系統:右鍵點擊桌面計算機→選擇屬性→選擇高級系統設置→選擇高級選 項卡→點擊環境變量→下方系統變量中查找path→雙擊path
  • XP系統:右鍵點擊桌面計算機→選擇屬性→選擇高級選項卡→點擊環境變量→下方系統變量中查找path→雙擊pathjdk安裝目錄下的bin目錄添加到最左邊並添加分號

技術分享圖片

  • path環境變量的參照形配置方式

創建新的變量名稱:JAVA_HOME,為JAVA_HOME添加變量值:JDK安裝目錄,將path環境變量中JDK目錄修改,%JAVA_HOME%\bin;path環境變量具有先後順序

技術分享圖片

我們配置成功後發現javacjava可以到處運行

技術分享圖片

3.4.5.2.3 classpath環境變量配置方式

我們配置成功path環境變量後發現javajavac可以到處運行,那麽此時我們已不必將源代碼放入bin目錄下了,但是我們遇到這麽一個問題就是,源文件中引用的工具類找不到此時該怎麽辦呢?其實這是因為Java是一種面向對象的編程語言,提供了很多開發工具類,我們在自己的代碼中引用了這些類,那麽是不是該告訴編譯器去哪了找這些工具類了,配置CLASSPATH的目的就在於此,指定尋找.class的路徑

技術分享圖片

CLASSPATH_8_64=.;D:\Java\JDK\JDK-1.8-64\lib;D:\Java\JDK\JDK-1.8-64\lib\tools.jar

作用:使classpath目錄中的.class文件可以在任意目錄運行

  • 技巧:通常將配置的目錄最前面添加.配置,即便當前目錄,使.class文件搜索時首先搜索當前目錄,然後根據目錄配置的順序依次查找,找到後即運行,因此classpath目錄中的配置存在先後順序

小知識:rt.jarJAVA基礎類庫,dt.jar是關於運行環境的類庫,tools.jar是工具類庫

1.rt.jar 默認就在 根classloader的加載路徑裏面 放在claspath是多此一舉

不信你可以去掉classpath裏面的rt.jar

然後用 java -verbose XXXX 的方式運行一個簡單的類 就知道 JVM的系統根Loader的路徑裏面

不光rt.jar jre\lib下面的大部分jar 都在這個路徑裏

2.tools.jar 是系統用來編譯一個類的時候用到的 也就是javac的時候用到,實際上tools中放置的是Java提供的一些開發工具類

技術分享圖片

javac XXX.java

實際上就是運行

java -calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

javac就是對上面命令的封裝 所以tools.jar 也不用加到classpath裏面

3.dt.jar是關於運行環境的類庫,主要是swing的包你要用到swing時最好加上

jdk1.5版本之前必須配置classpath,jvm虛擬機才能找到.class文件,1.5版本以後jvm虛擬機會默認在當前目錄去找.class文件,所以我們現在的1.7版本可以不配置classpath,因為沒有意義,但建議配置,考慮向下兼容的問題。

3.4.5.2.4 pathclasspath的區別

path環境變量裏面記錄的是可執行性文件,如.exe文件,對可執行文件先在當前路徑去找,如果沒找到就去path環境變量中配置的路徑去找

classpath環境變量裏記錄的是java類的運行文件所在的目錄

3.4.5.2.5 我為什麽要配置環境變量

  在初學Java的時候知道要配置環境變量,可是當回過頭來整理筆記準備深層次學習的時候再次面對環境變量卻問了自己一個問題:“我為什麽要配置環境變量呢?”。

  我們在未配置JDK環境變量的時候,如果想要在DOS下運行javac,那麽就必須進入到jdk的bin目錄下,然後才能執行編譯,那麽我們配置JDK的目的也就在於解決這個問題,環境變量配置後,然後執行javac,系統會通過path取尋找javac,如果我們不配置,那麽是無法尋找到的,配置後系統可以很輕易尋找到javac,然後就在我們的源碼下可以編譯和執行我們所寫的Java代碼了。

我們知道Java是一種面向對象的高級編程語言,說白了,就是我們編程時是可以將一些已經寫好的工具類當做對象來使用的,通過對象來幫助我們簡略開發,就如同字符串的截取等,我們不用自己去寫只要調用String的相應方法既可,可我們通過一些非IDE編寫的代碼,是沒有包導入的,此時就用到了ClassPath,它告訴編譯器到哪裏找需要執行的.class文件。在這裏我們要把.java和.class的路徑區別開。

(1).何時需要使用-classpath:當你要編譯或執行的類引用了其它的類,但被引用類的.class文件不在當前目錄下時,就需要通過-classpath來引入類
(2).何時需要指定路徑:當你要編譯的類所在的目錄和你執行javac命令的目錄不是同一個目錄時,就需要指定源文件的路徑(CLASSPATH是用來指定.class路徑的,不是用來指定.java文件的路徑的)

菜鳥筆記 -- Chapter 3.4 環境變量