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到底是什么