基礎知識 JVM JRE JDK

2022-09-17 02:45:17 字數 1646 閱讀 5668

引言我們如果要用j**a編寫程式的話就必須安裝jdk,那麼jdk是什麼,另外安裝jdk的同時,會提示使用者需要安裝jre,一般這兩個就像孿生兄弟一樣,裝了jdk之後,如果我們進入到安裝路徑下,會發現除了jdk外,還有乙個資料夾jre,那麼什麼又是jre,最後都說j**a是跨平台語言,因為它的**是執行在乙個叫做j**a虛擬機器上的,那麼什麼又是j**a虛擬機器呢,本文大致說明一下這三者的區別,關於j**a虛擬機器如果想深入了解,建議閱讀《深入理解j**a虛擬機器》這本書,個人認為這本書寫得很棒

說明 jdk

首先jdk是j**a development kit的縮寫,也就是j**a開發工具箱的意思,它包含了各種庫和類,比如如下圖所示,當然也包括了jre

另外多說一句,經常用到的用來編譯j**a檔案的j**ac命令就是在jdk中的,利用jdk中的j**ac將.j**a檔案編譯成.class檔案,然後再裝入到j**a虛擬機器中,由j**a執行環境執行,而執行j**a程式是由其中的j**a命令執行的

另外再多說一句,如果類指定了包名,那麼編譯的時候要加上-d選項,比如在當前目錄下生成與包名相對應的目錄層次的編譯示例如下:

j**ac -d . helloworld.j**a

jre

接下來是jre,j**a runtime environment,j**a執行環境,既然是j**a執行環境,就是說這是j**a程式執行必備的環境,由於j**a程式是在j**a虛擬機器上執行的,所以必然jre是包含jvm的,我們看看jre資料夾下有些什麼,提供了很多bin和lib

bin中是很多應用程式,包括動態鏈結庫以及window程式

除此之外jre還包括了j**a api

jvm

接下來我們來簡單說說jvm,jvm包括:jvm直譯器,指令系統,暫存器,棧,儲存區,碎片**區

jvm直譯器:相當於cpu,處理位元組碼

指令系統:與計算機相似,一條指令由操作碼和運算元兩部分組成,操作碼是8位二進位制數,主要是說明一條指令的功能,運算元視情況而定

暫存器:作用是可以快速的與jvm的直譯器進行資料交換,4個32位暫存器:pc程式計數器,optop暫存器運算元棧頂指標,frame暫存器指向當前執行環境指標和vars暫存器指向當前執行環境中第一區域性變數的指標

棧:指令執行時資料和資訊儲存的場所和控制中心

儲存區:儲存編譯後的位元組碼

關於j**a虛擬機器如果想深入了解,強烈建議閱讀《深入理解j**a虛擬機器》這本書

classpath

這個變數很重要,但是很多時候我們都忽視它,尤其是在我們用eclipse等整合開發環境的時候,classpath環境變數是在編譯j**a原始碼和執行程式的時候用到的,它是j**a程式所依賴的介面、類等的乙個搜尋路徑,比如以下乙個例項指定了是三個搜尋路徑,乙個是當前路徑,乙個是乙個特定的檔案,乙個是乙個資料夾下的所有檔案

.;c:\jar\logj4.jar;d:\work\j**a

另外多說一句,j**a在編譯和執行程式時不僅在classpath中去搜尋,還會去找jre/lib/rt.jar檔案,而且是比classpath更先找,這個在雙親委派模型中說道,是因為要去載入其中的最基礎的一些類,具體可以去看深入理解j**a虛擬機器這本書的相關部分

另外再編譯和執行時指定classpath的命令如下

C 基礎知識整理 基礎知識(2) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...

C 基礎知識整理 基礎知識(2) 類

類,是物件導向語言的基礎。類的三大特性 封裝 繼承 多型。最基本的特性就是封裝性。程式設計師用程式描述世界,將世界的所有事物都看成物件,怎麼描述這個物件?那就是類了。也就是用類來封裝物件。用書上的話說,類是具有相同屬性和行為的物件的抽象。寶馬汽車 別克汽車 五菱之光汽車.基本具有相同的屬性和行為,所...

電腦的基礎知識 電腦的基礎知識

電腦的組成部分與其作用 一 軟體系統 軟體系統的組成分別是 作業系統 應用軟體等。其應用軟體是指特定領域開發 並為特定目的服務的一類軟體。而作業系統是位於底層硬碟與使用者之間溝通的橋梁。使用者可以通過作業系統的使用者頁面,輸入命令,實現使用者需求。二 硬體系統 硬體系統是指構成計算機的物理裝置,即由...