JVM與JDK

1、平臺無關性

Java屬于目標代碼級平臺無關語言類型,主要靠Java虛擬機JVM來實現。對高級語言的翻譯方式有解釋和編譯兩種,解釋方式就是一邊翻譯一邊運行,而編譯方式則是一次性翻譯好,生成目標程序。移植性涉及目標程序在不同平臺上運行。解決移植性的方法有以下兩種方式:

方式一:到一臺機器上將源程序重新編譯成適合該臺機器的機器代碼,此時的高級語言源程序相當于邏輯程序模型,而編譯出來的目標程序相當于物理模型,邏輯模型可以適合于任何機器,即與機器無關。

方式二:將高級語言源程序編譯成一種與機器無關的中間代碼(如Java語言的字節碼),該中間代碼程序不能被操作系統直接執行,需要由解釋器來解釋和執行,這種方法實際上是編譯和解釋的結合,稱為偽編譯,在每臺機器上安裝解釋程序擴展了這種機器的執行系統,被擴展了指令的機器就可以直接執行以中間代碼形式存在的程序。

Java語言采用方式2,將由解釋程序擴展了的指令系統的機器稱為Java虛擬機,簡稱JVM。

2、JVM(Java Virtual Machine)

虛擬機是一種對計算機物理硬件計算環境的軟件實現。Java虛擬機是一種抽象機器,它附著在附體的操作系統上,本身具有一套虛擬機器指令,并有自己的棧、寄存器等運行Java程序不可少的機制。編譯后的Java程序并不直接在硬件系統CPU上執行,而是在JVM上執行。在JVM上有一個Java解釋器用來解釋Java編譯器編譯后的程序。

JVM由多個組件構成,包括類裝載器(Class Loader)、字節碼解釋器(Bytecode Interpreter)、安全管理器(Security Manager)、垃圾收集器(Garbage Collector)、線程管理(Thread Management)及圖形(Graphics)。


3、JDK(Java Development Kit)

環境變量:也成為系統變量,是由操作系統提供的一種與操作系統中運行的程序進行通信的機制,一般可為運行的程序提供配置信息。常用的Java環境變量包括JAVA_HOME、CLASSPATH和PATH。

JAVA_HOME,為那些需要使用Java命令和JVM的程序提供了通用的路徑信息,其值應設置為JDK的安裝目錄的路徑 。

CLASSPATH,用于指明字節碼文件的位置。當執行Java程序時,執行命令首先把類名轉換為字節碼文件的路徑信息,再在環境變量CLASSPATH值的路徑列表的每個路徑及其子路徑中搜索指定的字節碼文件,如果在所有路徑都找不到該文件,就報告錯誤。環境變量CLASSPATH的值一般為一個以分好“;”作為分隔符的路徑列表。

PATH,是操作系統使用的變量,用于搜索在Shell中輸入的希望執行的命令。為了便于使用,一般可把JDK中Java命令程序所在目錄的路徑加入PATH變量的值中。


附上一篇文章,介紹的很詳細:弄懂JDK、JRE和JVM到底是什么

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 這篇文章是我之前翻閱了不少的書籍以及從網絡上收集的一些資料的整理,因此不免有一些不準確的地方,同時不同JDK版本的...
    高廣超閱讀 15,710評論 3 83
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • MP10:大家晚上好,我是耐心,今天我發現了自己的模式,缺乏自信,辦事猶豫,也可以說是謹小慎微,我可以更好,我愛我...
    心羽暖姐姐閱讀 205評論 0 0
  • 電腦上周就有了要壞的征兆,拷了電腦里重要的資料,撐著用了周五的最后半天,關機,回家。今天一早來,果然開機還沒一小時...
    衣刀三戔閱讀 403評論 0 0