Java补漏(一)
第一章前言
????????在學長的建議下,為了彌補之前學Java漏下的或者不是非常清楚的知識點,買了本蠻好的教科書-《Java學習筆記(JDK6)》,正式又一次學習。為了記下一些讓我恍然大悟的知識。寫了本文檔。
第二章Java入門
2.1 JVM的認識
????????說究竟Java是一種計算機高級語言,一般高級語言假設須要在操作系統上執行,那么它必須編譯成機器語言。比方C語言,它的編譯過程就是從C語言到匯編語言到機器語言。而Java的奇妙之處在于Java的編譯沒有直接變成機器語言,而是一種中間語言,那么中間語言要在機器上執行就必須一個轉換環境,這就是Java虛擬機即JVM扮演的角色。
這樣做不是非常麻煩嗎?為什么不直接編譯成機器語言,而是變成中間語言?這樣做不是提高了Java開發的成本嗎,還要安裝一個虛擬機?
????????的確,C語言的開發在一些系統中甚至不須要下載編譯器,比方Linux系統下的C語言僅僅須要寫一個.c文本文件,然后在終端上直接輸入gcc xxx.c指令就可以編譯成功。
????????可是這樣做的優點在于,通過建立不同操作系統下的JVM版本號。能夠使得Java編譯后的中間語言通過不同系統版本號的JVM直接執行。也就是說我們不須要在編譯同一個Java程序多次。一次編譯成功的.class中間語言文件就可以在多個平臺上執行。
而你在windows系統下c語言編譯得到的.exe文件卻不能在linux系統下執行。你須要將原來的c語言源碼拿來,在linux系統下再編譯一次。
????細致想想,這有點像司馬光砸缸的故事。是讓人離開水還是水離開人?是又一次編譯多次還是下載安裝一次虛擬機?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2.2 JDK和JRE的差別
????????JRE全稱JavaRuntime Environment,即Java執行環境,它是JVM的詳細實現。當你下載好JDK的時候,你會發現名為jre的一個文件夾。打開后是這樣一個文件夾。
圖2.1 jre文件夾文件夾
????????bin目錄中是一些可運行文件,lib目錄中是運行class文件所需的類庫。
????????JDK。全名JavaDevelopment Kit,即Java開發包。它本身自帶一個jre,主要用來開發測試之用。這個jre與公共jre的差別在于有沒有server選項。
????????
圖2.2 jdk文件文件夾
2.3 JDK環境配置中的path系統變量和classpath系統變量
????????曾經配置環境的時候一直沒理解path變量和classpath變量的作用。蹭這個機會好好理解一遍。
2.3.1 Path變量
????????Path變量是用來在cmd上加入指令的
????????比方說如今你有一個英雄聯盟的游戲,你希望在cmd上直接打開,這時候你能夠在Path變量中加入英雄聯盟游戲exe可運行文件所在文件夾地址
圖2.4 Client.exe雙擊便開始游戲
圖2.5將Client所在文件夾地址加入到Path變量中
?
圖2.6在cmd上輸入Client指令
?
圖2.7輸入發現游戲啟動了
?
從上面的步驟能夠看出Path變量的作用。
配置Jdk環境時在Path系統變量中加入Jdk目錄下的bin目錄的地址的目的就是為了讓操作系統找到指定的工具程序(以windows來講就是找到.exe文件)。
2.3.2 Classpath變量
????????設置Classpath的目的是讓Java運行環境找到指定的Java程序,即.class文件。
在配置Java環境的時候,這個變量設置為jdk/lib目錄中的tools.jar和rt.jar文件的絕對地址。
jar文件里事實上是一堆的.class文件,用壓縮文件管理器打開tools.jar和rt.jar。能夠看到一堆的.class文件。
圖2.8 tools.jar文件解壓后文件夾
?
jar格式壓縮文件Java執行環境是能夠直接執行的。執行是尋找當中的主方法。
如果你有一個.class文件在桌面上,而你把桌面文件夾的地址加入到了Classpath變量中。那么會發生什么呢?
圖2.9在Classpath中加入一個地址
圖2.10在cmd上使用Java指令直接執行Test.class文件
?
????????發現假設在Classpath中設置了一個文件夾地址?;蛘咭粋€jar文件的地址,那么該文件夾中或者該jar文件里的class文件是能夠直接執行的。
轉載于:https://www.cnblogs.com/cxchanpin/p/6783250.html
總結
- 上一篇: 团扇的寓意和象征(一把小小的团扇隐藏了哪
- 下一篇: 算法笔记_163:算法提高 最大乘积(J